hdfs的shell操作
1.shell的操作命令
hdfs命令有两种风格:hadoop fs、hdfs dfs
两种命令均可使用,效果相同。
1)查看子命令
hadoop fs、hdfs dfs
2)如果查看hdfs或hadoop子命令信息
hdfs dfs -help shellCmd
hadoop fs -help shellCmd
ex:hdfs dfs -help ls 、hadoop fs -help ls
3)查看hdfs文件系统中指定目录文件列表。
hdfs dfs -ls dir
hadoop fs -ls dir
hdfs dfs -ls -R dir #递归显示,显示子文件夹中的文件
ex:hdfs dfs -ls / #显示根目录下的文件以及文件夹
hadoop fs -ls -R / #显示根目录了下所有文件件以及所有子文件夹中的文件
hdfs fs -ls file:/// #列出linux根目录下的文件
4)创建文件
hdfs dfs -touchz file
hadoop fs -touchz file
ex:hdfs dfs -touchz /edits.txt #根目录下创建edits.txt
5)向hdfs中文件追加内容
hdfs dfs -appendToFile linuxFile hdfsFile #将本地linuxFile内容追加到Hdfs的hdfsFile中
hadoop fs -appendToFIle linuxFile hdfsFile
ex:hadoop dfs -appendToFile edits.xml /edits.txt #本地edits.xml内容追加到hdfs中根目录下的edits.txt
6)查看hdfs文件内容
hdfs dfs -cat file
hadoop fs -cat file
hdfs dfs -cat /edits.txt 查看根目录下 edits.txt内容
7)从本地路径上传文件只HDFS
hdfs dfs -put linux文件 hdfs路径
hadoop fs -put linux文件 hdfs路径
hadoop fs -put /abc.txt / #把linux根目录下的abc.txt上传到hdfs根目录下
hdfs dfs -copyFromLocal linux文件 hdfs路径
hadoop fs -copyFromLocal linux文件 hdfs路径
hdfs dfs -copyFromLocal /acb.txt / #跟put一样 把linux根目录下的abc.txt上传到hdfs根目录下
hdfs dfs -moveFromLocal linux文件 hdfs路径
hadoop fs -moveFromLocal linux文件 hdfs路径
hadoop fs -moveFromLocal /abc.txt / #把linux根目录下的abc.txt上传到hdfs根目录下 与put差异是会把linux的文件删除
8)从文件系统中下载文件
hdfs dfs -get hdfs文件 linux路径
hadoop fs -get hdfs文件 linux路径
hdfs dfs -get /abc.txt / #把hdfs根目录下的abc.txt 下载到linux的根目录下
hdfs dfs -copyToLocal hdfs文件 linux路径
hadoop fs -copyToLocal hdfs文件 linux路径
hadoop fs -copyToLocal /abc.txt / #与-get相同,把hdfs根目录下的abc.txt下载到linux的根目录下
9)在hdfs中创建文件夹
hdfs dfs -mkdir 文件夹
hadoop fs -mkdir 文件夹
hdfs dfs -mkdir /shell #在hdfs根目录下创建shell文件夹
10)删除hdfs中的文件
hdfs dfs -rm 文件
hadoop fs -rm 文件
hdfs dfs -rm /abc.txt #删除hdfs根目下的abc.txt
hadoop fs -rm -r /shell #删除hdfs根目录下的shell文件夹
11)修改hdfs中文件名称或修改所属目录
hdfs dfs -mv hdfs目录文件 hdfs目录文件
hadoop fs -mv hdfs目录文件 hdfs目录文件
hdfs dfs -mv /abc.txt /abc.txt /abc.md #将hdfs根目录下的abc.txt修改为abc.md
hadoop fs -mv /abc.md /newdir #将hdfs根目录下的abc.md移动到根目录下的newdir文件夹中
12)把hdfs中的文件拷贝到新的目录
hdfs dfs -cp 目录文件 目录
hadoop fs -cp 目录文件 目录
hdfs dfs -cp /abc.txt /shell #hdfs根目下的abc.txt 复制一份到hdfs根目录下的shell中
13)查找文件
hdfs dfs -find path 匹配模式 查找内容
hadoop fs -find path 匹配模式 查找内容
hdfs dfs -find / -name user #在hdfs的根目录下查找名称是user的文件,name:完全匹配
hadoop fs -find / -iname us* #在hdfs的根目录下查找名称中带有us的文件,iname:模糊匹配
14)总结:
a)输入hadoop fs 或 hdfs dfs,回车查看所有的hdfs的HDFS命令
b)大部分命令和linux命令有很大的相似性,可以举一反三
c)记得使用help,ex:hadoop fs -help ls,查看ls的使用参数
2.hdfs与getconf结合使用
1)获取NameNode的节点名称
hdfs getconf -namenodes
2)获取hdfs最小快信息
hdfs getconf -confKey dfs.namenode.fs-limits.min-block-size #也可以获取其他的属性值
3)查找namenode的RPC地址
hdfs getconf -nnRpcAddresses
3.hdfs与dfsadmin结合使用
1)查看hdfs dfsadmin的帮助信息
hdfs dfsadmin
2)使用help查看具体命令的帮助
hdfs dfsadmin -help 命令
ex:hdfs dfsadmin -help safemode
3)查看当前模式
hdfs dfsadmin -safemode get
4)进入、退出安全模式
hdfs dfsadmin -safemode enter #进入
hdfs dfsadmin -safemode leave #退出
4.hdfs与fsck结合
fsck指令显示HDFS块信息
hdfs fsck /abc.txt -files -blocks -locations #查看hdfs根目录下abc.txt的块信息
5.其他命令
1)检查压缩库本地安装情况
hadoop checknatice
2)格式化名称节点(慎用:一般只在初次搭建集群使用一次,格式化话成功后不要在使用,多次格式化可能会导致namenode与datanode的clusterID不一致导致datanode无法启动,需要保持一致)
hadoop namenode -format
3)执行自定义jar包
hadoop jar /kkb/install/hadoop-2.6.0-cdh5.14.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.2.jar pi 10 10
yarn jar /kkb/install/hadoop-2.6.0-cdh5.14.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.2.jar pi 10 10