本文分为技术篇、产业篇、应用篇、展望篇四部分
技术篇
2006年项目成立的一开始,“Hadoop”这个单词只代表了两个组件——HDFS和MapReduce。到现在的10个年头,这个单词代表的是“核心”(即Core Hadoop项目)以及与之相关的一个不断成长的生态系统。这个和Linux非常类似,都是由一个核心和一个生态系统组成。
现在Hadoop在一月发布了2.7.2的稳定版, 已经从 传统的Hadoop三驾马车HDFS,MapReduce和Hbase社区发展为60多个相关组件组成的庞大生态 ,其中包含在各大发行版中的组件就有25个以上,包括数据存储、执行引擎、编程和数据访问框架等。
Hadoop在2.0将资源管理从MapReduce中独立出来变成通用框架后,就从1.0的三层结构演变为了现在的四层架构:
底层——存储层,文件系统HDFS
中间层——资源及数据管理层,YARN以及Sentry等
上层——MapReduce、Impala、Spark等计算引擎
顶层——基于MapReduce、Spark等计算引擎的高级封装及工具,如Hive、Pig、Mahout等等
存储层
HDFS已经成为了大数据磁盘存储的事实标准,用于海量日志类大文件的在线存储。经过这些年的发展,HDFS的架构和功能基本固化,像HA、异构存储、本地数据短路访问等重要特性已经实现,在路线图中除了Erasure Code已经没什么让人兴奋的feature。
随着HDFS越来越稳定,社区的活跃度也越来越低,同时HDFS的使用场景也变得成熟和固定,而上层会有越来越多的文件格式封装:列式存储的文件格式,如Parquent,很好的解决了现有BI类数据分析场景;以后还会出现新的存储格式来适应更多的应用场景,如数组存储来服务机器学习类应用等。未来HDFS会继续扩展对于新兴存储介质和服务器架构的支持。
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市场向传统数据仓库市场靠拢。
Apache Arrow项目为列式内存存储的处理和交互提供了规范。目前来自Apache Hadoop社区的开发者们致力于将它制定为大数据系统项目的事实性标准。
Arrow项目受到了Cloudera、Databricks等多个大数据巨头公司支持,很多committer同时也是其他明星大数据项目(如Hbase、Spark、Kudu等)的核心开发人员。再考虑到Tachyon等似乎还没有找到太多实际接地气的应用场景,Arrow的高调出场可能会成为未来新的内存分析文件接口标准。