HDFS文件系统及常用命令

像大多数文件系统一样,Hadoop为每个用户保留一个主目录,这些主目录都位于HDFS上的/user路径下.在继续深入之前,如果主目录不存在的话,需要我们自己创建主目录.

当启动了hadoop集群之后,可以到在浏览器中输入http://localhost:50070/dfshealth.html进入hadoop提供的ui页面.里面有HDFS的文件系统.

常用命令

fs命令类似于unix系统命令,只是在前面加了"-".

  • -mkdir 创建文件夹.
bin/hadoop fs -mkdir /user  //如果主目录不存在的话,需要我们自己创建user主目录
bin/hadoop fs -mkdir /user/hdusr  //创建自己的用户目录
bin/hadoop fs -mkdir input      // 默认创建的文件夹位于/user/hdusr/下
当然也可以指定创建的路径:
bin/hadoop fs -mkdir /usr/local/hadoop/input
  • -rmdir 注意-rmdir命令只能删除空文件夹,如果你想删除的文件夹里有内容,你需要先用-rm命令删除里面的文件.
bin/hadoop fs -rmdir /usr/local/hadoop/input
  • -rm 删除文件.
bin/hadoop fs -rm output/part-r-00000
bin/hadoop fs -rm output/*
  • -cat 显示文件内容.
bin/hadoop fs -cat /user/hdusr/output/part-r00000
  • -ls 显示指定目录下的文件夹.
bin/hadoop fs -ls /user/hdusr
  • -put 上传文件.
bin/hadoop fs -put myfile/* input/
  • -copyToLocal 从HDFS里拷贝文件到本地
bin/hadoop fs -copyToLocal /user/hdusr/output/* result/

如果在-put或者-copyToLocal时遇到了

Permission denied at hdfs

的错误,检查一下你操作的本地文件的权限,如果不是hadoop用户,使用chown命令修改权限

cd /usr/local
sudo chown -R hdusr:hdusr hadoop

stackoverflow有更详细的解答,只是修改权限这个方法恰好适合我.如果不适合你,你可以试试上面提到的其他方法.

重建HDFS系统

有时候你可能需要删除core-site.xml中的hadoop.tmp.dir的value所在路径,即/usr/local/hadoop/tmp删除,然后重新建立一遍,你需要用chown指令再把文件的所属更改一下。最后还要重新format.即:

cd /usr/local/hadoop
sudo rm -rf tmp/
sudo mkdir tmp/
cd ..
sudo chown -R hdusr:hdusr hadoop
bin/hadoop namenode -format

完成之后的HDFS文件系统下什么都没有,你要手动建立自己的用户主目录.

bin/hadoop fs -mkdir /user  //如果主目录不存在的话,需要我们自己创建user主目录
bin/hadoop fs -mkdir /user/hdusr  //创建自己的用户目录

Comments !