大数据学习教程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 优点
- 多副本
- 存储大数据
- 对机器没有要求
3.2 HDFS 组成
- NN
- 管理HDFS名称空间
- 管理副本策略
- 管理块的映射信息
- 处理客户端请求
- DN
- 存储数据块
- 执行读写操作
- 2NN
辅助NN,定期合并Fsimage和Edits,并推送给NN
可恢复一部分NN数据
- 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();
- 配置文件优先级顺序
code configuration > resource xxx-site.xml > {HDOOP_HOME}/etc/hadoop/xxx-site.xml > {HDOOP_HOME}/etc/hadoop/xxx-default.xml
- 常用API
API 函数名称 | 函数含义 |
---|---|
copyFromLocalFile | 上传 |
copyToLocalFile | 下载 |
delete | 删除文件和目录 |
rename | 移动或更名 |
listStatus | 获取指定目录一级列表 |
listFiles | 获取指定目录全部文件列表 |
isDirectory | 判断路径是否是目录 |
3.5 HDFS 读写流程
- 读数据流程
- client 向NN 请求上传
- NN 响应可以上传(检查权限和路径是否存在)
- client 请求上传第一个Block,请求返回DN节点
- NN 响应三个DN节点(DN1,DN2,DN3)
- client 向DN1请求建立Block传输通道,DN1 再与DN2、DN3建立通道
- DN3、DN2、DN1 响应 应答成功
- client 向DN1 传输数据Packet(64K)
- DN1 数据一份存入磁盘,一份存入内存,内存的那份在分发给DN2、DN3
- DN节点回复 client ack响应,存储成功
- 重复第5步往下,发送第二个Block,直至文件上传成功!
节点距离计算:两个节点的距离为节点到共同祖先的距离之和
存储副本选择策略:
- 本机节点
- 其他机架一个节点,保证可靠性
- 其他机架另一个节点
存储副本策略源码在:
Class:BloclPlacementPlolicyDefault
function: chooseTargetInOrder()
- 读数据流程
client 向NN 请求下载
NN 响应文件元数据
client 请求 DN读数据Block1(串行读数据)
DN 传输数据给client
client 接收到所有的Block后,合并文件
关闭资源
3.6 HDFS NN和2NN
NN元数据:一份在内存,一份在磁盘【fsImage+Edits】
2NN: 合并【fsimage+edits】
- NN 和2NN具体工作流程
- 启动时,NN将 fsimage+edits 加载进内存
- 当client 对元数据进行增删改请求时
- NN 记录操作日志【edits_inprogesss_xxx】、更新滚动日志【edit_inprogress_xxx -> edits_xxx】
- NN 在内存进行数据增删改
- 2NN 请求是否需要checkpoint
- 当满足checkpoint条件(定时默认一小时到了/edits满了),2NN请求执行checkpoint
- NN 滚动正在写的edits,记录新的操作日志
- 2NN 从NN拷贝【fsimage+edits_xxx】
- 2NN 加载到内存进行合并,生成fsimage.checkpoint
- 2NN 拷贝文件到NN
- NN 把fsimage.checkpoint 更名为fsimage
- 下次启动时时,只需要把【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
流程
client 向NN 请求下载
NN 响应文件元数据
client 请求 DN读数据Block1(串行读数据)
DN 传输数据给client
client 接收到所有的Block后,合并文件
关闭资源
3.6 HDFS NN和2NN
NN元数据:一份在内存,一份在磁盘【fsImage+Edits】
2NN: 合并【fsimage+edits】
- NN 和2NN具体工作流程
- 启动时,NN将 fsimage+edits 加载进内存
- 当client 对元数据进行增删改请求时
- NN 记录操作日志【edits_inprogesss_xxx】、更新滚动日志【edit_inprogress_xxx -> edits_xxx】
- NN 在内存进行数据增删改
- 2NN 请求是否需要checkpoint
- 当满足checkpoint条件(定时默认一小时到了/edits满了),2NN请求执行checkpoint
- NN 滚动正在写的edits,记录新的操作日志
- 2NN 从NN拷贝【fsimage+edits_xxx】
- 2NN 加载到内存进行合并,生成fsimage.checkpoint
- 2NN 拷贝文件到NN
- NN 把fsimage.checkpoint 更名为fsimage
- 下次启动时时,只需要把【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
存储数据、数据长度、校验和、时间戳
- 工作流程
- DN 启动后向NN注册
- NN 告知DN 注册成功
- DN每周期(6h)自查,然后向NN上传所有块信息
- NN 与DN 保持心跳机制(3s),正常工作中
- 当超过默认值10min+30s没有收到DN 的心跳,则NN 判定DN 不可用
3.8 HDFS 数据完整性
对待上传的数据加一个校验位,crc校验位,类似于奇偶校验
大数据学习教程SD版第三篇【Hadoop HDFS】相关推荐
- 大数据学习路线2019版(附全套视频教程及网盘下载)
什么是大数据? 大数据(BIG DATA)是指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力的海量.高增长率和多样化的 ...
- 大数据技术原理与应用 第三篇 大数据处理与分析(三)Spark
一. Spark简介 Spark最初由美国加州伯克利大学(UCBerkeley)的AMP实验室于2009年开发,是基于内存计算的大数据并行计算框架,可用于构建大型的.低延迟的数据分析应用程序 1.1 ...
- 大数据学习笔记30:搭建高可用Hadoop集群
文章目录 一.准备工作 1.由CentOS7克隆三个虚拟机 2.设置虚拟机主机名 (1)设置虚拟机master主机名 (2)设置虚拟机slave1主机名 (3)设置虚拟机slave2主机名 (4)重启 ...
- 大数据学习笔记11:搭建完全分布式Hadoop
文章目录 一.搭建服务器集群 1.创建三台虚拟机 2.配置静态IP地址 3.查看主机名 4.配置主机IP映射 5.查看防火墙状态 6.关闭SeLinux安全机制 7.查看三台虚拟机相互免密登录 8.安 ...
- 大数据学习路线(完整详细版)
大数据学习路线(完整详细版) 文章目录 大数据学习路线(完整详细版) 大数据学习路线 一.Linux 二.Hadoop 三.机器学习/R 四.storm 五.Spark 六.Python 七.云计算平 ...
- 大数据学习笔记:Hadoop生态系统
文章目录 一.Hadoop是什么 二.Hadoop生态系统图 三.Hadoop生态圈常用组件 (一)Hadoop (二)HDFS (三)MapReduce (四)Hive (五)Hbase (六)Zo ...
- 自学大数据者请进:大数据学习线路及各阶段学习书籍推荐
大数据学习路线及各阶段学习书籍推荐!废话不多说,直接切入主题,有需要的小伙伴可以参考学习! 阶段一.大数据基础--java语言基础方面 自学大数据者请进:大数据学习线路及各阶段学习书籍.视频推荐 (1 ...
- 大数据学习路线图 让你精准掌握大数据技术学习
大数据指不用随机分析法这样捷径,而采用所有数据进行分析处理的方法.互联网时代每个企业每天都要产生庞大的数据,对数据进行储存,对有效的数据进行挖掘分析并应用需要依赖于大数据开发,大数据开发课程采用真实商 ...
- 【初识大数据】4、大数据学习路线
文章目录 大数据学习路线 1.1 基础 1.2 Hadoop 1.3实时计算 1.4 Spark 大数据学习路线 1.1 基础 1.基础JAVA语言(Java SE) 变量 类型 循环 if 面向对象 ...
- 200G大数据学习资料全有!寒假赶紧学一学!
从各种各样类型的数据中,快速获得有价值信息的能力,就是大数据技术.阿里巴巴创始人马云曾经在演讲中就提到:未来的时代将不是IT时代,而是大数据的时代. 数据科学家也被称为21世纪最有前景的职业之一,相关 ...
最新文章
- python变量类型-【干货】Python基础语法之变量类型
- 网络编程--sockaddr 与 sockaddr_in
- 瀑布式开发、迭代式开发、螺旋开发、敏捷开发四种开发模式的区别
- 隐藏文件始终不能显示的完美解决方法
- 【kafka】 kafka 0.10报错IOException: Connection to 1 was disconnected before the response was read
- delphi switch语句例子_Python系列之常用语句
- 使用SVN clang: error: linker command failed with exit code 1 (use -v to see invocation)
- 安装包时后面的参数以及简写
- 微信-连接一切的力量
- 【转】极品免费网站空间申请:000webhost.com免费1.5G美国空间PHP+MySQL
- ROS激光雷达小车自主导航学习(一)(持续更新中)
- qemu教程_QEMU实例教程
- Hyperledger Fabric 2.3环境配置搭建指南及BUG记录
- 盘点春节营销刷屏的那些痛点指南!
- 一元二次曲线拟合的最小二乘python实现
- 格灵深瞳IPO获同意:毛利率远高于行业均值,营收增速开始下滑
- 新电脑win10 改win7 要注意
- PFC 5.0 离散元中的 wall history,监测位移和力
- 迪杰斯特拉(Dijkstra)(详细讲解+Java源码)
- Lenovo x3650m5安装ESXi5.5