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)
2.Hadoop程序运行
hadoop使用打包好的jar包运行程序,运行命令如下:
hadoop/yarn jar [jar_file] [parameters]
如运行计算pi的example程序,如下:
yarn jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar pi 4 10000