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的使用方法。