hdfs shell命令记录

启动hdfs

root@ubuntu:/home/user# start-dfs.sh
启动顺序依次为namenode->datanode->secondarynamenode.
localhost: starting datanode前的losthost为主机名,说明采用ssh协议。
starting namenode, logging to /usr/local/hadoop-1.2.1/libexec/../logs/hadoop-root-namenode-yjj1992.out
localhost: starting datanode, logging to /usr/local/hadoop-1.2.1/libexec/../logs/hadoop-root-datanode-yjj1992.out
localhost: starting secondarynamenode, logging to /usr/local/hadoop-1.2.1/libexec/../logs/hadoop-root-secondarynamenode-yjj1992.out

root@ubuntu:/home/user# jps
查看启动的进程,发现上面提到的三个都已经启动好了。
9756 – process information unavailable
12262 SecondaryNameNode
12395 Jps
11879 NameNode
root@ubuntu:/home/user#

查看

root@ubuntu:~# hadoop dfs -ls /
Found 2 items
drwxr-xr-x - user supergroup 0 2015-07-20 04:44 /user/root/result
-rw-r–r– 1 root supergroup 41388 2015-07-20 04:30 /user/root/word.txt
root@ubuntu:~# hadoop fs -ls hdfs://localhost:9000/
localhost为主机名,最后的/则表示查看hdfs的根目录。
Found 2 items
drwxr-xr-x - root supergroup 0 2015-07-20 04:44 /user
drwxr-xr-x - root supergroup 0 2015-07-20 04:25 /usr
root@ubuntu:~# hadoop dfs -lsr /
加了个参数r便可以将子目录一起显示出来啦!
不过这个命令用法是hadoop 1.x用的,在hadoop 2.x好像就抛弃了。
drwxr-xr-x - root supergroup 0 2015-07-25 04:59 /user
-rw-r–r– 1 root supergroup 41388 2015-07-25 01:52 /user/a.txt
-rw-r–r– 1 root supergroup 41388 2015-07-25 04:56 /user/b.txt
drwxr-xr-x - root supergroup 0 2015-07-25 05:00 /user/mydir
-rw-r–r– 1 root supergroup 0 2015-07-25 05:00 /user/mydir/a
-rw-r–r– 1 root supergroup 0 2015-07-25 05:00 /user/mydir/b
drwxr-xr-x - root supergroup 0 2015-07-20 04:44 /user/root
drwxr-xr-x - user supergroup 0 2015-07-20 04:44 /user/root/result
-rw-r–r– 3 user supergroup 0 2015-07-20 04:44 /user/root/result/_SUCCESS
-rw-r–r– 3 user supergroup 51986 2015-07-20 04:44 /user/root/result/part-r-00000
-rw-r–r– 1 root supergroup 41388 2015-07-20 04:30 /user/root/word.txt
drwxr-xr-x - root supergroup 0 2015-07-20 04:25 /usr
drwxr-xr-x - root supergroup 0 2015-07-20 04:25 /usr/local
drwxr-xr-x - root supergroup 0 2015-07-20 04:25 /usr/local/hadoop-1.2.1
drwxr-xr-x - root supergroup 0 2015-07-20 04:25 /usr/local/hadoop-1.2.1/hadoop_root
drwxr-xr-x - root supergroup 0 2015-07-20 04:25 /usr/local/hadoop-1.2.1/hadoop_root/mapred
drwx—— - root supergroup 0 2015-07-20 04:25 /usr/local/hadoop-1.2.1/hadoop_root/mapred/system
-rw——- 1 root supergroup 4 2015-07-20 04:25 /usr/local/hadoop-1.2.1/hadoop_root/mapred/system/jobtracker.info

上传文件

root@ubuntu:~# hadoop fs -copyFromLocal /home/user/opencv.txt /inputFile.txt
格式为copyFromLocal localFile hdfsFile
/home/user/opencv.txt为linux本地文件系统中的文件
/inputFile.txt表示将文件上传到hdfs的根目录下并保存为inputFile.txt
moveFromLocal用法和copyFromLocal挺像的,区别在于moveFromLocal执行完后,位于linux本地文件系统的opencv.txt便会被删除掉,这就是move和copy的区别啦。

copyFromLocal: org.apache.hadoop.hdfs.server.namenode.SafeModeException:

安全模式的退出

Cannot create /inputFile.txt. Name node is in safe mode.
root@ubuntu:~# hadoop fsadmin -safemode leave
Error: Could not find or load main class fsadmin
root@ubuntu:~# hadoop dfsadmin -safemode leave
Safe mode is OFF
root@ubuntu:~# hadoop fs -copyFromLocal /home/user/opencv.txt /inputFile.txt

0 nodes的错误

15/07/25 01:13:17 WARN hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /inputFile.txt could only be replicated to 0 nodes, instead of 1
root@ubuntu:~# jps
9756 – process information unavailable
14509 Jps
13998 SecondaryNameNode
13591 NameNode
查看jps发现DataNode不见了,所以要stop-all.sh之后再start-dfs.sh

Retrying connect to server错误

15/07/25 01:15:33 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1 SECONDS)
这个是namenode的问题,格式化下namenode就好了
root@ubuntu:~# hadoop namenode format
15/07/25 01:17:23 INFO namenode.NameNode: STARTUP_MSG:
/**************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = java.net.UnknownHostException: yjj1992: yjj1992: unknown error
STARTUP_MSG: args = [format]
STARTUP_MSG: version = 1.2.1
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1503152; compiled by ‘mattf’ on Mon Jul 22 15:23:09 PDT 2013
STARTUP_MSG: java = 1.8.0_40

上传成功后,再看hdfs的根目录便可以发现多了一个inputFile.txt啦
root@ubuntu:~# hadoop fs -ls /
Found 3 items
-rw-r–r– 1 root supergroup 0 2015-07-25 01:13 /inputFile.txt
drwxr-xr-x - root supergroup 0 2015-07-20 04:44 /user
drwxr-xr-x - root supergroup 0 2015-07-20 04:25 /usr

put命令

也可以使用put命令,参数规则和-copyFromLocal一样。
root@ubuntu:~# hadoop dfs -put /home/user/get.txt /user/b.txt
put除了可以上传文件,还可以上传文件夹。
比如我在/home/user/mydir目录下有a和b两个文件,如下命令便可以将这个mydir目录上传到hdfs中/user目录下。
root@ubuntu:~# ls -R /home/user/mydir
/home/user/mydir:
a b
root@ubuntu:~# hadoop dfs -put /home/user/mydir /user/mydir
root@ubuntu:~# hadoop dfs -ls /user/mydir
Found 2 items
-rw-r–r– 1 root supergroup 0 2015-07-25 05:00 /user/mydir/a
-rw-r–r– 1 root supergroup 0 2015-07-25 05:00 /user/mydir/b

从hdfs中取文件

copyToLocal和get命令都可以
root@ubuntu:~# hadoop dfs -copyToLocal /user/a.txt /home/user/get.txt
moveToLocal和copyToLocal命令很像,不过区别在于moveToLocal执行之后,位于hdfs的/user/a.txt便会删除掉。

/user/a.txt是hdfs里的文件,/home/user/get.txt则是linux系统本地文件系统上的目的地址。
root@ubuntu:~# hadoop dfs -get /user/a.txt /home/user/get2.txt
get命令也和put命令一样可以对文件夹进行操作。
root@ubuntu:~# hadoop dfs -get /user/mydir /home/user/testdir
root@ubuntu:~# ls /home/user/testdir
a b

查看文件cat,tail

root@ubuntu:~# hadoop fs -cat /inputFile.txt
使用上面的命令,文件很大的话就不方便查看的,可以写成
hadoop dfs -cat /inputFile.txt | more
使用more命令将文件分页,则文件会先从开头开始显示一页内容到terminal上。
按空格键进入下一页或者按Q结束显示。

tail命令可以查看文件的尾部内容
root@ubuntu:~# hadoop dfs -tail 1 /user/a.txt
root@ubuntu:~# hadoop dfs -help tail
-tail [-f] : Show the last 1KB of the file.
The -f option shows apended data as the file grows.
使用text命令也可以查看文件。
root@ubuntu:~# hadoop dfs -help text
-text : Takes a source file and outputs the file in text format.
The allowed formats are zip and TextRecordInputStream.

创建与删除文件(夹)

root@ubuntu:~# hadoop dfs -mkdir /a.txt
root@ubuntu:~# hadoop dfs -mkdir /mydir
root@ubuntu:~# hadoop dfs -touchz /b.txt
root@ubuntu:~# hadoop dfs -ls /
Found 5 items
drwxr-xr-x - root supergroup 0 2015-07-25 02:07 /a.txt
-rw-r–r– 1 root supergroup 0 2015-07-25 02:11 /b.txt
drwxr-xr-x - root supergroup 0 2015-07-25 02:06 /mydir
drwxr-xr-x - root supergroup 0 2015-07-25 01:52 /user
drwxr-xr-x - root supergroup 0 2015-07-20 04:25 /usr
虽然b.txt名字很像文件,但是用mkdir创建的都是目录。
b.txt和mydir都是目录文件,b.txt则是file文件。

删除用-rm命令,如果是目录则是-rmr
root@ubuntu:~# hadoop dfs -rmr /mydir
Deleted hdfs://localhost:9000/mydir
root@ubuntu:~# hadoop dfs -rmr /a.txt
Deleted hdfs://localhost:9000/a.txt
root@ubuntu:~# hadoop dfs -rm /b.txt
Deleted hdfs://localhost:9000/b.txt

count计数

root@ubuntu:~# hadoop dfs -count /
统计根目录/下的情况,结果如下:
10(文件夹) 7(文件) 134766(字节) hdfs://localhost:9000/(地址)

chmod修改权限

root@ubuntu:~# hadoop dfs -ls /user
Found 4 items
-rw-r–r– 1 root supergroup 41388 2015-07-25 01:52 /user/a.txt
-rw-r–r– 1 root supergroup 41388 2015-07-25 04:56 /user/b.txt
drwxr-xr-x - root supergroup 0 2015-07-25 05:00 /user/mydir
drwxr-xr-x - root supergroup 0 2015-07-20 04:44 /user/root

当执行ls -l 或 ls -al 命令后显示的结果中,最前面的第2~10个字符是用来表示权限。第一个字符一般用来区分文件和目录:
d:表示是一个目录,事实上在ext2fs中,目录是一个特殊的文件。
-:表示这是一个普通的文件。

第2~10个字符当中的每3个为一组,左边三个字符表示所有者权限,中间3个字符表示与所有者同一组的用户的权限,右边3个字符是其他用户的权限。这三个一组共9个字符,代表的意义如下:
r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权
w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
所以对于a.txt,-rw-r–r– 表面它是文件,对于文件所有者权限为可读可写,对同组用户和其它用户则是可读。

下面用chmod为它添加权限
hadoop dfs -chmod a+x /user/a.txt
不知道为什么我没修改成功,好奇怪啊。

chown修改文件所属对象

root@ubuntu:~# hadoop dfs -chown supergroup /user/a.txt
将a.txt所属对象从root修改为supergroup。
root@ubuntu:~# hadoop dfs -ls /user

Found 4 items
-rw-r–r– 1 supergroup supergroup 41388 2015-07-25 01:52 /user/a.txt
-rw-r–r– 1 root supergroup 41388 2015-07-25 04:56 /user/b.txt
drwxr-xr-x - root supergroup 0 2015-07-25 05:00 /user/mydir
drwxr-xr-x - root supergroup 0 2015-07-20 04:44 /user/root
root@ubuntu:~# hadoop dfs -chown aa:bb /user/a.txt
aa:bb,aa为所属用户,bb为所属组。
root@ubuntu:~# hadoop dfs -ls /user
Found 4 items
-rw-r–r– 1 aa bb 41388 2015-07-25 01:52 /user/a.txt
-rw-r–r– 1 root supergroup 41388 2015-07-25 04:56 /user/b.txt
drwxr-xr-x - root supergroup 0 2015-07-25 05:00 /user/mydir
drwxr-xr-x - root supergroup 0 2015-07-20 04:44 /user/root
root@ubuntu:~#

chgrp修改文件所属组

root@ubuntu:~# hadoop dfs -chgrp root /user/a.txt
root@ubuntu:~# hadoop dfs -ls /user
Found 4 items
-rw-r–r– 1 supergroup root 41388 2015-07-25 01:52 /user/a.txt
-rw-r–r– 1 root supergroup 41388 2015-07-25 04:56 /user/b.txt
drwxr-xr-x - root supergroup 0 2015-07-25 05:00 /user/mydir
drwxr-xr-x - root supergroup 0 2015-07-20 04:44 /user/root
root@ubuntu:~#

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值