大象起舞,天下太平,极客们应该知道我们的重量级人物Hadoop登场了。
提到Hadoop, 正所谓饮水思源,我们不得不提及一下Hadoop之父,其对技术界的影响,在近10年可谓重大, 他就是Doug Cutting, 其传奇人生及其大作这里不赘述了,大家可以Google/Bing一下,之后或许我们会推出一些技术大牛的介绍以及好书推荐。
值得提及的是Hadoop之所以诞生于2005-2006之际,是Doug当时受到来自
Google Lab公开发布的几篇paper启发,包括Map/Reduce(2004), Google
File System(GFS)-2003,Doug于2006年加入Yahoo, 在Yahoo的慧眼及大力推动下,山寨出身的Hadoop的运势如日中天。
老样子,Hadoop官网介绍,Hadoop是一个开源框架,适合运行在通用硬件,支持用简单程序模型分布式处理跨集群大数据集,支持从单一服务器到上千服务器的水平scale up。BTW, Hadoop的官网真是无法形容,毫无美感,文字堆砌,与后来的Docker, Spark等无法相提并论。毕竟这是一个颜值时代。
上架构图:
Hadoop 1.x架构刚开始比较简单,只有2个大的模块MapReduce和
HDFS, 其中MapReduce不单包含了分布式计算,还有集群资源管理,HDFS是Hadoop的核心分布式文件系统,提供了分布式高吞吐文件系统管理。
在后续的Hadoop 2.x版本中(目前稳定版本为2.7.x),
架构做了大幅改进,支持MapReduce批处理, Tez交互式,以及抽象独立的YARN负责job scheduling和集群资源管理,还有HDFS2,还有上图没有体现的
Common模块包含了一些公共功能,如安全认证以及支持其它模块基础功能。 同时,开放接口支持Online HBase, Streaming, In-Memory Spark等。
值得一提的是, 关于HDFS2,借鉴吸取了后起之秀Spark的计算模型,正所谓
“移动计算比移动数据更划算”, 之RDD之精髓。
好吧,先来介绍HDFS架构图:
HDFS毫无疑问的采用了master/slave架构, 一个HDFS集群是由一个NameNode和多个DataNodes组成。NameNode是一个中心服务器,负责管理文件系统的名字空间namespace以及客户端对文件的访问。DataNode一般是一个节点一个,负责管理它所在节点的存储。一个文件根据大小被拆分成一个或多个数据块,这些数据块存储在一组DataNode上,NameNode执行文件系统的操作,如打开,关闭,重命名等,同时也负责确定数据块到具体datanodes节点的映射。
datanode负责处理文件系统客户端的读写请求,在namenode的统一调度下进行数据的处理,如创建,删除,复制等。集群中单一的namenode结构大大简化了系统架构,namenode统一管理hdfs原数据,用户数据永远不会存放于
namenode。所有的hdfs通讯协议建立在tcp/ip之上。其中,client是向
namenode发起文件读写请求的,namenode再根据配置返回给client相应的
datanode信息。一个block默认配置会有3分备份。
细心的读者可能会发现,namenode是万能的,高效的,中央集权的。却隐隐存在巨大的单点故障风险,如果namenode出现故障,那整个hdfs都无法运作了,即非HA.
Hadoop 2.x后引入了HDFS2, 包含了2个namenode(目前支持2个),一个处于active状态,一个处于standby状态。当active出现问题时就自动切换,如何自动切换就借用了我们上一篇提到的zookeeper了,集群中的两个
namenode都在zookeeper中注册,zk负责监测namenode状态以及自动切换。说白了就是又引入一层来管理,计算机以及程序里的抽象与问题解决大多是引入新的一层或者角色来做到的。
另外读者可能也会注意到的是namenode是核心节点,维护着整个hdfs的元数据信息,但其容量是有限的,当namenode所在服务器内存无法装载后,整个hdfs集群就受制于他,这可无法支撑sale up成千上完的集群大数据。其解决办法为引入了hdfs Federation,即有多个hdfs集群。一个总集群中,可以虚拟出多个单独小集群,各个小集群间数据可以实时共享。
上图:
好了,hdfs到此,我们继续介绍第二个核心模块mapreduce。下图以著名的
wordcount为例,介绍m/r整体结构:
mr编程框架原理,利用一个输入的key-value对集合来产生一个输出的
key-value对集合。mr库通过map(映射)和reduce(化简)两个函数来实现,说到底其核心思想也就是我们大学学的数据结构中的分而治之算法吧。用户自定义的map函数接受一个输入key-value对,然后产生一个中间的key-value对的集合,mr把所有具有相同key值的value结合在一起,然后传递给reduce函数,reduce接受合并这些value值,形成一个较小的value 集合,reduce函数具备了在集群上大规模分布式数据处理的能力。与传统的分布式计算设计相比,mapreduce封装了并行处理,容错处理,本地化计算,负载均衡等细节。
上图中,reduce又包含了3个主要阶段,shuffle,sort和reduce。这里有必要提及一下shuffle:
shuffle操作就是针对多个map任务的输出按照不同的分区partition通过网络复制到不同的reduce任务节点上,这整个过程叫做shuffle。
继续介绍第三大核心YRAN:
整体架构中的yran
继续抽象:
YARN的内部细节架构:
YARN分层结构的本质是ResourceManager。它控制整个集群并管理应用程序向基础计算资源分配。ResourceManager将各个资源部份(计算,内存,带宽等)安排给基础nodemanager(YARN的每节点代理)。ResourceManger还与ApplicationMaster一起分配资源,与NodeManager一起监控基础应用。在上下文,承担了以前的TaskTracker的一些角色,ResourceManager承担了
JobTracker的角色。Hadoop 1.x架构受到了JobTracker的高度约束,
jobtracker负责整个集群的资源管理与作业调度,新的Hadoop 2.x打破了这种模型,ResourceManager管理资源,ApplicationMaster负责作业。YARN还允许使用Message Passing Interface通信模型,执行不同编程模型,包括图形,迭代式,机器学习等计算。
好了,上代码吧,没时间写了,官网word count:
“简单”明了,无需多数,作者简单加了引号,注意这段经典代码后来被Spark用来作为案例,几句就搞定了。
最后,我们来看一下Hadoop的生态系统:
Hadoop v2.x生态系统如日中天,百家争鸣。这里仅仅抛个引子。
好了,本文仅作为Hadoop的项目介绍就到此了,相信群里有很多Hadoop大牛技术专家,各位不灵赐教。
@erixhao
公众号: 技术极客TechBooster
相关推荐
Phoenix最早是saleforce的一个开源项目,后来成为Apache基金的顶级项目。Phoenix是构建在HBase上的一个SQL层,能让我们用标准的JDBC APIs而不是HBase客户端APIs来创建表,插入数据和对HBase数据进行查询。Phoenix...
Hadoop是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File ...
顶级Apache开源项目Hadoop发布了1.0.0版。Hadoop是前雅虎开发者Doug Cutting开发的分布式计算平台,名字源于玩具象,至今已被数千家公司用于分析大容量数据。Hadoop 1.0.0主要是修正了bug,改进了性能和兼容性。它的...
成PDF 2008年1月Hadoop成为Apache顶级项目(Top-Level Project) 2008年2月YAHOO宣布其生产网利用Hadoop集群为搜索引擎建立索引, 集群规模超过1万个CPU核心 起源与目标 大数据与Hadoop 应用模式 大数据与Hadoop ...
Spark 在 2013 年 6 月进入 Apache 成为孵化项目,8 个月后成为 Apache 顶级项目。 Spark 以其先进的设计理念,迅速成为社区的热门项目,围绕着 Spark 推出了 SparkSQL、SparkStreaming、MLlib 和 GraphX 等组件,...
Apache顶级项目Mahout,基于Hadoop的分布式机器学习框架Mahout中文完整版文档。
Apache Kylin是Hadoop大数据平台上的一个开源OLAP引擎。它采用 多维立方体预计算技术,可以将大数据的SQL查询速度提升到亚...Apache Kylin也是中国人主导的、唯一的Apache顶级开源项目,在开 源社区有世界级的影响力。
Hadoop是Apache下的顶级开源项目,该平台能够利用成千上万的廉价计算机提供并行计算与存储服务。本文主要深入研究了Hadoop平台下的HDFS分布式文件系统,并行编程模型MapReduce,分布式列型存储数据库HBase。 二、对聚类...
Apache Kylin是Hadoop大数据平台上的一个开源OLAP引擎。它采用多维立方体预计算技术,可以将大数据的SQL查询速度提升到亚秒...Apache Kylin也是中国人主导的、唯一的Apache顶级开源项目,在开源社区有世界级的影响力。
Spark是继Hadoop之后,成为替代Hadoop的下一代云计算大数据核心技术,目前SPARK已经构建了自己的整个大数据处理生态系统,如流处理、图技术、机器学习、NoSQL查询等方面都有自己的技术,并且是Apache顶级Project,...
Apache Kylin中文版权威指南,Apache Kylin是Hadoop...Apache Kylin也是中国人主导的、唯一的Apache顶级开源项目,在开源社区有世界级的影响力。 对于数据分析来说,挺有必要看的一本书,推荐给大家。 快快下载学习吧~
IBM更是非常看好开源大数据工具,派出了3500名研究人员开发ApacheSpark,这个工具是Hadoop生态系统的一部分。这回我们推出了最新的顶级开源大数据工具排行榜。这个领域最近方兴未艾,许多新项目纷纷启动。许多最知名...
Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处,Spark以其先进的设计理念,迅速成为社区的热门项目,围绕着Spark推出了Spark SQL、Spark Streaming、MLLib和GraphX等...
Apache Arrow是Apache基金会下一个全新的开源项目,同时也是顶级项目。它的目的是作为一个跨平台的数据层来加快大数据分析项目的运行速度。用户在应用大数据分析时除了将Hadoop等大数据平台作为一个经济的存储和...
Kudu是Cloudera开源的新型列式存储系统,Apache Hadoop生态圈的顶级项目之一,解决了传统Lamda架构处理Hadoop上快速变化数据的存储和处理技术过于复杂的问题,同时Kudu能够与Hadoop生态的其他组件比如Impala、Spark...
Kudu是Cloudera开源的新型列式存储系统,Apache Hadoop生态圈的顶级项目之一,解决了传统Lamda架构处理Hadoop上快速变化数据的存储和处理技术过于复杂的问题,同时Kudu能够与Hadoop生态的其他组件比如Impala、Spark...
联系Ozone是之下的顶级项目臭氧邮件列表如有任何疑问,请使用: 聊天:您可以在官方的ASF松弛处找到#ozone频道。 邀请链接在。 有 开放的 ,您可以询问有关臭氧的任何信息。 过去的会议记录也可从W
Zeppelin目前已托管于Apache基金会,但并未列为顶级项目,可以在其公布的 官网访问。它提供了一个非常友好的WebUI界面,操作相关指令。它可以用于做数据分析和可视化。其后面可以接入不同的数据处理引擎。包括