hdfs的设计目标:单台机器的存储问题
hdfs的架构图:主从架构
namenode:主节点,接收用户请求,管理元数据信息
datanode:从节点,存储数据,出磁盘
secondaryNanmenode:辅助namenode管理元数据信息,合并fsimage与edits文件
如果namenode是HA的模式:(active与standby)
journalnode:负责从节点与备份节点的元数据的共享问题
zkfc:zkFailoverController守护进程,监看namenode的健康状况
w文件的副本机制与block块:
文件的副本机制:解决了如何保证数据不丢失的问题
block块存储:默认128M
hdfs的元数据管理fsimage与edits
fsimage:存放了一份比较完整的元数据信息,元数据存放在两个地方,一个是磁盘文件,一个是内存
edits:最近一段时间的操作日志,时间长短1小时,文件大小64M
secondaryNamenode:edits文件达到触发合并的条件,snn就开始工作
1:通知nn切换edits文件
2:通过http请求,获取fsimage与edits文件
3:将fsimage与edits文件加载到内存当中进行合并,形成最新的fsimage文件
4:将新的fsimage文件发送到nn替换掉旧的fsimage文件
hdfs的写入过程;
1:客户端请求namenode上传文件
2:namenode校验客户端是否能够上传
3:客户端请求namenode第一个block块上传位置
4:namenode通过机架感知原理,找到离客户端最近的一个block块的位置,告诉给客户端
5:与datanode建立长连接pipeline管道,客户端以packet(64kb)的方式发送数据到datanode上面去
6:第一个block块上传完成,给客户端一个ack的反馈机制,继续传送第二个block块
8、文件的读取过程
1:客户端请求namenode读取数据
2:namenode校验文件是否存在,权限是否正确,返回给客户端一个block块的列表地址
3:客户端获取到block块的地址后,与datanode建立通信,读取所有的block块
4:客户端将block块进行拼接
MapReduce
yarn资源管理器
resourcemanager:主节点,接收用户请求,分配资源
nodemanager:从节点,接收分配的任务,执行具体的任务
applicationMaster:每个任务resourcemanager都会启动一个APPmaster来进行全权的管理,主要负责资源的申请,任务的分配,任务进度的执行情况
MapReduce设计构思:
map阶段:主要负责分开,将大的任务划分成小任务
reduce阶段:主要负责合并,将map阶段处理完成的结果进行汇总
MapReduce的编程规范:
1:读取文件,解析成key、value对,TextInputFormat
2:自定义map逻辑,接收k1,v1,转换成
k2,v2进行输出
shuffle阶段的四个步骤
3:分区,相同key的value发送到同一个reduce里面去,相同key合并,value形成一个集合
4:排序
5:规约
6:分组
reduce阶段的两个步骤
7:自定义reduce逻辑,接收k2,v2,转换成新的k3,v3进行输出
8:输出我们k3,v3,TextOutFormat