Hadoop Architecture

Hadoop以分布式文件系统HDFS(Hadoop Distributed File System)和MapReduce为核心,为用户提供了系统底层细节透明得分布式基础构架。分布式文件系统HDFS的高容错性、高伸缩性等优点允许用户将Hadoop部署在低廉的硬件上,形成分布式文件系统;MapReduce分布式编程模型允许用户在不了解分布式系统底层细节的情况下开发并行运用程序。所以用户可以利用Hadoop快速简便地搭建分布式计算平台,并且可以充分利用集群的计算和存储能力,完成海量数据的处理。

Apache Hadoop 2.X版本包含以下模块:Hadoop通用模块;Hadoop分布式文件系统HDFS;支持应用数据高吞吐访问的分布式文件系统;Hadoop YARN,用于作业调度和集群资源管理地框架;Hadoop MapReduce,基于YARN地大数据并行处理系统。

Hadoop生态系统主要包括:Hive、HBase、Pig、Sqoop、Flume、ZooKeeper、Mahout、Spark、Storm、Shark、Phonix、Tez、Ambari等。

Hive:用于Hadoop地一个数据仓库系统,它提供了类似于SQL地查询语言,通过该语言可以方便的进行数据汇总,特定查询以及分析放在Hadoop兼容文件系统中的大数据。

HBase:一种分布的、可伸缩的、大数据存储库,支持随机、实时读/写访问。

Pig:一个分析大数据地平台。

Sqoop:为高效传输批量数据而设计的一种工具,用于Apache Hadoop和机构化数据库存储之间的数据传输。

Flume:一种分布式的、可靠的服务,用于高校搜集、汇总、移动大量日志数据。

ZooKeeper:一种集中服务,用于维护配置信息,命名,提供分布式同步,以及提供分组服务。

Mahout:一种基于Hadoop的机器学习和数据挖掘的分布式计算框架算法集,实现了多种MapReduce模式的数据挖掘算法。

Spark:一个开源数据分析集群计算框架,由UC Berkeley开发,建立于HDFS之上。Spark 和 Hadoop一样,用于构建大规模,低延时的数据分析应用。Spark采用Scala语言实现,使用Scala作为应用框架。

Storm:一个分布式的、容错的实时计算系统。Storm属于流处理平台,多用于实时计算并更新数据库;也可被用于“连续计算”,对数据流做连续查询,并将数据计算结果以流的形式输出给用户。

Shark:即Hive on Spark,一个专为Spark打造的大规模数据仓库系统,兼容Apache Hive, Shark支持Hive查询语言、元存储、序列化格式及自定义函数,与现有Hive部署无缝集成,是一个更快、更强大的替代方案。

Hadoop HDFS 原理

HDFS和现有的分布式文件系统有很多共同点,同时,它又和其他的有明显的区别。HDFS是一个高容错性(fault-tolerant)的系统,部署在廉价硬件上能提供高吞吐量的数据访问(high throughput),放宽了一部分POSIX的约束,来实现流式读取文件的系统数据的目的。

HDFS采用的是master/slave的架构,一个HDFS集群是由一个NameNode和一定数目的DataNodes组成。

HDFS Architecture

Hadoop MapReduce 原理

这是一个快速高效用于编写并行处理大数据程序并应用在大集群上的编程框架。Map(映射)、Reduce(归纳)。一个MapReduce作业通常会把输入的数据集切分成若干独立的数据块,由map任务已完全并行的方式处理它们,框架会对map的输出先进行排序,然后把输出结果给reduce任务。作业的输入和输出通常会被存储在文件系统中,整个框架负,责任务的调度和监控,重新执行失败任务。

通常,运行MapReduce框架的计算节点和HDFS存储节点是运行在一组相同节点上的。MapReduce框架包括一个主节点(ResourceManager)、多个子节点(NodeManager)和MRAppMaster(每个任务一个)共同组成。应用程序至少应该指明输入/输出的参数位置(路径),并通过实现合适的接口或则抽象类提供map和reduce函数,再加上其他作业的参数,就构成了作业配置(job configuration)。Hadoop的job client提交作业(jar包/exe等)和配置信息给ResourceManager,后者负责分发这些软件和配置信息给slave,调度任务且监控它们的执行,同时提供状态和诊断信息给job-client。

(1)map阶段

InputFormat根据输入文件产生键值对,并传送到mapper类的map函数中;

map输出键值对到一个没有排序的缓冲内存中;

当缓冲内存达到给定值或者map任务完成,在缓冲中的键值对就会被排序,然后输出到磁盘中的溢出文件;

如果有多个溢出文件,那么就会整理这些文件到一个文件中,排好序;

这些排好序的、在溢出文件中的键值对就会等到Reducer的获取;

MapReduce Architecture

(2)Reduce阶段

Reducer获取Mapper的记录,然后产生另外的键值对,最后输出到HDFS中;

shuffle:相同的key被传输到同一个Reducer中;

当有一个Mapper完成以后,Reducer就开始获取相关的数据,所有的溢出文件会被排序到一个缓存区中;

当内存缓冲区满了以后,就会产生溢出文件到本地磁盘;

当Reducer所有相关的数据都传输完成以后,所有;溢出文件就会被整合排序;

Reducer中的reduce方法针对每个key调用一次;

Reducer的输出到HDFS。

Hadoop YARN 原理

那时在MapReduce框架中,作业执行受两种类型的进程控制:一个称为JobTracker的主要进程,它协调在集群上运行的所有作业,分配要在TaskTracker上运行的map和reduce任务;另一个就是许多称为TaskTracker的下级进程,它们运行分配的任务并定期向JobTracker汇报。

YARN(也成为MRv2),YARN称为下一代Hadoop计算平台,主要包括ResourceManager、ApplicationMaster、NodeManager,其中ResourceManager用来代替集群管理器,ApplicationMaster代替一个专用且短暂的JobTracker,NodeManager代替TaskTracker。

YARN最主要的思想就是将JobTracker两个主要的功能分离成单独的组件,这两个功能是资源管理和任务调度/监控。新的资源管理器全局管理所有应用计算资源的分配,每一个应用的ApplicationMaster负责相应的协调和调度。一个应用程序要么是一个单独的传统的MapReduce任务或者一个DAG(有向无环图)任务。ResouceManager和每一台机器的节点管理服务(NodeManager)能够管理用户在那台机器上的进程并对计算进行组织。事实上,每一个应用的ApplicationMaster是一个特定的框架库,它和ResourceManager来协调资源,和NodeManager协同工作以运行和监控任务。

ResourceManager有两个重要的组件:Scheduler和ApplicationsManager。Scheduler负责分配资源给每个正在运行的应用,同时需要注意Scheduler是一个单一的分配资源组件,不负责监控或跟踪任务状态。而且它不保证重启失败的任务。ApplicationsManager注意负责接收任务的提交,和执行应用的第一个容器ApplicationMaster协调,负责任务失败时重启。

YARN Architecture

客户端提交任务到ResourceManager的ApplicationsManager,然后Scheduler在获得了集群各个节点的资源后,为每个应用启动一个App Mastr用于执行任务。每个起到一个或多个Container用于实际执行任务。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容