hadoop 4.0 知识整理

hadoop

hadoop 是什么

hadoop是一个分布式系统基础架构,主要解决海量数据存储和计算问题。

hadoop 优势

多副本机制保证系统可靠性,处理节点可以动态添加/删除保证系统的可扩展性,MapReduce并行工作保证系统的高效性,失败任务默认重新分配4次执行保证系统的容错性。

hadoop 组成部分

HDFS存储数据,MapReduce分析计算数据,Yarn根据计算任务分发资源。

HDFS 组成部分

NameNode:管理文件块名称列表和对应文件块所在的DataNode,副本数量,权限信息。
DataNode:文件块数据存储的节点,NameNode上维护的信息是DataNode主动发给NameNode的,默认6个小时和hadoop重启会发送。还会主动发送心跳机制,NameNode默认在10分钟+30秒没有收到心跳则判断该DataNode节点不可用。
SecondaryNameNode:NameNode节点的辅助管理节点,辅助追加日志和元数据的合并。

MapReduce 组成部分

Map阶段:并行处理传入数据
Reduce阶段:并行根据分区拉起Map输出结果进行汇总等处理,输出结果。
Shuffle阶段:Map阶段到Reduce阶段的中间部分,主要设置分区或根据key值进行排序/合并或中间文件压缩传输等操作。

Yarn 组成部分

ResourceManager:系统总资源管理器,负责分配任务所需要的资源信息。
NodeManager:任务具体处理地方
Application Master:任务的运行老大,负责任务的执行。
Container:容器封装任务运行要的资源。

hadoop 目录结构

bin目录:存放HDFS,MapReduce,Yarn的操作脚本
etc目录:存放关于HDFS,MapReduce,Yarn,集群等hadoop配置文件。
data目录:存放执行MapReduce函数的执行结果
lib目录:存放hadoop的本地库
sbin目录:存放hadoop启动/停止的脚本
share目录:存放hadoop的依赖库,官方文档 /案例等信息

HDFS文件块大小

HDFS文件块的大小默认为128M,可以修改dfs.blocksize来修改。设置文件块大小的标准和文件块在NameNode节点寻址时间和文件块传输到DataNode磁盘的时间有关,一般磁盘传输时间是寻找时间的100倍。

HDFS写入文件流程

  1. 客户端发送一个上传请求时,第一步发送请求给NameNode节点,确认上传路径是否存在,是否满足创建文件夹权限。
  2. 满足后,第二步根据文件块大小进行切片,发送请求给NameNode请求文件块存储的DataNode节点信息。NameNode根据就近原则选择DataNode节点信息返回。
  3. 第三步建立文件块传输通道将文件存入返回的DataNode节点中。

HDFS读取文件流程

  1. NameNode根据读取文件路径返回该文件的文件块和DataNode的映射信息给客户端。
  2. 客户端根据映射信息和就近原则选择DataNode节点读取文件块,组成最后要读取的文件。

HDFS副本选择位置

副本默认为3份

  1. 第一份副本放在HDFS客户端所在的DataNode节点,如果HDFS客户端在集群外则随机
  2. 第二份副本放在第一份副本不同机架的DataNode节点
  3. 第三份副本放在第二份副本同一机架不同的DataNode节点

自定义bean对象序列化

  1. 实现Writable接口
  2. 设置空参构造
  3. 实现序列化方法和反序列化方法,两者顺序必须一致
  4. 重写toString方法设置备案对象输出结果
  5. 如果bean对象为key值还要实现Comparable接口,因为shuffle过程必须排序。

Map任务数量和Reduce任务数量

Map任务数量由切片数量决定。切片大小默认为文件块大小128M,每个文件单独计算切片数量。
Reduce任务数量由分区数量决定。没有设置默认为1个,可以实现接口自定义分区逻辑。设置0为没有Reduce任务,已Map输出为输出信息。

MapReduce执行流程

  1. 客户端提交前,先将文件进行处理,生成切片Job.split,执行顺序Job.xml,运行jar等临时文件。
  2. Yarn 根据切片数据分配Map任务数量资源信息执行Map任务。
  3. Map任务执行输出数据通过分区处理放入环形缓存区中,环形缓冲区一半存数据,一半存索引,默认大小为100M,当容量超过80%反向回写,并将其80%数据进行快排。同时将溢出的数据进行归并排序写入文件并保证分区内有序。
  4. 当Map任务全部执行完成后,Reduce任务根据分区开始拉取Map任务输出结果,将key值相同的value值放在一起执行Reduce任务,根据输出类型生成文件。

MapJoin和ReduceJoin

关于两个文件数据根据主键关联处理数据方法。
ReduceJoin:自定义bean对象包含文件A和B的全部信息,然后在Reduce任务进行处理。容易导致数据倾斜,不建议使用。
MapJoin:将小文件B的信息存放缓存中,在Map任务中进行处理。

Yarn执行流程

客户端提交一个请求给ResourceManager资源管理器,RM会创建一个Task任务进入队列,然后NodeManager从队列中领取到Task任务后,从HDFS中获取切片,jar等信息创建一个任务容器包含任务管理者MRAppmaster,任务管理者再次向RM申请执行Map和Reduce任务的NodeManager来执行任务。

Yarn调度器

  1. FIFO调度器:单队列,根据提交作业顺序执行,先来先执行
  2. 容量调度器:多队列,队列资源根据占用资源少的先分配原则使用,作业资源根据优先级和提交时间决定,容器资源根据就近原则分配。
  3. 公平调度器:多队列,优先选择资源缺额比例大的使用。

你可能感兴趣的:(hadoop,hadoop,大数据,mapreduce)