大数据学习教程SD版第三篇【Hadoop HDFS】

大数据学习教程SD版第三篇【Hadoop HDFS】,第1张

数据学习教程SD版第三篇【Hadoop HDFS】

文章目录
  • 3.Hadoop HDFS
    • 3.1 HDFS 优点
    • 3.2 HDFS 组成
    • 3.3 HDFS Shell *** 作
    • 3.4 HDFS API *** 作
    • 3.5 HDFS 读写流程
    • 3.6 HDFS NN和2NN
    • 3.7 HDFS DN
    • 3.6 HDFS NN和2NN
    • 3.7 HDFS DN
    • 3.8 HDFS 数据完整性

3.Hadoop HDFS

文件系统,分布式,树型结构,针对文件的读写 *** 作,多副本容错

3.1 HDFS 优点
  1. 多副本
  2. 存储大数据
  3. 对机器没有要求
3.2 HDFS 组成
  1. NN
  • 管理HDFS名称空间
  • 管理副本策略
  • 管理块的映射信息
  • 处理客户端请求
  1. DN
  • 存储数据块
  • 执行读写 *** 作
  1. 2NN
  • 辅助NN,定期合并Fsimage和Edits,并推送给NN

  • 可恢复一部分NN数据

  1. Client
  • 文件切分
  • 从NN获取文件位置
  • 在DN执行读写 *** 作
3.3 HDFS Shell *** 作

hadoop fs -xxx or hdfs dfs -xxx

hadoop fs -put xxx /yyy # put xxx to /yyy
hadoop fs -appendToFile xxx /yyy/xxx # append xxx to xxx end
hadoop fs -get /yyy/xxx xxx # get xxx to xxx
hadoop fs -ls /xxx
hadoop fs -mkdir /xxx  # mkdir
hadoop fs -cat /yyy/xxx
hadoop fs -chmod 777 -R /yyy # chmod
hadoop fs -cp  /xxx /yyy # cp
hadoop fs -mv  /xxx /yyy # mv
hadoop fs -tail /yyy/xxx
hadoop fs -rm /yyy  # 删除/yyy 文件夹下文件
hadoop fs -rm -r /yyy # 删除/yyy 文件夹及文件夹下文件
hadoop fs -du -h /yyy  # 统计文件夹文件大小 -s
3.4 HDFS API *** 作

需要先在工作环境(windows)配置hadoop的环境变量,需要一个额外的winutils.exe放置在bin目录下

		// 1.fs        
		URI uri = new URI("hdfs://hadoop102:8020");
        Configuration conf = new Configuration();
        String user = "root";
        FileSystem fileSystem = FileSystem.get(uri, conf, user);

        // 2.transform

        // 3.close
        fileSystem.close();
  1. 配置文件优先级顺序
code configuration > resource xxx-site.xml > {HDOOP_HOME}/etc/hadoop/xxx-site.xml > {HDOOP_HOME}/etc/hadoop/xxx-default.xml
  1. 常用API
API 函数名称函数含义copyFromLocalFile上传copyToLocalFile下载delete删除文件和目录rename移动或更名listStatus获取指定目录一级列表listFiles获取指定目录全部文件列表isDirectory判断路径是否是目录 3.5 HDFS 读写流程
  • 读数据流程
  1. client 向NN 请求上传
  2. NN 响应可以上传(检查权限和路径是否存在)
  3. client 请求上传第一个Block,请求返回DN节点
  4. NN 响应三个DN节点(DN1,DN2,DN3)
  5. client 向DN1请求建立Block传输通道,DN1 再与DN2、DN3建立通道
  6. DN3、DN2、DN1 响应 应答成功
  7. client 向DN1 传输数据Packet(64K)
  8. DN1 数据一份存入磁盘,一份存入内存,内存的那份在分发给DN2、DN3
  9. DN节点回复 client ack响应,存储成功
  10. 重复第5步往下,发送第二个Block,直至文件上传成功!

节点距离计算:两个节点的距离为节点到共同祖先的距离之和

存储副本选择策略:

  1. 本机节点
  2. 其他机架一个节点,保证可靠性
  3. 其他机架另一个节点

存储副本策略源码在:

Class:BloclPlacementPlolicyDefault

function: chooseTargetInOrder()

  • 读数据流程
  1. client 向NN 请求下载

  2. NN 响应文件元数据

  3. client 请求 DN读数据Block1(串行读数据)

  4. DN 传输数据给client

  5. client 接收到所有的Block后,合并文件

  6. 关闭资源

3.6 HDFS NN和2NN

NN元数据:一份在内存,一份在磁盘【fsImage+Edits】

2NN: 合并【fsimage+edits】

  • NN 和2NN具体工作流程
  1. 启动时,NN将 fsimage+edits 加载进内存
  2. 当client 对元数据进行增删改请求时
  3. NN 记录 *** 作日志【edits_inprogesss_xxx】、更新滚动日志【edit_inprogress_xxx -> edits_xxx】
  4. NN 在内存进行数据增删改
  5. 2NN 请求是否需要checkpoint
  6. 当满足checkpoint条件(定时默认一小时到了/edits满了),2NN请求执行checkpoint
  7. NN 滚动正在写的edits,记录新的 *** 作日志
  8. 2NN 从NN拷贝【fsimage+edits_xxx】
  9. 2NN 加载到内存进行合并,生成fsimage.checkpoint
  10. 2NN 拷贝文件到NN
  11. NN 把fsimage.checkpoint 更名为fsimage
  12. 下次启动时时,只需要把【edits_inprogress_xxx + fsimage】加载进内存即可
  • fsimage和edits 文件内容查看
# 转换fsimage 格式之后,再查看
hdfs oiv -p XML -i fsimage_xxx -o /xxx/xxx/xxx.xml
# fsimage 文件内不存文件块的位置信息,由DN汇报
# 转换edits 格式之后,在查看
hdfs oev -p XML -i edits_inprogress_xxx -o /xxx/xxx/xxx.xml

? DN的文件块信息到底存储再NN的哪里

3.7 HDFS DN

流程

  1. client 向NN 请求下载

  2. NN 响应文件元数据

  3. client 请求 DN读数据Block1(串行读数据)

  4. DN 传输数据给client

  5. client 接收到所有的Block后,合并文件

  6. 关闭资源

3.6 HDFS NN和2NN

NN元数据:一份在内存,一份在磁盘【fsImage+Edits】

2NN: 合并【fsimage+edits】

  • NN 和2NN具体工作流程
  1. 启动时,NN将 fsimage+edits 加载进内存
  2. 当client 对元数据进行增删改请求时
  3. NN 记录 *** 作日志【edits_inprogesss_xxx】、更新滚动日志【edit_inprogress_xxx -> edits_xxx】
  4. NN 在内存进行数据增删改
  5. 2NN 请求是否需要checkpoint
  6. 当满足checkpoint条件(定时默认一小时到了/edits满了),2NN请求执行checkpoint
  7. NN 滚动正在写的edits,记录新的 *** 作日志
  8. 2NN 从NN拷贝【fsimage+edits_xxx】
  9. 2NN 加载到内存进行合并,生成fsimage.checkpoint
  10. 2NN 拷贝文件到NN
  11. NN 把fsimage.checkpoint 更名为fsimage
  12. 下次启动时时,只需要把【edits_inprogress_xxx + fsimage】加载进内存即可
  • fsimage和edits 文件内容查看
# 转换fsimage 格式之后,再查看
hdfs oiv -p XML -i fsimage_xxx -o /xxx/xxx/xxx.xml
# fsimage 文件内不存文件块的位置信息,由DN汇报
# 转换edits 格式之后,在查看
hdfs oev -p XML -i edits_inprogress_xxx -o /xxx/xxx/xxx.xml

? DN的文件块信息到底存储再NN的哪里

3.7 HDFS DN

存储数据、数据长度、校验和、时间戳

  • 工作流程
  1. DN 启动后向NN注册
  2. NN 告知DN 注册成功
  3. DN每周期(6h)自查,然后向NN上传所有块信息
  4. NN 与DN 保持心跳机制(3s),正常工作中
  5. 当超过默认值10min+30s没有收到DN 的心跳,则NN 判定DN 不可用
3.8 HDFS 数据完整性

对待上传的数据加一个校验位,crc校验位,类似于奇偶校验

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5654609.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存