Hadoop学习

Hadoop是什么

开源分布式计算框架,用于存储和处理大规模数据集

Hadoop优势

1)高可靠:通过多副本存储确保数据安全,某个节点出现故障,不会导致数据丢失
2)高扩展:可以通过增加节点扩展存储和计算能力
3)高效:并行计算,加快任务处理速度
4)高容错:能够自动将失败的任务重新分配
5)成本低:可在廉价硬件上运行

Hadoop核心组件

HDFS分布式文件系统、MapReduce分布式离线计算系统、Yarn分布式集群资源管理、Common模块

HDFS

用于存储大规模数据,将大型数据集分成块存储在多个节点上,每个数据块会复制多份到不同节点上,提高可靠性。HDFS主要有NameNode和DataNode组成,NameNode主要用于管理HDFS,DataNode主要用于存储文件,SecondaryNameNode用于辅助NameNode。


HDFS架构
NameNode

NN是一个中心服务器,负责管理文件系统的命名空间以及客户端对文件的访问,其中存储了文件的元数据,所有的文件系统操作(读、写、删除)都由NN控制。元数据主要由Fsimage和Edits两个文件组成。
Fsimage:文件系统元数据的一个完整的永久性检查点,包含文件系统中所有目录和文件信息,如文件名、文件大小、文件路径、文件副本数目、文件与Block的映射关系,以及Block与DN的映射关系。可用于快速回复文件系统状态。NN会定期将Edits文件和Fsimage进行合并,生成新的Fsimage
Edits:记录了文件系统的所有变更操作,例如文件创建、删除、修改。它是一个日志文件,记录了上一次Fsimage生成以来的所有文件系统变更操作。

NN的容错机制有两种:
1)将持久化存储在本地硬盘的文件系统元数据备份
2)借助SNN(SecondaryNameNode),定期备份NN元数据,用于恢复NN

DataNode

用于在本地文件系统存放数据,向NN报告存储信息,定期向NN发送心跳,确保数据块的完整性和可用性。DN的基本单位是块(block),默认128M。在HDFS上会保存数据的副本,默认是3个

HDFS写流程

HDFS写流程

1)客户端通过DFS模块向NN请求上传文件,NN检查目标文件是否已存在,目录是否存在
2)NN返回是否可以上传
3)客户端请求第一个Block(包含0-128的数据),询问NN可以上传到哪几个DN节点上
4)NN返回3个DN,分别为dn1、dn2、dn3,表示这些节点可以存储
5)客户端通过FSDOS模块请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成,dn3、dn2、dn1逐级应答客户端
6)客户端开始往dn1上传第一个Block,已Packet为单位,dn1收到一个Packet会传给dn2,db2传给dn3,dn1每传一个Packet会放入一个应答队列等待应答
7)当一个Block传输完成之后,客户端在请求NN上传第二个Block,重复步骤3-6

HDFS读流程

HDFS读流程

1)客户端通过DFS模块向NN请求下载文件,NN通过查询元数据,找到文件所在的DN地址
2)挑选最近的DN节点,请求读取数据
3)DN开始传输数据给客户端
4)客户端接收数据写入目标文件

MapReduce

MapReduce分布式离线计算框架,将用户编写的业务逻辑代码和自动默认组件整合成一个完整的分布式运算程序,并发运行在Hadoop集群上。MapReduce计算=Map阶段+Reduce阶段

MapReduce执行流程

1)输入分片:输入数据被分割成多个分片,每个分片通过对应一个Map任务
2)Map阶段:Map任务读取输入分片,转换成键值对,用户定义的Map函数处理这些键值对,生成中间键值对
3)Shuffle阶段:将Map输出的中间键值对根据键进行分区、排序、合并,然后发送给相应的Reduce任务
4)Reduce阶段:接受经过Shuffle阶段后的数据,经过用户定义的Reduce函数处理,得到最终结果
5)结果输出:Reduce阶段输出的结果会被写到HDFS


MapReduce执行流程

Yarn

YARN(Yet Another Resource Negotiator)用于集群资源管理和作业调度,是 Hadoop 的第二代资源管理器。YARN 主要由 ResourceManager、NodeManager、ApplicationMaster 和 Container 等组件构成。
ResourceManager(RM):整个集群资源(内存、CPU等)的管理者
NodeManager(NM):单个节点资源的管理者
ApplicationMaster(AM):单个任务运行的管理者
Container:容器,相当于一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等


Yarn架构
Yarn执行流程

作业提交
1.客户端向RM提交作业并申请一个作业ID
2.RM向客户端返回作业ID以及作业资源的提交路径
3.客户端提交jar包、切片信息和配置文件到指定的资源提交路径
4.资源提交完毕,向RM发送执行作业请求
作业初始化
5.RM收到客户端的请求后,将该作业添加到调度器队列中
6.空闲的NM就会领取到该作业
7.NM会创建Container
8.Container会启动AM,下载作业资源到本地
任务分配
9.AM向RM申请运行MapTask资源
10.RM将MapTask分配给空闲的NM,NM领取到任务会创建Container
任务运行
11.AM向NM发送运行脚本,NM执行MapTask
12.AM等所有MapTask运行完,向RM申请容器,运行ReduceTask
13.ReduceTask获取MapTask相应分区的数据
14.所有任务完成之后,AM会向RM申请注销自己
作业完成
框架会更新作业计算的进度和状态

Yarn执行流程

参考资料

Hadoop的入门学习(理论知识)
图解 Hadoop 架构 |Yarn、MapReduce
大数据资源调度框架--Yarn

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Hadoop是什么 1)Hadoop是一个由Apache基金会所开发的分布式系统基础架构 分布式系统,一份工作...
    一颗西蓝花_阅读 1,625评论 0 0
  • 四、hadoop之HDFS 4.1HDFS的定义 HDFS定义:分布式文件系统 HDFS使用场景:一次写入,多次读...
    不吃海带吃海苔阅读 3,043评论 0 4
  • HADOOP框架 大数据技术解决的是什么问题? 解决海量数据的存储和计算 Hadoop的广义和狭义之分 狭义的Ha...
    啦啦啦喽啰阅读 3,858评论 0 0
  • 一、HDFS Hadoop中的分布式文件系统,高容错(数据库blcok备份),可扩展,适合存储大文件,不适合存储小...
    Tu_jc阅读 1,183评论 0 0
  • @Hadoop 试题一 单选题 1、Hadoop 的作者(C) A:Martin Fowler #敏捷开发方法论-...
    jiangliu阅读 10,300评论 0 0