文章目录
一 Hadoop 组成
hdfs :分布式文件存储系统
mapreduce:分布式计算框架
yarn:分布式资源调度框架
1 HDFS 组成
NN DN 2NN
NN:NameNode 存储事–存储元数据
1)NN
启动加载 Fsimage+edit.log NN (有了最新元数据信息)—>安全模式(99.9% 有一个DN 报告 他就会推出安全模式)----工作
集群安全模式
2)DN:
集群启动–像NN集群注册获取集群id------然后每1 小时像NN 报告块信息---------心跳 梅3s 一次-----10分钟+30s 如果没有进行沟通NN 就会认为DN 死掉了
详细请见
DataNode 工作机制
https://blog.csdn.net/yidianyidei/article/details/107558560
3)2NN
----帮忙NN 把edits 与FSimage 和并成新的 Fsimage 然后再改会 fsimage(持久化)
2nn 每隔1分钟询问是否需要合并-----(距离上次合并1小时/edits 存有100W 数据)
详细请见
NN 与2NN 之间关系
https://blog.csdn.net/yidianyidei/article/details/107476561
2 数据上传
发送上传数据请求到 NN ---------同意上传---------对数据进行画线 128M (还没切块)----这块128M 发送NN 请求-----同意返回三个DN 副本—顺次发送第一DN
详细请见:
HDFS 上传下载图解
https://blog.csdn.net/yidianyidei/article/details/107476561
3 Mapreduce
核心思想就是Shuffle
过程
文本------切片(128M --判断是否需要切片 按1.1倍看 --真切按128M 切)----打成 看k,v 值(inputFormat 返回 recordreder–把我们切片读成K,V 值)—maptask 调用recordreader 把数据打成k,v值 传输给 mapper–然后context.write(k,v)------输出到环型缓冲区(持续不间断写入 —设计环型原因)-----分区 +排序(在环型缓冲区) -----溢写到文件(分区且有序–在内存)----【shuffle 阶段 第一次排序】------merge 归并排序 由多个小文件合并成一个大文件【第二次排序】-----根据MapTask 启动相应分区数 启动相应redueceTask------将对应maptask分区 下载到对应 reducetask 中----把对应分区中maptask 数据进行-groupingcomparation(k,knext)-逻辑归并排序在一个文件 【第三次排序】—输入reducer 中--------outputFormat (Recorder writer 写出)
前两次排序在 map 阶段完成 最后一次 在reduce 中完成
详细请见
Hadoop-----MapReduce 框架原理(重要)
https://blog.csdn.net/yidianyidei/article/details/107601186
4 Yarn
RM,NM,AM (applicationMaster),Container 组成
1)RM:
1 处理客户端请求
2 监控NM
3 启动或监控 AM
4 资源得分配和调度
2)NM:
1 管理单个节点上的资源
2 处理来自ResourceManger 得命令
3 处理来自 AM 命令
3)AM
1 负责数据切分
2 为应用程序申请资源并分配给内部得任务
3 任务监控与容错
4)Container
运行 AM 以及NM 全部运行在容器中