Hadoop

130 阅读2分钟

1.概述

2.HDFS

2.1 HDFS组成架构

  • HDFS由四部分组成,分别是NameNode、DataNode、Secondary NameNode和Client

  • NameNode(Master)是管理者,用来下达执行命令,主要实现的功能包括:

    • 管理HDFS名称空间
    • 配置副本策略
    • 管理数据块映射信息
    • 处理客户端读写请求
  • DataNode(Slave)是来执行NameNode名称的角色,主要功能包括:

    • 存储数据块
    • 执行数据块的读写操作
  • Seconary NameNode,辅助NameNode,功能是辅助合并fsimage和edits,也可以辅助恢复NameNode

  • Client客户端,与NameNode、DataNode交互,管理HDFS

    • NameNode交互,获取文件的位置信息
    • DataNode交互,读写文件

2.2 HDFS文件块大小

  • 1.x版本是64M,2.x和3.x版本是128M

  • 根据寻址时间和传输时间,权衡确定的。

    • 寻址时间 = 传输时间*0.1
    • 寻址时间为10ms
    • 硬盘速度为100MB/s
  • 块太小,会增加寻址时间;块太大,传输时间会很长

2.3 HDFS写数据流程

  • ①客户端通过Distributed FileSystem向NameNode请求上传文件,NameNode检查文件是否存在,检查父目录是否存在
  • ②NameNode返回是否可以上传结果
  • ③客户端请求第一个Block块上传到哪些DataNode上
  • ④NameNode返回可以上传的结果服务器A、服务器B、服务器C
  • ⑤客户端通过FSDataOutputStream请求服务器A上传数据,A收到请求之后会调用B,B收到请求之后会调用C,构造好通信管道
  • ⑥服务器A、B、C分别逐级应答
  • ⑦客户端向A发送第一个Block块,A收到之后发送给B,B收到之后发送给C
  • ⑧第二个数据块重复以上过程

2.4 HDFS读数据流程

  • ①客户端通过Distributed FileSystem向NameNode请求下载文件,NameNode查询元数据,找到文件块所在的DataNode位置
  • ②就近原则选择一台DataNode服务器,请求读取数据
  • ③选择的DataNode服务器向客户端传输数据
  • ④客户端接收数据,先缓存在本地,然后写入目标文件

3.MapReduce

4.Yarn