Hadoop之HDFS01【介绍】

简介: HDFS(Hadoop Distributed File System)分布式文件系统。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。


 HDFS(Hadoop Distributed File System)分布式文件系统。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。

存储模型

 假如我们有一个10T的文件要存储,而我们的硬盘空间只有1个T,那么这时候我们可以将这个10T的文件切成10个1T的文件来分别存储在10个硬盘中,HDFS的存储的原理其实也是这样的,将一个大文件进行线性切割成快(Block)然后存放在不同的服务器上,但很快你又会提出一个问题,如果一个字比如“存”在UTF-8当中占3个字节,而恰巧一个服务器存了1个字节而另外的2个字节存到了别的服务器上,这会出现我们使用的时候出现乱码,这个问题呢HDFS也帮我们解决了。后面会提到副本,相当于把文件克隆然后会进行一个修复操作。然后不同的文件分布到了不同的服务器上,所以是只允许写一次可以多次读取,那么HDFS存储模型的特点也就明显了。

image.png

序号 特点

1 文件线性切割成块(Block):偏移量 offset (byte)

2 Block分散存储在集群节点中

3 单一文件Block大小一致,文件与 文件可以不一致

4 Block可以设置副本数,副本分散在不同节点中

副本数不要超过节点数量(超过多余的副本会重复将浪费空间)

5 文件上传可以设置Block大小和副本数

6 已上传的文件Block副本数可以调整,大小不变

7 只支持一次写入多次读取,同一时刻只有一个写入者(避免修改后要变动后面所有节点的偏移量)

8 可以append追加数据

上传文件指定block大小和副本数量

hadoop fs -Ddfs.replication=2 -put a.txt /

image.png

hadoop fs -Ddfs.blocksize=67108864 -put fun1.sh  /

image.png

已上传的文件Block副本数可以调整,大小不变

[root@hadoop-node01 ~]# hadoop fs -setrep -w 3 /fun1.sh
Replication 3 set: /fun1.sh
Waiting for /fun1.sh .... done

image.png

image.png

append追加数据

hadoop fs -appendToFile b.txt /a.txt

image.png

image.png

架构模型

image.png

   文件元数据MetaData,文件数据

   元数据

   数据本身

   (主)NameNode节点保存文件元数据:单节点 posix

   (从)DataNode节点保存文件Block数据:多节点

   DataNode与NameNode保持心跳,提交Block列表

   HdfsClient与NameNode交互元数据信息

   HdfsClient与DataNode交互文件Block数据

NameNode

 存储元数据(MetaData),不存储具体的block

序号 特点

1 基于内存存储,不和硬盘发生交互

2 持久化

NameNode主要功能:

序号 功能

1 接受客户端的读写服务

2 收集DataNode汇报的Block列表信息

3 NameNode保存metadata信息包括:文件owership和permissions,文件大小,

时间(Block列表:Block偏移量),位置信息

NameNode持久化

   NameNode的metadate信息在启动后会加载到内存

   metadata存储到磁盘文件名为”fsimage”

   Block的位置信息不会保存到fsimage

   edits记录对metadata的操作日志。。。

DataNode

 本地磁盘目录存储数据(Block),文件形式,同时存储Block的元数据信息文件,启动DN时会向NN汇报block信息,通过向NN发送心跳保持与其联系(3秒一次),如果NN 10分钟没有收到DN的心跳,则认为其已经lost,并copy其上的block到其它DN

image.png

HDFS优缺点

优先

   高容错性

   数据自动保存多个副本

   副本丢失后,自动恢复

   适合批处理

   移动计算而非数据

   数据位置暴露给计算框架(Block偏移量)

   适合大数据处理

   GB 、TB 、甚至PB 级数据

   百万规模以上的文件数量

   10K+ 节点

   可构建在廉价机器上

   通过多副本提高可靠性

   提供了容错和恢复 机制

缺点

   低延迟数据访问

   比如毫秒级

   低延迟与高吞吐率

   小文件存取

   占用NameNode 大量内存

   寻道时间超过读取时间

   并发写入、文件随机修改

   一个文件只能有一个写者

   仅支持append


相关文章
|
3月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
204 6
|
3月前
|
SQL 分布式计算 监控
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
75 3
|
3月前
|
SQL 分布式计算 Hadoop
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
59 4
|
3月前
|
分布式计算 资源调度 Hadoop
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
126 3
|
3月前
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
55 2
|
3月前
|
SQL
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(二)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(二)
48 2
|
3月前
|
分布式计算 Hadoop 网络安全
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
48 1
|
3月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
122 0
|
3月前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
57 0
|
3月前
|
SQL 分布式计算 关系型数据库
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
72 0

相关实验场景

更多