1. shell介绍
HDFS(Hadoop Distributed File System)作为Hadoop的文件系统,其也拥有文件系统的一些属性,例如权限、shell语句等。当操作HDFS文件系统上的文件的时候Hadoop提供了两种方法,一种是hadoop的shell语句,另一个是hadoop的原生API借口。
Hadoop shell其实与linux的shell作用相同,都是对文件、用户、属性等操作。(因为本文使用的是Hadoop1.2.1,其所有的操作都是以hadoop 1.x稳准)
2. shell详解
hadoop的shell操作都是要以hadoop开始的,shell的命令则是以hadoop fs 开始的,需要在命令前加上-,格式为hadoop fs -<command> <parameter1> <parameter2>,并且笔者已经将hadoop的bin文件加入到了path中。
将hadoop的命令加入到环境变量中:
vim .bash_profile
在 .base_profile文件中加入两行为:
export HADOOP_HOME=你的hadoop的路径
export PATH=$PATH:$HADOOP_HOME/bin
(1)ls
作用:显示当前目录中的所有文件的信息
格式:hadoop fs -ls <parameter>
(2)lsr
作用:递归显示文件夹中的所有文件
格式:hadoop fs -ls <parmeter>
(3)cat
作用:显示一个文件的内容
格式:hadoop fs -cat <parameter>
(4)put
作用:讲一个本地文件[夹]放入到HDFS中
格式:hadoop fs -put <scrdir> <desdir>
(5)rm
作用:删除HDFS中的一个文件或者空的文件夹
格式:hadoop fs -rm <parameter>
(6)rmr
作用:删除HDFS中的一个文件夹,如果文件夹中有文件,也一起删除(递归删除)
格式:hadoop fs -rmr <parameter>
(7)copyFromLocal
作用:从本地文件复制文件[夹]到HDFS上
格式:hadoop fs -copyFromLocal <src> <des>
(8)moveFromLocal
作用:将本地文件[夹]移动到HDFS中
格式:hadoop fs -moveFromLocal <src> <des>
(9)copyToLocal
作用:将HDFS上的文件复制到本地
格式:hadoop fs -copyToLocal <src> <des>
(10)moveToLocal
作用:将HDFS上的文件[夹]移动到本地文件中,这是命令在Hadoop1.2.1 中并没有实现
格式:hadoop fs -moveToLocal <src> <des>
(11)mkdir
作用:在HDFS创建一个新的文件夹
格式:hadoop fs -mkdir <path>
(12)chmod
作用:更改文件的权限,机上-R后为递归更改,及更改文件夹中的所有文件
格式:hadoop fs -chmod [-R] xxx <parameter>
(13)chown
作用:更改文件的拥有人
格式:hadoop fs -chown [-R] [owner][:[grouper]] <path>
(14)-chgrp [-R] GROUP PATH
作用:更改文件的拥有组
格式:hadoop fs -chgrp [-R] group <path>
(15)help
作用:查询当前可以使用的命令
格式:hadoop fs -help
help的输出部分很多,只截取了一部分信息,大家可以自己试一试
3. 总结
因为Hadoop1.x 和Hadoop2.x 有很大的差别,所以shell 命令行的开头发生了改变,命令的使用格式并没有发生变化。所有Hadoop 2.x的用户可以使用hdfs dfs -help 来查询Hadoop 2.x 下的shell的使用方法。