Hadoop的shell命令
- 启动Hadoop
- 常见的shell命令(与Linux系统命令差不多,但小部分有区别)
- 帮助命令 (-help)
- 显示目录信息 (-ls)
- 创建文件夹(-mkdir)
- 删除文件或文件夹(-rm)
- 移动文件或重命名文件(-mv)
- 复制路径(-cp)
- 从hdfs复制到本地(-get)
- 从本地文件系统中复制文件到hdfs文件系统中(-put)
- 统计文件系统的可用空间信息(-df)
- 统计一个指定目录下的文件节点数量(-du)
- 文件权限管理(-chmod)
- 修改文件(-vi)
- 查看具体文件(-cat)
- 本地文件附加到目标文件中(-appendToFile)
- 统计指定路径下,目录数、文件数、字节数(-count)
- 查找目录或文件(-find)
- 创建一个空文件(-touchz)
启动Hadoop
1.打开终端,切换hadoop文件夹的sbin目录下,启动Hadoop
./start-all.sh
除了直接执行start-all.sh外,还可以分步启动start-dfs.sh和start-yarn.sh。
2.执行jps,检查一下Hadoop相关进程是否启动
jps
常见的shell命令(与Linux系统命令差不多,但小部分有区别)
Hadoop fs:使用面最广,可以操作任何文件系统
hadoop dfs 与 hdfs dfs:只能操作HDFS文件系统相关(包括与本地上传下载的操作),前者已经Deprecated,一般使用后者。
首先先搞清楚本机文件与hdfs文件系统的文件是不一样的,也就是说没有这些前缀的语句,它显示、新建、删除的路径是不同的。
shell命令的标准样式
hdfs dfs (-shell命令) [-选项] 文件路径(或多个文件路径)
具体shell命令可用help查看
帮助命令 (-help)
命令:hdfs dfs -help [cmd ...]
命令选项 | 说明 |
-d | 显示命令简短的主题描述 |
-s | 显示命令简短的语法描述 |
cmd… | 需要查询的一个或多个命令 |
演示操作
hdfs dfs -help
显示目录信息 (-ls)
命令:hdfs dfs -ls [-C] [-d] [-h] [-R] [-t] [-S] [-r] [-u] [<path> ...]
命令选项 | 说明 |
-C | 仅显示文件和目录的路径 |
-d | 目录列为普通文件 |
-h | 以人类可读的方式格式化文件大小,而不是按字节数 |
-R | 递归地列出目录的内容 |
-t | 按修改时间对文件排序(最近的第一次) |
-S | 按大小对文件进行排序 |
-r | 颠倒排序顺序 |
-u | 使用上次访问的时间而不是修改来显示和排序 |
演示操作
显示hdfs根目录的信息
hdfs dfs -ls /
由于我们的现在的环境中没有数据,所以显示空白是正常的
创建文件夹(-mkdir)
命令:hdfs dfs -mkdir [-p] <path> ...
通过 mkdir 命令可以实现在指定位置创建以 指定的文件名 命名的文件夹或目录。要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限。并且所创建的文件夹(目录)不能与其父目录(即父文件夹)中的文件名重名,即同一个目录下不能有同名的(区分大小写)。还可以设置目录的权限。
文件或目录的权限又分为3种:只读、只写、可执行。
权限 | 权限数值 | 二进制 | 具体作用 |
r | 4 | 00000100 | read,读取。当前用户可以读取文件内容,当前用户可以浏览目录。 |
w | 2 | 00000010 | write,写入。当前用户可以新增或修改文件内容,当前用户可以删除、移动目录或目录内文件。 |
x | 1 | 00000001 | execute,执行。当前用户可以执行文件,当前用户可以进入目录。 |
7 = 4 + 2 + 1 读写运行权限
5 = 4 + 1 读和运行权限
4 = 4 只读权限
命令选项 | 说明 |
-p | 进行递归创建 |
演示操作
在hdfs上创建名为test1的文件
hdfs dfs -mkdir /test1
结合刚才的查看命令(-ls),查看刚创建的test1文件
hdfs dfs -ls /
可以看到我们新建的test1文件
删除文件或文件夹(-rm)
命令:hdfs dfs -rm [-f] [-r|-R] [-skipTrash] [-safely] <src> ...
命令选项 | 说明 |
-f | 如果文件不存在,不显示诊断消息或修改退出状态以反映错误 |
-[rR] | 递归删除目录 |
-skipTrash | 删除时不经过回收站,直接删除 |
-safely | 需要安全确认 |
简单的演示操作
删除根目录下的test1文件夹
hdfs dfs -rm -r /test1
结合查看命令,查看是否成功删除
hdfs dfs -ls /
移动文件或重命名文件(-mv)
命令:hdfs dfs -mv <src> ... <dst>
演示操作
创建stu1、stu2文件夹,并查看创建好的文件夹
hdfs dfs -mkdir /stu1
hdfs dfs -mkdir /stu2
hdfs dfs -ls /
在stu1中创建一个名为q.txt的文件夹并查看stu1的文件信息
hdfs dfs -mkdir /stu1/q.txt
hdfs dfs -ls /stu1
将stu1文件夹中的q.txt文件夹移动到stu2文件夹下,执行后查看stu1和stu2文件夹下的内容
hdfs dfs -mv /stu1/q.txt /stu2
hdfs dfs -ls /stu1
hdfs dfs -ls /stu2
将stu2下的q.txt文件夹重命名为qqq.txt,执行后查看stu2文件夹下的文件信息验证是否重命名成功
hdfs dfs -mv /stu2/q.txt /stu2/qqq.txt
hdfs dfs -ls /stu2
复制路径(-cp)
命令:hdfs dfs -cp [-f] [-p | -p[topax]] [-d] <src> ... <dst>
命令选项 | 说明 |
-f | 如果目标已存在,则覆盖该目标 |
-p , -p[topax] | 保留状态,参数[topax]分别表示(时间戳、所有权、权限、ACL、XAttr),无参数则不保留状态 |
-d | 跳过临时文件的创建 |
演示操作
将stu2文件夹中的qqq.txt文件夹复制到hdfs根目录下,并查看根目录下是否有qqq.txt文件夹
hdfs dfs -cp /stu2/qqq.txt /
hdfs dfs -ls /
从hdfs复制到本地(-get)
命令:hdfs dfs -get [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>
命令选项 | 说明 |
-f | 如果目标已存在,则覆盖该目标 |
-ignoreCrc | 忽略CRC校验 |
-crc | 使用CRC校验 |
演示操作
将hdfs上stu2文件夹下的qqq.txt文件夹复制到hadoop01本地的/opt目录下,并进入/opt下查看是否复制成功
hdfs dfs -get /stu2/qqq.txt /opt
cd /opt/
ls
从本地文件系统中复制文件到hdfs文件系统中(-put)
命令:hdfs dfs -put [-f] [-p] [-d] <localsrc> ... <dst>
命令选项 | 说明 |
-f | 如果目标已存在,则覆盖该目标 |
-p | 保留访问和修改时间、所有权和模式 |
-d | 跳过临时文件的创建 |
演示操作
将本地文件系统中/opt/qqq.txt复制到hdfs的stu1文件夹下,并查看是否复制成功
hdfs dfs -put /opt/qqq.txt /stu1
hdfs dfs -ls /stu1
统计文件系统的可用空间信息(-df)
命令选项 | 说明 |
-h | 以人类可读的方式格式化文件大小,而不是按字节数 |
演示操作
统计hdfs文件系统的可用信息
hdfs dfs -df -h /
统计一个指定目录下的文件节点数量(-du)
命令选项 | 说明 |
-s | 显示总使用情况,不显示每个独立目录或文件的使用情况 |
-h | 以人类可读的方式格式化文件大小,而不是按字节数 |
-x | 不计算快照 |
演示操作
统计hdfs文件系统中stu1文件夹下的文件节点数量
hdfs dfs -du /stu1
文件权限管理(-chmod)
命令:hdfs dfs -chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...
命令选项 | 说明 |
-R | 递归修改文件 |
< MODE > | 模式与用于shell命令的模式相同 |
< OCTALMODE> | 数字表示 |
演示操作
将stu1文件夹下的iris.data文件权限修改为777,并查看修改结果
hdfs dfs -chmod 777 /stu1/qqq.txt
hdfs dfs -ls /stu1
修改文件(-vi)
命令:hdfs dfs -vi <path>
一、vi的三种工作模式
1、命令模式:是vi的入口,执行定位,翻页,复制,粘贴,删除等操作
末行模式:是vi的出口,执行保存、退出等操作
命令模式:是vi的入口,执行定位,翻页,复制,粘贴,删除等操作
2、末行模式:是vi的出口,执行保存、退出等操作
q:退出
wq:保存并退出
q!:强制退出(在修改文件但未保存时退出文件,可使用强制退出命令)
x或wq:保存并退出
3、编辑模式:使用i可进入该模式,使用esc键可退出编辑模式
二、移动
1、上下左右移动
h:左移一个字符
j :下移一个字符
k:上移一个字符
l:右移一个字符
2、行内移动
w(word) 向后移动一个单词
b(back) 向前移动一个单词
0 移动至行首
^ 移动至第一个非空白字符的行首
$ 移动至行尾
3、移动至文件顶部 gg
移动至文件末尾 G
移动到指定行 指定行gg
4、屏幕移动
Ctrl+b(back) 向上翻页
Ctrl+f(forward) 向下翻页
H(high) 移动至屏幕顶部
M(middle) 移动至屏幕中间
L(low) 移动至屏幕底部
5、段落移动
shiift+{ 上一段落
shift+} 下一段落
shift+% 可以匹配及在成对的括号之间切换
6、标记
ma(mark) 添加标记a,a是a-z或者A-Z中的任意一个字母
‘a 直接回到刚刚标记的位置
【注意】:使用同一字母标记的话可以定位多个标记,但是上一个标记的位置a会被新的a覆盖
三、定位到行
1、在文件外时,进入文件并跳转到指定行:
vi 文件名+指定行数,
eg:0.json + 16
2、让每行的前面显示行数:
vi下,输入:set nu(nu表示number)
3、跳转到指定行:
指定行gg 或输入 :100,
eg:100gg或:100即可跳转到文件的第100行
四、撤销和删除
1、撤销
u(undo) 撤销上次命令,可重复执行至文件原始状态
Ctrl+r(redo) 可恢复刚刚撤销的命
2、删除
x(cut) 删除光标所在字符,可结合数字或%删除多个字符
eg:5x,%x
d(delete) 删除对应的字符
dd 删除光标所在行,
eg:ndd 删除多行
dnG 从该行删除至第n行
dw 从光标位置删除至单词末尾
d0 从光标位置删除至该行起始位置
d} 从光标位置删除至段落末尾
D 删除至行尾
五、复制、粘贴、替换
1、复制&粘贴
yy(copy) 复制,nyy可复制多行
p(paste) 粘贴
eg:yy5p 该行复制5遍
5yyp 这5行复制1遍
2、替换
r (replace) 替换当前字符
R 从当前位置开始,用输入的n个字符替换当前光标开始的n个字符
5R 表示新输入的文本重复5次替换原有位置的字符,后续字符依旧保留
【注意】在其他文件中用Ctrl+c所复制的文件,不可直接用p命令粘贴,需要先进入编辑模式(i)下使用p粘贴
六、选中命令(可视模式)
1、v:可视模式(从光标开始位置到光标结束位置选中)
2、V:可视行模式(只要是光标经过的完整行都会被选中)
3、Ctrl+V:可视块块模式(可垂直方向选中文本)
【注意】可视模式下,可以和移动命令进行连用
七、缩排和重复执行
>> 向右增加缩进
<< 向左增加缩进
【注意】在可视模式下,可选中多行同时进行缩进,只需要一个shift+<或shift+>即可。
. 重复执行上次命令
八、查找
1、常规查找
/str 查找str
n 向下查找下一个
N 向上查找上一个
2、单词快速匹配
* 向后查找当前光标所在单词
# 向前查找当前光标所在单词
3、查找并替换:【格式:%s///g】
1)全局替换 :%s/旧文本/新文本/g
2)可视区域替换 :s/旧文本/新文本/g
3)确认替换(在找到对应字段后,替换时会有提示,确认的时候是一个一个确认的)
:%s/旧文本/新文本/gc(c表示确认)
【y表示替换;n表示不替换;a表示全部替换;q表示退出替换;
l表示最后一个,并把光标移动到行首;ctrl+E表示向下滚屏,Ctrl+Y表示向上滚屏】
九、插入
i 在当前字符前插入文本
I 在行首插入文本
a 在当前字符后面添加文本
A 在行末添加文本
o 在当前行的后面插入一空行
O 在当前行的前面插入一个空行
十、末行命令下:查看目录、创建文件、切换文件、复制文件
进入末行模式中,即:
:e . 浏览当前目录下包含的文件(e表示edit,点表示当前目录)
:e 文件名 进入指定文件,可以在一个文件中切换到当前目录下的另一个文件
:n 文件名 创建文件(n表示new)
:w 文件名 另存为,将当前文件内容全部写入到一个新的文件中,类似复制,但是编辑操作仍在该文件中,不会切换文件(w表示write)
十一、分屏命令
:sp 横向增加分屏(split)
:vsp 纵向增加分屏
w window 切换到下一个窗口
r reverse 互换窗口(上下交换,或左右交换)
c close 关闭当前窗口,但是不能关闭最后一个窗口
q quit 退出当前窗口,若是最后一个窗口,则关闭vi
o other 关闭其他窗口
【注意】分屏操作都是基于Ctrl+w这个快捷键,所以以下操作之前都必须先按下Ctrl+w,再按下以下字母即可完成相应操作。
查看具体文件(-cat)
命令:hdfs dfs -cat [-ignoreCrc] <src> ...
命令选项 | 说明 |
-ignoreCrc | 忽略CRC校验 |
本地文件附加到目标文件中(-appendToFile)
命令:hdfs dfs -appendToFile <localsrc> ... <dst>
统计指定路径下,目录数、文件数、字节数(-count)
命令:hdfs dfs -count [-q] [-h] [-v] [-t [<storage type>]] [-u] [-x] <path> ...
命令选项 | 说明 |
-q | 显示配额和配额的使用情况 |
-h | 以人类可读的方式格式化文件大小,而不是按字节数 |
-v | 显示标题行 |
-t [< storage type>] | 按存储类型显示配额,需要与参数-q或-u一起使用 |
-u | 显示配额和配额的使用情况,但不显示详细的内容摘要 |
-x | 不计算快照 |
查找目录或文件(-find)
命令:hdfs dfs -find <path> ... <expression> ...
< expression >:
-name 匹配内容
-iname 忽略大小写匹配内容
-print 使当前路径名写入标准输出,后跟换行符
-print0 如果使用-print0表达式,则会附加ASCII空字符,而不是换行符。
创建一个空文件(-touchz)
命令:hdfs dfs -touchz <path> ...