Hadoop最初重要包含分布式文件体系HDFS和计算框架MapReduce两部分,是大年夜Nutch中自力出来的项目。在2.0版本中,又把资本治理和义务调剂功能大年夜MapReduce中剥离形成YARN,使其他框架也可以像MapReduce那样运行在Hadoop之上。与之前的分布式计算框架比拟,Hadoop隐蔽了很多繁琐的细节,如容错、负载均衡等,更便于应用。
Hadoop也具有很强的横向扩大才能,可以很轻易地把新计算机接入到集群中介入计算。在开源社区的支撑下,Hadoop赓续成长完美,并集成了浩瀚优良的产品如非关系数据库HBase、数据仓库Hive、数据处理对象Sqoop、机械进修算法库Mahout、一致性办事软件ZooKeeper、治理对象Ambari等,形成了相对完全的生态圈和分布式计算事实上的标准。
图2. Hadoop生态圈(删减版)
MapReduce可以懂得为把一堆混乱无章的数据按照某种特点归并起来,然后处理并获得最后的结不雅。根本处理步调如下:
把输入文件按照必定的标准分片,每个分片对应一个map义务。一般情况下,MapReduce和HDFS运行在同一组计算机上,也就是说,每台计算机同时承担存储和计算义务,是以分片平日不涉及计算机之间的数据复制。
按照必定的规矩把分片中的内容解析成键值对。平日选择一种预定义的规矩即可。
履行map义务,处理每个键值对,输出零个或多个键值对。
MapReduce获取应用法度榜样定义的分组方法,并按分组对map义务输出的键值对排序。默扰绫强个键名一组。
履行reduce义务的过程经由过程收集获取指定组的所有键值对。
把键名雷同的值归并为列表。
履行reduce义务,处理每个键对应的列表,输出结不雅。
在膳绫擎的步调中,应用法度榜样重要负责设计map和reduce义务,其他工作均由框架负责。在定义map义务输出数据的方法时,键的选择至关重要,除了影响结不雅的┞俘确性外,也决定命据若何分组、排序、传输,以及履行reduce义务的计算机若何分工。前面提到的商品发卖统计的例子,可选择商品种类为键。MapReduce履行商品发卖统计的过程大年夜致如下:
把发卖记录分片,分派给多台机械。
每条发卖记录被解析成键值对,个中值为发卖记录的内容,键可忽视。
履行map义务,每条发卖记录被转换为新的键值对,个中键为商品种类,值为该笔记录中商品的发卖额。
(可选)如不雅发卖记录在源源赓续地增长,统计还没履行完新记录又来了,若何包管统计结不雅的精确性?能不克不及包管结不雅是及时更新的?再次统计时能不克不及避免大年夜量反复计算?
待所有节点都完成排序后,MapReduce启动reduce义务。每个商品种类对应一个reduce义务。
履行reduce义务的过程经由过程收集获取指定商品种类的各次发卖额。
MapReduce把同一种商品下的各次发卖额归并到列表中。
履行reduce义务,累加各次发卖额,获得该种商品的总发卖额。
膳绫擎的过程还有优化的空间。在传输各类商品每次的发卖额数据前,可先在map端对各类商品的发卖额进行小计,由此可大年夜大年夜削减收集传输的负荷。MapReduce经由过程一个可选的combine义务支撑该类型的优化。
2.2. DAG模型
若针对第8个问题提出来竽暌功对筹划,则分两种情况:如不雅重点关怀处理的及时性,则属于流计算框架;如不雅侧重于避免反复计算,则属于增量计算框架。
如今假设我们的目标更进一步,欲望知道发卖得最好的前10种商品。我们可以分两个环节来计算:
对商品种类按发卖额排名。可以经由过程一个排序过程完成。假定商品种类异常多,须要经由过程多台计算机来加快计算速度的话,我们可以用另一个MapReduce过程来实现,其根本思路是把map和reduce分别算作小组赛和决赛,先计算各分片的前10名,汇总后再计算总排行榜的前10名。
大年夜膳绫擎的例子可以看出,经由过程多个MapReduce的组合,可以表达复杂的计算问题。不过,组合过程须要人工设计,比较麻烦。别的,每个阶段都须要所有的计算机同步,影响了履行效力。
为克服上述问题,业界提出了DAG(有向无环图)计算模型,其核心思惟是把义务在内部分化为若干存在先后次序的子义务,由此可更灵活地表达各类复杂的依附关系。Microsoft Dryad、Google FlumeJava、Apache Tez是最早出现的DAG模型。Dryad定义了串接、全连接、融合等若干简单的DAG模型,经由过程组合这些简单构造来描述复杂的义务,FlumeJava、Tez则经由过程组合若干MapReduce形成DAG义务。
图4. MapReduce(左)与Tez(右)履行复杂义务时比较
MapReduce的另一个不足之处是应用磁盘存储中心结不雅,严重影响了体系的机能,这在机械进修等须要迭代计算的场合更为明显。加州大年夜学伯渴攀利分校AMP实验室开辟的Spark克服了上述问题。Spark对早期的DAG模型作了改进,提出了基于内存的分布式存储抽象模型RDD(Resilient Distributed Datasets,可恢复分布式数据集),把中心数据有选择地加载并驻留到内存中,削减磁盘IO开销。与Hadoop比拟,Spark基于内存的运算要快100倍以上,基于磁盘的运算也要快10倍以上。
推荐阅读
高可用实践 【51CTO.com原创稿件】NDC全称Netease data canal,即网易数据运河,是一个平台化的构造化数据传输体系,目标是解决构造化数据的及时迁徙、同步、订阅、OLTP到OLAP的及时数据整>>>详细阅读
本文标题:一文读懂大数据计算框架与平台
地址:http://www.17bianji.com/lsqh/35021.html
1/2 1