vlambda博客
学习文章列表

【行业动态】Hadoop十年解读与发展预测(技术篇)


【行业动态】Hadoop十年解读与发展预测(技术篇)


  Hadoop于2006年1月28日诞生,至今已有10年,它改变了企业对数据的存储、处理和分析的过程,加速了大数据的发展,形成了自己的极其火爆的技术生态圈,并受到非常广泛的应用。


  十年前还没有Hadoop,几年前国内IT圈里还不知道什么是Hadoop,而现在几乎所有大型企业的IT系统中有已经有了Hadoop的集群在运行了各式各样的任务。


  2006年项目成立的一开始,“Hadoop”这个单词只代表了两个组件——HDFS和MapReduce。到现在的10个年头,这个单词代表的是“核心”(即Core Hadoop项目)以及与之相关的一个不断成长的生态系统。这个和Linux非常类似,都是由一个核心和一个生态系统组成。


  现在Hadoop在一月发布了2.7.2的稳定版, 已经从传统的Hadoop三驾马车HDFS,MapReduce和HBase社区发展为60多个相关组件组成的庞大生态,其中包含在各大发行版中的组件就有25个以上,包括数据存储、执行引擎、编程和数据访问框架等。


Hadoop在2.0将资源管理从MapReduce中独立出来变成通用框架后,就从1.0的三层结构演变为了现在的四层架构:

  1. 底层——存储层,文件系统HDFS

  2. 中间层——资源及数据管理层,YARN以及Sentry等

  3. 上层——MapReduce、Impala、Spark等计算引擎

  4. 顶层——基于MapReduce、Spark等计算引擎的高级封装及工具,如Hive、Pig、Mahout等等

【行业动态】Hadoop十年解读与发展预测(技术篇)


  我们欣慰地看到开源文化为Hadoop社区和生态带来的蓬蓬发展,但又确实存在一些碎片化和重复化现象。复杂的生态和过多的组件几乎让很多企业仍然等待一个像以前IBM一样的巨头厂商能提供标准化的解决方案。不过随着围绕Hadoop和Spark的生态圈日益稳固,核心会变得稳定得多。


储存层

        HDFS已经成为了大数据磁盘存储的事实标准,用于海量日志类大文件的在线存储。经过这些年的发展,HDFS的架构和功能基本固化,像HA、异构存储、本地数据短路访问等重要特性已经实现,在 路线图中除了Erasure Code已经没什么让人兴奋的feature。

        随着HDFS越来越稳定,社区的活跃度页越来越低,同时HDFS的使用场景也变得成熟和固定,而上层会有越来越多的文件格式封装:列式存储的文件格式,如Parquent,很好的解决了现有BI类数据分析场景;以后还会出现新的存储格式来适应更多的应用场景,如数组存储来服务机器学习类应用等。未来HDFS会继续扩展对于新兴存储介质和服务器架构的支持。

         随着数据量的增大,跨机房部署相信也终会在基线版本中实现。基于HDFS的存储机制,将HBase作为存储层似乎有点牵强:其底层使用HDFS作为文件存储。不过在逻辑角度,还是倾向与将HBase定位为存储层或数据访问层,因为其提供了另外一种场景的数据存储和访问方案。2015年HBase 发布了1.0版本,这也代表着 HBase 走向了稳定。最新HBase新增特性包括:更加清晰的接口定义,多Region 副本以支持高可用读,Family粒度的Flush以及RPC读写队列分离等。未来HBase不会再添加大的新功能,而将会更多的在稳定性和性能方面进化,尤其是大内存支持、内存GC效率等。

        Kudu是Cloudera在2015年10月才对外公布的新的分布式存储架构,与HDFS完全独立。其实现参考了2012年Google发表的Spanner论文。鉴于Spanner在Google 内部的巨大成功,Kudu被誉为下一代分析平台的重要组成,用于处理快速数据的查询和分析,填补HDFS和HBase之间的空白。其出现将进一步把Hadoop市场向传统数据仓库市场靠拢。

        另一方面,分布式内存文件系统也在兴起,旨在消除不同任务或不同计算框架间的数据共享时的转化代价,并提供内存缓存以提高热数据处理性能。这一市场以前使用第三方Redis或Memcached,到后来能为分析提供更多原生支持的Tachyon或Ignite,而现在又迎来了新贵Arrow。

        Apache Arrow项目为列式内存存储的处理和交互提供了规范。目前来自Apache Hadoop社区的开发者们致力于将它制定为大数据系统项目的事实性标准。


      Arrow项目受到了Cloudera、Databricks等多个大数据巨头公司支持,很多committer同时也是其他明星大数据项目(如HBase、Spark、Kudu等)的核心开发人员。再考虑到Tachyon等似乎还没有找到太多实际接地气的应用场景,Arrow的高调出场可能会成为未来新的内存分析文件接口标准。

管控层

        管控又分为数据管控和资源管控。

        随着Hadoop集群规模的增大以及对外服务的扩展,如何有效可靠的共享利用资源是管控层需要解决的问题。脱胎于MapReduce1.0的YARN成为了Hadoop 2.0通用资源管理平台。由于占据了Hadoop的地利,业界对其在资源管理领域未来的前景非常看好。传统其他资源管理框架如Mesos,还有现在兴起的Docker等都会对YARN未来的发展产生影响。如何提高YARN性能、如何与容器技术深度融合,如何更好的适应短任务的调度,如何更完整的多租户支持、如何细粒度的资源管控等都是企业实际生产中迫在眉睫的需求,需要YARN解决。要让Hadoop走得更远,未来YARN需要做的工作还很多。

        另一方面大数据的安全和隐私越来越多的受到关注。Hadoop依靠且仅依靠Kerberos来实现安全机制,但每一个组件都将进行自己的验证和授权策略。开源社区似乎从来不真正关心安全问题,如果不使用来自Hortonworks的Ranger或来自Cloudera 的Sentry这样的组件,那么大数据平台基本上谈不上安全可靠。

        Cloudera刚推出的RecordService组件使得Sentry在安全竞赛中拔得先机。RecordService不仅提供了跨所有组件一致的安全颗粒度,而且提供了基于Record的底层抽象(有点像Spring,代替了原来Kite SDK的作用),让上层的应用和下层存储解耦合的同时、提供了跨组件的可复用数据模型。

计算引擎层

       Hadoop生态和其他生态最大的不同之一就是“单一平台多种应用”的理念了。传的数据库底层只有一个引擎,只处理关系型应用,所以是“单一平台单一应用”;而NoSQL市场有上百个NoSQL软件,每一个都针对不同的应用场景且完全独立,因此是“多平台多应用”的模式。而Hadoop在底层共用一份HDFS存储,上层有很多个组件分别服务多种应用场景,如:

  • 确定性数据分析:主要是简单的数据统计任务,例如OLAP,关注快速响应,实现组件有Impala等;

  • 探索性数据分析:主要是信息关联性发现任务,例如搜索,关注非结构化全量信息收集,实现组件有Search等;

  • 预测性数据分析:主要是机器学习类任务,例如逻辑回归等,关注计算模型的先进性和计算能力,实现组件有Spark、MapReduce等;

  • 数据处理及转化:主要是ETL类任务,例如数据管道等,关注IO吞吐率和可靠性,实现组件有MapReduce等

        其中,最耀眼的就是Spark了。IBM宣布培养100万名Spark开发人员,Cloudera在One Platform倡议中宣布支持Spark为Hadoop的缺省通用任务执行引擎,加上Hortonworks全力支持Spark,我们相信Spark将会是未来大数据分析的核心。

        虽然Spark很快,但现在在生产环境中仍然不尽人意,无论扩展性、稳定性、管理性等方面都需要进一步增强。同时,Spark在流处理领域能力有限,如果要实现亚秒级或大容量的数据获取或处理需要其他流处理产品。Cloudera宣布旨在让Spark流数据技术适用于80%的使用场合,就考虑到了这一缺陷。我们确实看到实时分析(而非简单数据过滤或分发)场景中,很多以前使用S4或Storm等流式处理引擎的实现已经逐渐Kafka+Spark Streaming代替。

        Spark的流行将逐渐让MapReduce、Tez走进博物馆。

服务层

        服务层是包装底层引擎的编程API细节,对业务人员提供更高抽象的访问模型,如Pig、Hive等。

        而其中最炙手可热的就是OLAP的SQL市场了。现在,Spark有70%的访问量来自于SparkSQL!SQL on Hadoop到底哪家强?Hive、Facebook的Pheonix、Presto、SparkSQL、Cloudera推的Impala、MapR推的Drill、IBM的BigSQL、还是Pivital开源的HAWQ?

        这也许是碎片化最严重的地方了,从技术上讲几乎每个组件都有特定的应用场景,从生态上讲各个厂家都有自己的宠爱,因此Hadoop上SQL引擎已经不仅仅是技术上的博弈(也因此考虑到本篇中立性,此处不做评论)。可以遇见的是,未来所有的SQL工具都将被整合,有些产品已经在竞争钟逐渐落伍,我们期待市场的选择。

        周边的工具更是百花齐放,最重要的莫过于可视化、任务管理和数据管理了。

        有很多开源工具都支持基于Hadoop 的查询程序编写以及即时的图形化表示,如HUE、Zeppelin等。用户可以编写一些SQL或Spark代码以及描述代码的一些标记,并指定可视化的模版,执行后保存起来,就可供其他人复用,这钟模式也被叫做“敏捷BI”。这个领域的商业产品更是竞争激烈,如Tableau、Qlik等。

        调度类工具的鼻祖Oozie能实现几个MapReduce任务串连运行的场景,后来的Nifi及Kettle等其他工具则提供了更加强大的调度实现,值得一试。

        毫无疑问,相对与传统的数据库生态,Hadoop的数据治理相对简单。Atlas是Hortonworks新的数据治理工具,虽然还谈不上完全成熟,不过正取得进展。Cloudera的Navigator是Cloudera商业版本的核心,汇聚了生命周期管理、数据溯源、安全、审计、SQL迁移工具等一系列功能。Cloudera收购Explain.io以后将其产品整合为Navigator Optimizator组件,能帮助用户把传统的SQL应用迁移到Hadoop平台并提供优化建议,可以节省数人月的工作量。


算法及机器学习

        实现基于机器学习的自动的智能化数据价值挖掘是大数据和Hadoop最诱人的愿景了,也是很多企业对大数据平台的最终期望。随着可获得的数据越来越多,未来大数据平台的价值更多的取决于其计算人工智能的程度。

        机器学习的开源项目除了之前的Mahout、MLlib、Oryx等,今年发生了很多令人瞩目的大事,迎来了数个明星巨头的重磅加入:

  • 2015年1月,Facebook开源前沿深度学习工具“Torch”。

  • 2015年4月,亚马逊启动其机器学习平台Amazon Machine Learning,这是一项全面的托管服务,让开发者能够轻松使用历史数据开发并部署预测模型。

  • 2015年11月,谷歌开源其机器学习平台TensorFlow。

  • 同一月,IBM开源SystemML并成为Apache官方孵化项目。

  • 同时,微软亚洲研究院将分布式机器学习工具DMTK通过Github开源。DMTK由一个服务于分布式机器学习的框架和一组分布式机器学习算法组成,可将机器学习算法应用到大数据中。

  • 2015年12月,Facebook开源针对神经网络研究的服务器“Big Sur”,配有高性能图形处理单元(GPUs),转为深度学习方向设计的芯片。

  机器学习正慢慢跨出象牙塔,从一个少部分学术界人士研究的科技课题变成很多企业正在验证使用的数据分析工具,而且已经越来越多的进入我们的日常生活。