e-works数字化企业网  »  文章频道  »  基础信息化  »  工业互联网

一文读懂大数据计算框架与平台

2017/5/4    来源:36大数据    作者:王小鉴      
关键字:大数据计算框架  MapReduce  
数据规模不断增加,TB、PB量级成为常态,对数据的处理已无法由单台计算机完成,而只能由多台机器共同承担计算任务。而在分布式环境中进行大数据处理,除了与存储系统打交道外,还涉及计算任务的分工,计算负荷的分配,计算机之间的数据迁移等工作,并且要考虑计算机或网络发生故障时的数据安全,情况要复杂得多。

    4.2. Hive
 
    Apache Hive是最早出现的架构在Hadoop基础之上的大规模数据仓库,由Facebook设计并开源。Hive的基本思想是,通过定义模式信息,把HDFS中的文件组织成类似传统数据库的存储系统。Hive 保持着 Hadoop 所提供的可扩展性和灵活性。Hive支持熟悉的关系数据库概念,比如表、列和分区,包含对非结构化数据一定程度的 SQL 支持。它支持所有主要的原语类型(如整数、浮点数、字符串)和复杂类型(如字典、列表、结构)。它还支持使用类似 SQL 的声明性语言 Hive Query Language (HiveQL) 表达的查询,任何熟悉 SQL 的人都很容易理解它。HiveQL被编译为MapReduce过程执行。下图说明如何通过MapReduce实现JOIN和GROUP BY。
 
(1) 实现JOIN
 
    (1) 实现JOIN
 
(2) 实现GROUP BY
  
    (2) 实现GROUP BY
 
图11 部分HiveQL操作的实现方式
 
    Hive与传统关系数据库对比如下:
 
大数据
 
    Hive的主要弱点是由于建立在MapReduce的基础上,性能受到限制。很多交互式分析平台基于对Hive的改进和扩展,包括Stinger、Presto、Kylin等。其中Kylin是中国团队提交到Apache上的项目,其与众不同的地方是提供多维分析(OLAP)能力。Kylin对多维分析可能用到的度量进行预计算,供查询时直接访问,由此提供快速查询和高并发能力。Kylin在eBay、百度、京东、网易、美团均有应用。
  
    4.3. SQL引擎Calcite
 
    对于交互式分析,SQL查询引擎的优劣对性能的影响举足轻重。Spark开发了自己的查询引擎Catalyst,而包括Hive、Drill、Kylin、Flink在内的很多交互式分析平台及数据仓库使用Calcite(原名optiq)作为SQL引擎。Calcite是一个Apache孵化项目,其创建者Julian Hyde曾是Oracle数据库SQL引擎的主要开发者。Calcite具有下列几个技术特点:
 
  • 支持标准SQL语言。
 
  • 支持OLAP。
 
  • 支持对流数据的查询。
 
  • 独立于编程语言和数据源,可以支持不同的前端和后端。
 
  • 支持关系代数、可定制的逻辑规划规则和基于成本模型优化的查询引擎。
 
  • 支持物化视图(materialized view)的管理。
 
    由于分布式场景远比传统的数据存储环境更复杂,Calcite和Catalyst都还处于向Oracle、MySQL等经典关系数据库引擎学习的阶段,在性能优化的道路上还有很长的路要走。
 
    5. 其他类型的框架
 
    除了上面介绍的几种类型的框架外,还有一些目前还不太热门但具有重要潜力的框架类型。图计算是DAG之外的另一种迭代式计算模型,它以图论为基础对现实世界建模和计算,擅长表达数据之间的关联性,适用于PageRank计算、社交网络分析、推荐系统及机器学习。这一类框架有Google Pregel、Apache Giraph、Apache Hama、PowerGraph、,其中PowerGraph是这一领域目前最杰出的代表。很多图数据库也内置图计算框架。
 
    另一类是增量计算框架,探讨如何只对部分新增数据进行计算来极大提升计算过程的效率,可应用到数据增量或周期性更新的场合。这一类框架包括Google Percolator、Microsoft Kineograph、阿里Galaxy等。
 
    另外还有像Apache Ignite、Apache Geode(GemFire的开源版本)这样的高性能事务处理框架。
 
    6. 总结与展望
 
    从Hadoop横空出世到现在10余年的时间中,大数据分布式计算技术得到了迅猛发展。不过由于历史尚短,这方面的技术远未成熟。各种框架都还在不断改进,并相互竞争。
 
    性能优化毫无疑问是大数据计算框架改进的重点方向之一。而性能的提高很大程度上取决于内存的有效利用。这包括前面提到的内存计算,现已在各种类型的框架中广泛采用。内存资源的分配管理对性能也有重要影响,JVM垃圾回收在给开发人员带来便利的同时,也制约了内存的有效利用。另外,Java的对象创建及序列化也比较浪费资源。在内存优化方面做足功夫的代表是Flink。出于性能方面的考虑,Flink很多组件自行管理内存,无需依赖JVM垃圾回收机制。Flink还用到开辟内存池、用二进制数据代替对象、量身定制序列化、定制缓存友好的算法等优化手段。Flink还在任务的执行方面进行优化,包括多阶段并行执行和增量迭代。
 
    拥抱机器学习和人工智能也是大数据计算的潮流之一。Spark和Flink分别推出机器学习库Spark ML和Flink ML。更多的平台在第三方大数据计算框架上提供机器学习,如Mahout、Oryx及一干Apache孵化项目SystemML、HiveMall、PredictionIO、SAMOA、MADLib。这些机器学习平台一般都同时支持多个计算框架,如Mahout同时以Spark、Flink、H2O为引擎,SAMOA则使用S4、Storm、Samza。在深度学习掀起热潮后,又有社区探索把深度学习框架与现有分布式计算框架结合起来,这样的项目有SparkNet、Caffe on Spark、TensorFrames等。
 
    在同一平台上支持多种框架也是发展趋势之一,尤其对于那些开发实力较为雄厚的社区。Spark以批处理模型为核心,实现了交互式分析框架Spark SQL、流计算框架Spark Streaming(及正在实现的Structured Streaming)、图计算框架GraphX、机器学习库Spark ML。而Flink在提供低延迟的流计算的同时,批处理、关系计算、图计算、机器学习,一个也没落下,目标直奔大数据通用计算平台。Google的BEAM(意为Batch+strEAM)则试图把Spark、Flink、Apex这样的计算框架纳入自己制定的标准之下,颇有号令江湖之意。
 
    BEAM的统一模型
 
    图12 BEAM的统一模型
 
    7. 学习资料
 
    最后介绍一下大数据计算方面的学习资料。入门前的了解、知识面的拓展及知识的零散积累靠长期访问相关的网站、论坛、微信订阅号,问题解答则靠对搜索引擎的熟练驾驭。需要指出的是,网上的内容良萎不齐,很多资料是过时的,以讹传讹也是常有的事,要注意鉴别。
 
    论坛首推知乎、Quora、Stack Overflow,运气好的话开发者亲自给你解答。其他值得关注的网站或论坛包括炼数成金、人大经济论坛、CSDN、博客园、云栖社区、360大数据、推酷、伯乐在线、小象学院等。微信订阅号中,InfoQ是最权威的,其他还有THU数据派、大数据杂谈、CSDN大数据、数据猿、Hadoop技术博文等,各人根据偏好取舍。
 
    若要进行系统的学习,则首先应参考官方网站文档。不少大数据平台的官方文档内容都比较详实,胜过多数教材。另外,官方文档与产品通常同步更新,这个优势是其他资料无法做到的。不过要说可读性,书籍或视频教程要强得多。视频资料可以从上文提到的部分网站论坛下载。
 
    书籍方面,国外O’Reilly、Manning两家出版社在大数据领域出版了不少优秀书籍,特别是Manning的In Action系列和O’Reilly的Definitive Guide系列。前者侧重提高动手能力,后者则知识比较全面。In Action和Definitive Guide系列的书籍很多已翻译为中文,一般分别译为xxx实战、xxx权威指南。另外一家出版社Packt也值得关注。Packt的书比较薄,适合入门。至于中文原创书籍,推荐张俊林的《大数据日知录》,该书是对大数据存储和处理技术的全面梳理,系统性强。其他书籍不逐一点评,若想购买或阅读可参考豆瓣对该书的评分。
 
    大数据
 
    对希望对大数据框架内部机制有深入的理解的读者,建议首先检索相关论文来阅读。
 
    Google的那几篇论文这里就不一一列出了,网上很容易搜到。其他推荐的论文如下:
 
  大数据
 
责任编辑:李欢
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
兴趣阅读
相关资料
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐