Hadoop系统架构与简单介绍

Hadoop系统架构 一、Hadoop系统架构图

Hadoop1.0与hadoop2.0架构对比图

YARN架构: ResourceManager –处理客户端请求 –启动/监控ApplicationMaster –监控NodeManager –资源分配与调度 NodeManager –单个节点上的资源管理 –处理来自ResourceManager的命令 –处理来自ApplicationMaster的命令 ApplicationMaster –数据切分 –为应用程序申请资源,并分配给内部任务 –任务监控与容错

YARN作业处理流程:

步骤1 用户向YARN 中提交应用程序, 其中包括ApplicationMaster 程序、启动ApplicationMaster 的命令、用户程序等。 步骤2 ResourceManager 为该应用程序分配第一个Container, 并与对应的NodeManager 通信,要求它在这个Container 中启动应用程序的ApplicationMaster。 步骤3 ApplicationMaster 首先向ResourceManager 注册, 这样用户可以直接通过ResourceManage 查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4~7。 步骤4 ApplicationMaster 采用轮询的方式通过RPC 协议向ResourceManager 申请和领取资源。 步骤5 一旦ApplicationMaster 申请到资源后,便与对应的NodeManager 通信,要求它启动任务。 步骤6 NodeManager 为任务设置好运行环境(包括环境变量、JAR 包、二进制程序 等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。 步骤7 各个任务通过某个RPC 协议向ApplicationMaster 汇报自己的状态和进度,以让ApplicationMaster 随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可随时通过RPC 向ApplicationMaster 查询应用程序的当 前运行状态。 步骤8 应用程序运行完成后,ApplicationMaster 向ResourceManager 注销并关闭自己。

运行在YARN上带来的好处 : –一个集群部署多个版本 –计算资源按需伸缩 –不同负载应用混搭,集群利用率高 –共享底层存储,避免数据跨集群迁移

Hadoop 2.0 HA实现方式说明: 利用共享存储在两个NN间同步edits信息,如NFS等中高端存储设备内部的各种RAID以及冗余硬件 DataNode同时向两个NN汇报块信息,让Standby NN保持集群最新状态 用FailoverController watchdog进程监视和控制NN进程,防止因 NN FullGC挂起无法发送heart beat 防止脑裂(brain-split):主备切换时由于切换不彻底等原因导致Slave误以为出现两个active master,通常采用Fencing机制: -共享存储fencing,确保只有一个NN可以写入edits -客户端fencing,确保只有一个NN可以响应客户端的请求

  • DN fencing,确保只有一个NN可以向DN下发删除等命令

HDFS文件读取:

HDFS文件写入:

MapReduce基本流程:

从MapReduce 自身的命名特点可以看出, MapReduce 由两个阶段组成:Map 和Reduce。用户只需编写map() 和 reduce() 两个函数,即可完成简单的分布式程序的设计。 map() 函数以key/value 对作为输入,产生另外一系列 key/value 对作为中间输出写入本地磁盘。 MapReduce 框架会自动将这些中间数据按照 key 值进行聚集,且key 值相同(用户可设定聚集策略,默认情况下是对 key 值进行哈希取模)的数据被统一交给 reduce() 函数处理。 reduce() 函数以key 及对应的value 列表作为输入,经合并 key 相同的value 值后,产生另外一系列 key/value 对作为最终输出写入HDFS hello world --WordCount 用户编写完MapReduce 程序后,按照一定的规则指定程序的输入和输出目录,并提交到Hadoop 集群中。作业在Hadoop 中的执行过程如图所示。Hadoop 将输入数据切分成若干个输入分片(input split,后面简称split),并将每个split 交给一个Map Task 处理;Map Task 不断地从对应的split 中解析出一个个key/value,并调用map() 函数处理,处理完之后根据Reduce Task 个数将结果分成若干个分片(partition)写到本地磁盘;同时,每个Reduce Task 从每个Map Task 上读取属于自己的那个partition,然后使用基于排序的方法将key 相同的数据聚集在一起,调用reduce() 函数处理,并将结果输出到文件中

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hadoop实操

CDH集群跨多版本滚动升级

36920
来自专栏叁金大数据

HDFS你一定要知道,要考的

前面我们分析存储方案的发展的时候有提到分布式文件存储的出现是为了解决存储的三大问题:可扩展性,高吞吐量,高可靠性

12110
来自专栏我是攻城师

Spark入门之WordCount

29750
来自专栏Linux驱动

32.Linux-2440下的DMA驱动(详解)

DMA(Direct Memory Access) 即直接存储器访问, DMA 传输方式无需 CPU 直接控制传输,通过硬件为 RAM 、I/O 设备开辟一条直...

38790
来自专栏个人分享

Hadoop系统架构

步骤1 用户向YARN 中提交应用程序, 其中包括ApplicationMaster 程序、启动ApplicationMaster 的命令、用户程序等。

82630
来自专栏chokwin的专栏

如何安装和设置3节点Hadoop集群

Hadoop是一个开源Apache项目,允许在大型数据集上创建并行处理应用程序,分布在网络节点上。它由处理节点间数据可扩展性和冗余的Hadoop分布式文件系统(...

29140
来自专栏大数据学习笔记

Spark2.x学习笔记:4、Spark程序架构与运行模式

4、 Spark程序架构与运行模式 4.1 Spark程序最简架构 所有的Spark程序运行时,主要由两大类组件Driver和Excutor构成。 每个Spar...

33390
来自专栏牛肉圆粉不加葱

【容错篇】Spark Streaming的还原药水——Checkpoint

一个 Streaming Application 往往需要7*24不间断的跑,所以需要有抵御意外的能力(比如机器或者系统挂掉,JVM crash等)。为了让这成...

9120
来自专栏码字搬砖

hive原理分析

基于hive1.1(从hive2.0开始,hive开始基于内存了,底层的实现框架不在基于MR)

40730
来自专栏Hadoop实操

如何使用StreamSets从MySQL增量更新数据到Hive

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproje...

5.6K130

扫码关注云+社区

领取腾讯云代金券