加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

学Hadoop你必须要知道的

发布时间:2019-08-07 02:24:26 所属栏目:教程 来源:大数据三十四号
导读:文章目录: 一、理论知识 1.Hadoop的整体印象 2.Hadoop的优势 3.Hadoop可以做什么 4.Hadoop结构 4.1 Hadoop存储--HDFS 4.2 Hadoop计算--MapReduce 4.3 Hadoop资源管理--YARN 5.Hadoop生态 二、Hadoop实际操作 本文内容诸多借鉴,在借鉴处会表示出处,可在出

文件在客户端时会被分块,这里可以看到文件被分为 5 个块,分别是:A、B、C、D、E。同时为了负载均衡,所以每个节点有 3 个块。下面来看看具体步骤:

  1. 客户端将要上传的文件按 128M 的大小分块。
  2. 客户端向名称节点发送写数据请求。
  3. 名称节点记录各个 DataNode 信息,并返回可用的 DataNode 列表。
  4. 客户端直接向 DataNode 发送分割后的文件块,发送过程以流式写入。
  5. 写入完成后,DataNode 向 NameNode 发送消息,更新元数据。

这里需要注意:

  1. 写 1T 文件,需要 3T 的存储,3T 的网络流量。
  2. 在执行读或写的过程中,NameNode 和 DataNode 通过 HeartBeat 进行保存通信,确定 DataNode 活着。如果发现 DataNode 死掉了,就将死掉的 DataNode 上的数据,放到其他节点去,读取时,读其他节点。
  3. 宕掉一个节点没关系,还有其他节点可以备份;甚至,宕掉某一个机架也没关系;其他机架上也有备份。

4.2 Hadoop计算–MapReduce

MapReduce用于大规模数据集(大于1TB)的并行运算。概念**“Map(映射)”和“Reduce(归纳)”**以及它们的主要思想,都是从函数式编程语言借来的,还有从矢量编程语言借来的特性。

当前的软件实现是指定一个 Map(映射)函数:用来把一组键值对映射成一组新的键值对。指定并发的 Reduce(归纳)函数,用来保证所有映射的键值对中的每一个共享相同的键组,如下图所示。

学Hadoop你必须要知道的

下面将以 Hadoop 的“Hello World”例程—单词计数来分析MapReduce的逻辑,如下图 所示。一般的 MapReduce 程序会经过以下几个过程:输入(Input)、输入分片(Splitting)、Map阶段、Shuffle阶段、Reduce阶段、输出(Final result)。

学Hadoop你必须要知道的

1.输入就不用说了,数据一般放在 HDFS 上面就可以了,而且文件是被分块的。关于文件块和文件分片的关系,在输入分片中说明。

2.输入分片:在进行 Map 阶段之前,MapReduce 框架会根据输入文件计算输入分片(split),每个输入分片会对应一个 Map 任务,输入分片往往和 HDFS 的块关系很密切。例如,HDFS 的块的大小是 128M,如果我们输入两个文件,大小分别是 27M、129M,那么 27M 的文件会作为一个输入分片(不足 128M 会被当作一个分片),而 129MB 则是两个输入分片(129-128=1,不足 128M,所以 1M 也会被当作一个输入分片),所以,一般来说,一个文件块会对应一个分片。如图 1-7 所示,Splitting 对应下面的三个数据应该理解为三个分片。

3.Map 阶段:这个阶段的处理逻辑就是编写好的 Map 函数,因为一个分片对应一个 Map 任务,并且是对应一个文件块,所以这里其实是数据本地化的操作,也就是所谓的移动计算而不是移动数据。如图 1-7 所示,这里的操作其实就是把每句话进行分割,然后得到每个单词,再对每个单词进行映射,得到单词和1的键值对。

4.Shuffle 阶段:这是“奇迹”发生的地方,MapReduce 的核心其实就是 Shuffle。那么 Shuffle 的原理呢?Shuffle 就是将 Map 的输出进行整合,然后作为 Reduce 的输入发送给 Reduce。简单理解就是把所有 Map 的输出按照键进行排序,并且把相对键的键值对整合到同一个组中。如上图所示,Bear、Car、Deer、River 是排序的,并且 Bear 这个键有两个键值对。

5.Reduce 阶段:与 Map 类似,这里也是用户编写程序的地方,可以针对分组后的键值对进行处理。如上图所示,针对同一个键 Bear 的所有值进行了一个加法操作,得到 这样的键值对。

6.输出:Reduce 的输出直接写入 HDFS 上,同样这个输出文件也是分块的。

用一张图表示上述的运行流程:MapReduce 的本质就是把一组键值对 经过 Map 阶段映射成新的键值对 ;接着经过 Shuffle/Sort 阶段进行排序和“洗牌”,把键值对排序,同时把相同的键的值整合;最后经过 Reduce 阶段,把整合后的键值对组进行逻辑处理,输出到新的键值对 。这样的一个过程,其实就是 MapReduce 的本质。

学Hadoop你必须要知道的

Hadoop MapReduce 可以根据其使用的资源管理框架不同,而分为 MR v1 和 YARN/MR v2 版本。

在 MR v1 版本中,资源管理主要是 Jobtracker 和 TaskTracker。Jobtracker 主要负责:作业控制(作业分解和状态监控),主要是 MR 任务以及资源管理;而 TaskTracker 主要是调度 Job 的每一个子任务 task;并且接收 JobTracker 的命令。

在 YARN/MR v2 版本中,YARN 把 JobTracker 的工作分为两个部分:

ResourceManager 资源管理器全局管理所有应用程序计算资源的分配。

ApplicationMaster 负责相应的调度和协调。

NodeManager 是每一台机器框架的代理,是执行应用程序的容器,监控应用程序的资源(CPU、内存、硬盘、网络)使用情况,并且向调度器汇报。

学Hadoop你必须要知道的

4.3 Hadoop资源管理–YARN

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读