Day03_02_HDFS技术细节
Day03_02_HDFS技术细节
SmithHDFS技术细节
一、HDFS — Hadoop Distributed File System(Hadoop分布式文件系统)
1、HDFS是Hadoop提供的一套用于分布式存储的文件系统
2、为了方便使用仿照Linux系统设计的一套文件系统
3、HDFS是典型的主从结构 — NameNode(主节点)和DataNode(从节点)
4、HDFS在存储文件的时候会真实的对文件进行物理切分 – Hadoop2.x版本所切分的每一个数据块是128MB
5、在HDFS中会自动对数据进行备份,这个备份称之为副本,在完全分布式中默认的副本数量为3,但是在伪分布
式中副本数量只能为1
Block
1、Block是HDFS中的数据存储的基本单位,即一个文件在HDFS中是由一个或者多个Block组成
2、Block的大小默认是128MB,在Hadoop1.x版本中默认是64MB
3、如果一个文件本身不到Block的大小,那么这个文件是多大则对应的Blokc就是多大
4、HDFS会对Block进行编号 — Block ID
5、物理切块的意义:①能够存储超大文件 ②能够快速的备份
NameNode
1、NameNode是HDFS中的主节点(核心)
2、NameNode的职责:
①管理DataNode
②记录元数据(metastore)
3、元数据(描述数据的数据)包含:
①文件的存储位置
②文件的权限
③文件的大小
④Block的大小
⑤Block ID
⑥副本数量
4、元数据是存储在磁盘和内存中
①在内存中的目的是为了查询快
②在磁盘中的目的是为了崩溃恢复
5、NameNode通过心跳机制来管理DataNode
6、默认情况下DataNode发送心跳每隔3s给NameNode
动态的校验DataNode的状态 — 是否存活、当前DataNode的存储压力
DataNode
1、负责数据的存储节点,存储的是Block
2、DataNode将Block存储在磁盘上,在磁盘上的位置是由hadoop.tmp.dir属性决定的
3、DataNode会定时的向NameNode发送心跳
HDFS的常用命令
①hadoop fs -put test.txt / —-> 将当前目录下的test.txt文件上传至HDFS的根目录
②hadoop fs -put test.txt /demo.txt —-> 将当前目录下的test.txt上传至HDFS的根目录并且重命名为demo.txt
③hadoop fs -mkdir /log —-> 在HDFS的根目录下创建子目录log
④hadoop fs -get /demo.txt /home/software/ —-> 将HDFS的根目录下demo.txt文件下载至/home/software/
⑤hadoop fs -mv /test.txt /ceshi.txt —-> 重命名
⑥hadoop fs -cp /demo.txt /nynu.txt —> 复制文件
⑦hadoop fs -ls / —> 查看HDFS根目录下的子文件或者子目录
⑧hadoop fs -rmdir /log —> 删除HDFS根目录下的log子目录,要求被删除的目录必须为空
⑨hadoop fs -rm /log/demo.txt —-> 将HDFS根目录下的log子目录下的文件删除
⑩hadoop fs -rmr /log —> 将HDFS根目录下的log子目录递归删除(慎用)
垃圾回收机制
1、在HDFS中回收站策略默认是不开启的,即意味着删除文件这个操作会立即生效并且不能撤销
2、如果需要开启回收站策略那么在core-site.xml文件中进行配置
1 | <property> |
3、如果需要从回收站还原数据(本质:从回收站移动至HDFS的根目录并且重命名),执行命令:
1 | hadoop fs -mv /user/root/.Trash/Current/hadoop-2.7.6.tar.gz /hadoop.tar.gz |



