1. HDFS基本使用
1.1 HDFS的存储目录
HDFS的文件存放在三类节点中,分别为NameNode
、DataNode
、Secondary NmaeNode
,在hdfs-site.xml
中配置的目录分别为/data/hadoop/hdfs/
下的nn
、dn
、snn
。
查看nn
里的文件如下,可以看到nn
中存储有——
- fsimage,记录某一永久性检查点(Checkpoint)时整个HDFS的元信息
- edits,记录所有对HDFS的写信息
- seed_txid,最近一次fsimage或inprogress的transaction ID,通过与最新的transaction ID比较保持数据一致性
- in_use.lock,确保只有一个
NameNode
查看snn
里的文件如下,可以看到snn
中存储有——
- fsimage,edits,in_use.lock,内容与
nn
相同
snn
定期合并fsimage和edits文件,得到新的fsimage,使得重启时nn
可以从该fsimage开始恢复,减少启动时间
查看dn
里的文件如下,可以看到dn
中存储有——
- BP-1172818762-127.0.0.1-1554017610067,blockpool的ip地址和创建时间戳
- current,里面包含实际的HDFS BLOCK数据,包括许多block_xx文件以及相应的.meta文件,.meta文件包含了checksum信息
1.2 HDFS基本命令
HDFS有很多与linux类似的命令,基本使用形式是hdfs dfs -[操作名] -[参数] \[目录]
,或者``hadoop fs -[操作名] -[参数] [目录]`。
hdfs dfs -ls /
,查看HDFS中/
目录下的文件
-
hdfs dfs -rm /user/a
,删除/user
目录下的a
文件
-
hdfs dfs -cat /user/b
,查看/user
目录下的b
文件
-
hdfs dfs -mkdir /user/c/
,创建/user/c
目录
-
hdfs dfs -touchz /user/d
,创建/user/d
文件
-
其他命令可通过hdfs dfs -help
查看
1.3 读取、写入文件
hdfs dfs -get /user/a .
,从/user
下读取a
文件到当前目录
hdfs dfs -put c /user
,将本地的c
文件写入到hdfs的/user
目录中
这两个命令有对应的两个相同命令,如下:(在以前的版本好像是有区别的,不过版本2.6.5已经说了Identical)
Reference
-
Hadoop HDFS本地存储目录结构解析
-
Hadoop视频教程汇总
-
Hadoop大数据平台架构与实践–基础篇_慕课网