文章目录

  • 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.closefileSystem.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校验位,类似于奇偶校验

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

  1. 大数据学习路线2019版(附全套视频教程及网盘下载)

    什么是大数据? 大数据(BIG DATA)是指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力的海量.高增长率和多样化的 ...

  2. 大数据技术原理与应用 第三篇 大数据处理与分析(三)Spark

    一. Spark简介 Spark最初由美国加州伯克利大学(UCBerkeley)的AMP实验室于2009年开发,是基于内存计算的大数据并行计算框架,可用于构建大型的.低延迟的数据分析应用程序 1.1 ...

  3. 大数据学习笔记30:搭建高可用Hadoop集群

    文章目录 一.准备工作 1.由CentOS7克隆三个虚拟机 2.设置虚拟机主机名 (1)设置虚拟机master主机名 (2)设置虚拟机slave1主机名 (3)设置虚拟机slave2主机名 (4)重启 ...

  4. 大数据学习笔记11:搭建完全分布式Hadoop

    文章目录 一.搭建服务器集群 1.创建三台虚拟机 2.配置静态IP地址 3.查看主机名 4.配置主机IP映射 5.查看防火墙状态 6.关闭SeLinux安全机制 7.查看三台虚拟机相互免密登录 8.安 ...

  5. 大数据学习路线(完整详细版)

    大数据学习路线(完整详细版) 文章目录 大数据学习路线(完整详细版) 大数据学习路线 一.Linux 二.Hadoop 三.机器学习/R 四.storm 五.Spark 六.Python 七.云计算平 ...

  6. 大数据学习笔记:Hadoop生态系统

    文章目录 一.Hadoop是什么 二.Hadoop生态系统图 三.Hadoop生态圈常用组件 (一)Hadoop (二)HDFS (三)MapReduce (四)Hive (五)Hbase (六)Zo ...

  7. 自学大数据者请进:大数据学习线路及各阶段学习书籍推荐

    大数据学习路线及各阶段学习书籍推荐!废话不多说,直接切入主题,有需要的小伙伴可以参考学习! 阶段一.大数据基础--java语言基础方面 自学大数据者请进:大数据学习线路及各阶段学习书籍.视频推荐 (1 ...

  8. 大数据学习路线图 让你精准掌握大数据技术学习

    大数据指不用随机分析法这样捷径,而采用所有数据进行分析处理的方法.互联网时代每个企业每天都要产生庞大的数据,对数据进行储存,对有效的数据进行挖掘分析并应用需要依赖于大数据开发,大数据开发课程采用真实商 ...

  9. 【初识大数据】4、大数据学习路线

    文章目录 大数据学习路线 1.1 基础 1.2 Hadoop 1.3实时计算 1.4 Spark 大数据学习路线 1.1 基础 1.基础JAVA语言(Java SE) 变量 类型 循环 if 面向对象 ...

  10. 200G大数据学习资料全有!寒假赶紧学一学!

    从各种各样类型的数据中,快速获得有价值信息的能力,就是大数据技术.阿里巴巴创始人马云曾经在演讲中就提到:未来的时代将不是IT时代,而是大数据的时代. 数据科学家也被称为21世纪最有前景的职业之一,相关 ...

最新文章

  1. python变量类型-【干货】Python基础语法之变量类型
  2. 网络编程--sockaddr 与 sockaddr_in
  3. 瀑布式开发、迭代式开发、螺旋开发、敏捷开发四种开发模式的区别
  4. 隐藏文件始终不能显示的完美解决方法
  5. 【kafka】 kafka 0.10报错IOException: Connection to 1 was disconnected before the response was read
  6. delphi switch语句例子_Python系列之常用语句
  7. 使用SVN clang: error: linker command failed with exit code 1 (use -v to see invocation)
  8. 安装包时后面的参数以及简写
  9. 微信-连接一切的力量
  10. 【转】极品免费网站空间申请:000webhost.com免费1.5G美国空间PHP+MySQL
  11. ROS激光雷达小车自主导航学习(一)(持续更新中)
  12. qemu教程_QEMU实例教程
  13. Hyperledger Fabric 2.3环境配置搭建指南及BUG记录
  14. 盘点春节营销刷屏的那些痛点指南!
  15. 一元二次曲线拟合的最小二乘python实现
  16. 格灵深瞳IPO获同意:毛利率远高于行业均值,营收增速开始下滑
  17. 新电脑win10 改win7 要注意
  18. PFC 5.0 离散元中的 wall history,监测位移和力
  19. 迪杰斯特拉(Dijkstra)(详细讲解+Java源码)
  20. Lenovo x3650m5安装ESXi5.5

热门文章

  1. MySQL学习笔记.数据的导入和导出
  2. 微信小程序项目源码在线考试系统+后台含论文+PPT+源码
  3. 投资理财之基金四:指数基金
  4. 【网页设计自习室#005】网页页面中banner海报设计
  5. 记录一下wandb的用法
  6. HBuilderX真机模拟uni-app项目 + 上架应用市场
  7. 计算机职称英浯单词背记 app,8款经典背单词软件 帮你轻松过英语6级
  8. 深圳科目二辅城坳 考试心得
  9. 时空大数据面临的挑战与机遇
  10. 梯度消失和梯度爆炸原因及其解决方案