【博学谷学习记录】超强总结,用心分享 | hadoop的组成
【博学谷IT技术支持】
公众号: 积雷山摩云洞,欢迎关注!!!
hadoop的构成
hadoop集群主要包含:HDFS集群、MapReduce、YARN集群。HDFS集群复制海量数据的存储,MapReduce负责海量计算,Yarn集群存在数据运算时的资源调度。
- hdfs集群主要包含了角色nameNode、SecondaryNameNode、DataNode
- yarn集群主要包含了ResourceManager和NodeManager
HDFS的构成
上述可知hdfs包含的角色有nameNode、secondaryNameNode、dataNode,
这里讲述它们各自的作用是什么?
一般来说,hdfs有一个nameNode和多个dataNode组成。这里nameNode是hdfs的主节点,dataNode是从节点。
- NameNode主要职责是管理元数据信息
- secondaryNameNode是负责备份镜像和日志与镜像的定期合并
- dataNode是负责数据具体的存储
hdfs的写流程
- 客户端向服务端发起请求,nameNode进行权限检查。告诉客户端是否可以上传,并返回主机列表
- 客户端对文件进行切片,然后与主机列表建立通信,分别上传block
- 上传完毕,客户端向NameNode汇报,NameNode更新元数据
hdfs的读流程
- 客户端对服务发起请求,nameNode进行权限校验
- nameNode将block列表发送给客户端
- 客户端与主机建立通信,并从读取数据进行合并
mapReduce的构成
mapReduce就是将一个大的计算任务拆分成小的任务,然后在各个计算机中运行,最后再将结果汇总在一起。
mapReduce分为几个阶段?
- 两个阶段分别是Map阶段和Reduce阶段
- map阶段负责任务的拆分
- reduce阶段负责任务的汇总
mapReduce的工作流程
mapReduce的工作流程可以分为3个阶段:
分别是map阶段
、shuffle阶段(分区、排序、Combiner、分组)
、reduce阶段
map阶段
将k1,v2
转化为k2,v2
最后以键值对的方式输出
shuffle阶段
- 分区:对k2打标记,相同标记的数据会分到一个区,同一个区数据被同一个reduce来取
- 排序:只能根据k2进行排序,因此关键字段必须在k2中包含。实现WritableComparable接口,该类中必须满足能够序列化和反序列化,且读写顺序一直
- combiner: 提前对每个map的数据进行聚合,减少Nap端和Reduce端网络传输的数据量
- 分区: 默认根据K2来决定,相同的k2的数据会被分到同一个组。没有指定分组会默认调用k2类中的compareTo方法。
reduce阶段
继承Reducer类,重写reduce方法,把方法中的k2,v2
转化为k3,v3
yarn的构成
我们知道yarn包含ResourceManager和nodeManager角色,它是一个主从架构,ResourceManager是主节点,NodeManager是从节点
ResourceManager和NodeManager的作用是什么
- ResourceManager负责整个集群的所有资源的统一管理和调度,接收NodeManager的资源汇报信息,并将这些信息按照一点策略分配给ApplicationManager
- NodeManager负责任务的执行,同时会定期向ResourceManager汇报资源使用情况
ApplicationManager的作用
- 负责接收job的提交请求,为应用分配第一个Container来运行ApplicationMaster
- 监控ApplicationMaster
yarn的调度器有哪些?
- FIFO:队列调度器,按队列执行job,容易造成阻塞。
- Capacity Scheduler: 容器调度器,将资源分成多个队列,每个队列都占用一部分资源。
- Fair Scheduler: 公平调度器,对资源进行平分