Apache顶级项目介绍4 - Hadoop

大象起舞,天下太平,极客们应该知道我们的重量级人物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大牛技术专家,各位不灵赐教。

wechat: erixhao

时间: 2024-08-02 19:23:32

Apache顶级项目介绍4 - Hadoop的相关文章

Apache顶级项目介绍2-Kafka

Apache顶级项目介绍系列-1,我们从Kafka说起.why?流行 + 名字cool. Kafka官网是见过比较简单,直叙的网站,"kafka是一个高吞吐的分布式的消息系统". Kafka最初起家于LinkedIn,当时原本作为linkedin用来管理活动流(PV,用户行为分析,搜索情况)和运营数据处理的pipline的基础. 因为其分布式以及高吞吐被广泛使用,如与Cloudera, Hadoop, Storm, Spark etc. kafka首先作为一个消息系统,提供了基本功能,

Apache顶级项目介绍7 - HBase

今天我们来继续介绍Apache顶级项目大数据三巨头之一的HBase.恰逢今天(5.24)是HBase Con2016旧金山盛会,比较应景,而且还有朋友@Luke Han去演讲Kylin. 1. 官网简介: 老样子,HBase官网的介绍, "HBase is the Hadoop database, a distributed, scalable, big data store.",所以HBase   =  Hadoop Database,并且提供了分布式可扩展的数据存储.(HBase的

Apache顶级项目介绍系列1-概览

我们希望开始介绍一整套精华Apache TLP顶级项目介绍,包括Kafka, Zookepper, Hadoop, Spark, HBase etc.   公众号:技术极客TechBooster

Apache顶级项目介绍6 - Spark

火花四溢,热情洋溢.极客朋友么知道,我们翘首以盼的Spark来了. 提及Spark, 这几年如日中天,谈到大数据如果不提及Spark, Hadoop,就好比这年代带耳机不是2B的,你都不好意思带.Spark最初由加州大学伯克利分校(太屌的大学,出了多少名人,名作啊)的AMPLab Matei为主的小团队使用Scala开发,其核心代码只有63个Scala文件(早期版本,这里提及一下Scala语言又是一个创时代的大作,有人说它太锋利,有人说它太妖魔). Spark作者Matei: Spark于201

Dubbo下一站:Apache顶级项目

导读: 近日,在Apache Dubbo开发者沙龙杭州站的活动中,阿里巴巴中间件技术专家曹胜利(展图)向开发者们分享了Dubbo2.7版本的规划. 本文将为你探秘 Dubbo 2.7背后的思考和实现方式. 作者:(按姓氏拼音排序,排名不分先后) 曹胜利(展图):Apache Dubbo Committer. 刘军(陆龟):Apache Dubbo Committer. Dubbo 2.7 将围绕 异步支持优化.元数据改造,引入JDK8的特性.Netty4.0的特性以及MetricsAPI 5个方

盘点Apache毕业的11个顶级项目

自1999年成立至今,Apache 软件基金会已成功建立起自己强大的生态圈.其社区涌现了非常多优秀的开源项目,同时有越来越多国内外项目走向这个国际开源社区进行孵化.据悉,目前所有的 Apache 项目都需要经过孵化器孵化,满足一系列质量要求之后才可毕业.从孵化器里毕业的项目,要么独立成为顶级项目,要么成为其他顶级项目的子项目. 为便于大家了解 Apache 孵化的标准,本文盘点了 Apache 从2016年1月1日至2017年1月19日所有孵化成功并独立管理的顶级项目,共有11个.同时,欢迎大家

Apache孵化器主席Justin Mclean:如何成为Apache顶级开源项目

摘要: 近日,Apache孵化器主席.Apache基金会成员.Dubbo & RocketMQ等开源项目的导师Justin Mclean来到阿里巴巴西溪园区,与众多开发者分享了如何打造一个Apache顶级项目,以及项目孵化过程会遇到的一些盲点和挑战. 近日,Apache孵化器主席.Apache基金会成员.Dubbo & RocketMQ等开源项目的导师Justin Mclean来到阿里巴巴西溪园区,与众多开发者分享了如何打造一个Apache顶级项目,以及项目孵化过程会遇到的一些盲点和挑战.

Apache Drill 成为 Apache 基金会顶级项目

Apache 基金会今天宣布 Apache Drill 成为基金会的顶级项目.项目新的首页是:http://drill.apache.org/ 为了帮助企业用户寻找更为有效.加快Hadoop数据查询的方法,Apache软件基金会发起了一项名为"Drill"的开源项目.Apache Drill 实现了 Google's Dremel. 该项目将会创建出开源版本的谷歌Dremel Hadoop工具(谷歌使用该工具来为Hadoop数据分析工具的互联网应用提速).而"Drill&qu

Hadoop离线项目介绍

Hadoop离线项目介绍(不包括程序) 一:项目场景 1.需求分析 根据用户行为数据进行程序的处理,得到结果保存到关系型数据库中 需要收集用户(系统使用者)在不同客户端上产生的用户行为数据,最终保存到hdfs上 需要明确收集字段的相关信息,而且需要考虑到后期的新需求的提出 总:收集不同客户端的用户行为数据,通过mr.hive进行数据分析处理,将分析结果数据保存到关系型数据库中 2.场景一 二:核心关注点 1.核心关注点 购买率 购买的人数/总人数 购买的人数/查看该商品的总人数 复购率 n次购买