Hadoop常见问题

hdfs文件系统中的角色

NameNode:是HDFS的主节点,负责管理文件系统的命名空间和元数据信息。维护了整个文件系统的目录树结构以及文件和数据块的映射关系
- 重要组件
- fsimage:它是在NameNode启动时对整个文件系统的快照。NameNode启动的时候,会读取fsimage并跟edit logs合并,得到完整的文件系统快照
- edit logs:它是在NameNode启动后,对文件系统的改动序列。改动会通过edit logs写入文件系统
SecondaryNameNode
- 作用:为了避免edit logs文件越来越大,NameNode重启会花费很长时间,SNN的职责是定期合并NameNode的edit logs到fsimage文件中
- 原理:SNN定时到NameNode去获取edit logs,并更新到fsimage上。[笔者注:Secondary NameNode自己的fsimage]。一旦它有了新的fsimage文件,它将其拷贝回NameNode中。NameNode在下次重启时会使用这个新的fsimage文件,从而减少重启的时间。
DataNode:是HDFS的数据节点,负责存储实际的数据块。接收来自客户端或其他DataNode的数据写入请求,并将数据块存储在本地磁盘上。负责处理客户端的数据读取请求,将数据块传输给客户端

hdfs写数据流程

  1. HDFS客户端创建DFSClient,连接NameNode请求写入数据。
  2. NameNode检查权限,并判断该目标文件是否已存在。如果权限许可且目标文件也不存在,NameNode响应请求表示反馈写入。
  3. HDFS客户端对文件惊醒切分,形成block块。客户端请求NameNode询问Block上传到哪几台DataNode服务器上。
  4. NameNode根据机架感知,返回3个(副本数)DataNode节点
  5. HDFS客户端创建FS DataOutputStream数据流对象,请求dn1建立传输通道(pipeline),dn1接收到请求之后会继续调用dn2建立通道…
  6. 传输通道建立完成之后,dn1,dn2,dn3逐级应答客户端。
  7. 客户端开始往dn1上传第一个Block,dn1利用通道传向dn2,dn2利用通道传向dn3…(直到传到Block副本应在的位置停止)
  8. 当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block到服务器。(重复4-7步)

hdfs读数据流程

  1. HDFS客户端创建DFSClient,连接NameNode请求读取数据
  2. NameNode检查权限,如果权限通过,返回DataNode地址列表
  3. HDFS客户端请求列表中DataNode,读取块数据
  4. HDFS客户端读取完块数据,拼接block,生成最终的文件

mapreduce过程介绍

  1. 输入数据切分(InputSplit) → 每个切片由一个 Map Task 处理
  2. Map 阶段:将原始数据转为 (key, value),例如按词频统计:(“word”, 1)
  3. Shuffle 阶段:Map 输出按 key 分发给对应 Reduce 任务,并排序
  4. Reduce 阶段:对相同 key 的值进行聚合(如求和、统计)
  5. 结果输出到 HDFS
作者

jszero

发布于

2025-06-08

更新于

2025-08-09

许可协议

评论