学习目标:
- 大数据技术原理与应用
学习内容:
- 分布式文件系统HDFS
- 3.1HDFS简介
- 3.2HDFS相关概念
- 3.3HTFS体系结构
- 3.4HTFS存储元原理
- 3.5HDFS数据读写
- 3.6HDFS编程入门
- 3.7Eclipse安装
学习时间:
2022/03/17
学习产出:
3.1HDFS简介
- 全称:Hadoop Distributed File System
- 实现目标:
兼容廉价的硬件设备;实现流数据读写;支持大数据集;支持简单的文件模型;强大的跨平台兼容性。 - 自身的局限性:
不支持低延迟的数据访问;无法搞笑存储大量小文件;不支持多用户写入及任意修改文件
3.2HDFS相关概念
-
块:为了分摊磁盘读写开销
为什么这么设计:支持面向大规模数据存储;降低分布式节点的寻址开销。
优势:支持大规模存储;简化系统设计;适合数据备份 -
两大组件:名称节点——集群管家、数据节点——实际存储
(1)名称节点:
a.FsImage(保存系统文件树)
b.EditLog(记录对数据进行什么创建、删除等操作)
(2)数据节点:
负责数据存取,保存到本地的Linux文件
3.3HDFS体系结构
- 一个主节点(管家作用),多个数据节点。
- 命名空间管理:目录;文件;块
- 名称节点通信协议:TCP/IP
- 数据节点远程RPC
- 局限性:命名空间限制;性能存在瓶颈;隔离问题;集群的可用性
3.4HDFS存储原理
- 冗余数据保存的问题
(1)加快数据传输速度
(2)很容易检查数据错误
(3)保证数据可靠性 - 数据保存策略问题
- 数据恢复的问题
(1)名称节点出错
(2)数据节点出错
(3)数据本身出错
3.5HDFS数据读写
(1)读数据
- 第一步:打开文件 Distributed FileSystem
- 第二步:获取数据块信息 名称节点
- 第三部:读取请求 FSDataInput Stream
- 第四步:读取数据 数据节点
- 第五步:获取数据块信息(可能发生) 名称节点
- 第六步:读取数据 数据节点
- 循环
- 第七步:关闭文件 FSDataInput Stream
(2)写数据
- 第一步:创建文件请求 Distributed FileSystem
- 第二步:创建文件元数据 名称节点
- 第三部:写入数据 FSDataInput Stream
- 第四步:写入数据包 数据节点
- 循环
- 第五步:接收确认包 FSDataInput Stream
- 第六步:关闭文件 FSDataInput Stream
3.6HDFS编程入门
3.6.1 HDFS常用命令
- 三种shell命令方式
(1)hadoop fs 适用于不同的文件系统
(2)hadoop dfs 只适用于hdfs文件系统
(3)hdfs dfs 只适用于hdfs文件系统
- 启动
$ cd /usr/local/hadoop # 进入安装目录
$ ./sbin/start