MapReduce
计算框架
- map 处理块及切片文件,map有多个,可以并行。
- map的数量由切片决定
- reduce将处理后的文件聚合为一个大文件
- reduce的数量由使用者决定
- shuffle
- 从各map中抓取K相同的数据,
map
- 读懂数据
- 映射为KV模型
- 并行分布式
- 计算向数据移动
reduce
- 数据 全量/分量 加工
- reduce中可以包含不同的k
- 相同的K汇聚到同一个reduce中
- 相同的K调用一次reduce方法
- 排序实现K的汇聚
K、V 使用自定义数据类型
- 作为参数传递,节省开发成本,提高程序自由度
- writeable序列化:使能分布式程序数据交互
- comparable比较器:实现具体排序(字典序、数值序等)
Hadoop 1.x 运行架构---体现 计算向数据移动
- 流程
- 客户端先启动,分析路径文件,拿到文件的元数据信息,split切片,产生切片清单,以及每个切片的位置信息
- 客户端将信息上传到HDFS
- 客户端交互 job Tracker
- 主节点,job tracker负责调动和监控集群的资源管理
- job tracker分析,调度 task tracker执行map任务,调度时参考资源的使用情况
- task tracker
- 从节点,自身节点资源管理
- 和主节点心跳,汇报资源,获取Task
- client, 客户端以作业为单位,规划作业计算分布
- 提交作业资源到HDFS
- 最终提交作业到job tracker
- 弊端
- job tracker 负载过重,单点故障
- 资源管理与计算调度强耦合,其他计算框架需重复实现资源管理
- 不同框架对资源不能全局管理
计算框架运行流程
![d35e1a29f38324b3c6a992e9576005ae.png](https://img-blog.csdnimg.cn/img_convert/d35e1a29f38324b3c6a992e9576005ae.png)
YARN
资源框架
hadoop 2.x YARN 资源管理器
- 由于1.x中 的弊端,2.x产生了资源管理器 YARN
- yarn:解耦资源与计算
- ResourceManager 集群节点资源管理
- NodeManager管理Container生命周期,计算框架中的所有角色都以Container表示,与ResourceManager 心跳,汇报资源
- Container 节点NM,CPU,MEM, IO大小,启动命令
- 默认NM启动线程监控Container的大小,超出申请资源额度,kill
- kill后有申请重试,一定次数后停止运行,作业失败
- 支持Linux内核的Cgroup
- MR(mapreduce)
- MR-ApplicationMaster-Container
- 作业为单位,避免单点故障,负载到不同的节点
- 创建Task需要和RM申请资源
- 默认NM启动线程监控Container的大小,超出申请资源额度,kill
-
- Task-Container
YRAN配置
- 规划,nodemanager和datanode在同一服务器1:1配置,用于计算
- ResourceManager 约等于 将 NN 和ZKFC 糅合为一个进程
- RS配置文件中开启HA功能
- 配置
- 到 xx/hadoop-2.6.5/etc/hadoop目录下
- cp mapred-site.xml.template mapred-site.xml
- vim mapred-site.xml
- mapreduce.framework.name yarn
- yarn-site.xml
- yarn.nodemanager.aux-services mapreduce_shuffle
- yarn.resourcemanager.ha.enabled true yarn.resourcemanager.cluster-id cluster1 yarn.resourcemanager.ha.rm-ids rm1,rm2 yarn.resourcemanager.hostname.rm1 node03 yarn.resourcemanager.hostname.rm2 node04 yarn.resourcemanager.zk-address node02:2181,node03:2181,node04:2181
- 将修改后的文件分发给其他服务器
- scp mapred-site.xml yarn-site.xml node02:(反斜)pwd(反斜)
- 启动
- start-yarn.sh
- 到RM所在主机 启动RM
- yarn-daemon.sh start resourcemanager
- 浏览器访问测试
- node01:8088
YARN与原来的HDFS 没有任何关系