许多新的分析应用需要更强大的算法,及比hadoop或关系数据库更强大的计算方法。数据科学家越来越需要以新颖的方式来利用其所在企业所有的数据源,并使用相关的分析工具和基础架构来完成某些任务了。
从我们针对于相关数据科学家们的调研中,我们发现企业正日益从简单的SQL聚合和汇总统计过度到下一代的更为复杂的分析。这包括机器学习,聚类分析,相关分析和主成分分析。
Hadoop缺失标记
Hadoop非常适合于简单的并行的问题,但其对于大型复杂的分析却是不够的。越来越多的复杂的分析案例已然充分证明,复杂分析中仅仅采用 Hadoop是行不通的。这些例子包括基于数以百万计的客户和产品的推荐引擎,需要运行大量的基因序列数据,研究数据之间的相关性,并运用强大的降噪算法 在传感器和图像数据中发现有用信息的巨阵列。
目前,第一波Hadoop技术的采用者像谷歌,Facebook,LinkedIn都需要有一个小的开发者团队来编写和维护Hadoop。但是 更多的企业要么不具备采用Hadoop和MapReduce编程所需的资源和内部经验;要么就是他们所面对的复杂的分析案例不能简单的通过采用 Hadoop就能解决。因为Hadoop不支持SQL,也就不可能为数据科学家们加入其他管理和操纵数据所需的重要的功能。
解决重大缺陷
Hadoop的供应商们也已然认识到了这一局限性。他们正在将他们的产品中加入SQL功能,以支持数据科学家们所偏爱的在低级别的编程语言如Java中进行高级查询语言,并解决了MapReduce的局限性。
例如,Cloudera就抛弃了MapReduce并提供Impala以在Hadoop分布式文件系统(HDFS)提供SQL支持。其他的供应 商也纷纷在其Hadoop解决方案中加入SQL支持来解决Hadoop的重大缺陷。虽然这些方法可以更容易的实现编程,但他们也有其局限性,因为其是运行 在一个文件系统上的,而不是数据库管理系统上。最后,他们不具备某些应用程序所需的原子性,一致性,隔离性和持久性(ACID)的能力。他们是缓慢的。
不局限于SQL功能,而是充分利用技能集
除了缺乏支持SQL的功能,Hadoop不能有效地利用数据科学家的技能集。在一个Hadoop环境,用户通常使用MapReduce Java作为主要编程语言。但数据科学家往往偏向于更强大和更熟悉的高级语言如R和Python来工作。
这样,存储在Hadoop的数据倾向于导出到数据科学家的首选的分析环境,注入时间密集型,低价值的数据到分析流程。将数据迁移出Hadoop 来进行分析,汇总和聚集,然后将结果返回到Hadoop破坏数据源,使得科学家们能够无缝的进行数据探索,并分析数据在整个频谱的细粒度和聚合。
基于Hadoop的战略反思
许多企业被吸引到采用Hadoop,因为Hadoop分布式文件系统实现了针对广泛的数据类型的低成本的存储策略,而无需预先定义表格模式或确定数据最终会被用来做什么。虽然这很方便,但这对于存储和分析结构化数据的庞大数据集而言则是非常低效的方式。
从简单的方法转到复杂的大数据分析提醒我们关于超越了单一服务器内存限制,适当处理稀疏,缺失值和混合采样频率的新兴规模分析需求的兴起。这些 复杂的分析方法也可以为数据科学家提供无需监督和假设的方法,让所有数据说话。存储和分析解决方案,充分利用固有的数据结构,能够显著产生比Hadoop 更好的性能。
虽然Hadoop是一款非常有用且普遍采用的技术,它不是万能的。Hadoop和MapReduce的环境中需要大量的开发资源,同时无法利用流行的高级语言,如数据科学家所偏爱的R和Python。
对于交互式数据探索而言太慢,且不适用于复杂的分析,Hadoop迫使数据科学家们将数据从Hadoop分布式文件系统迁到分析环境,这无疑是 一项耗时且低价值的工作。数据科学家们越来越开始转向采用复杂分析来帮助他们解决最困难的问题,而企业也正在重新反思其基于Hadoop的策略。