Hadoop集群的高频命令
- 查看共享文件在linux下的哪个地方
cd /mnt/hgfs/
- 在Linux下解压压缩包
tar xvzf
- 启动hadoop集群
./start-all.sh
先进入cd /usr/local/src
目录再启动hadoop - 从hdfs上把文件down下来
./hadoop fs -get /1.data /usr/local/src/
后面路径是文件down下来的存放地址 - 从hdfs上查看已经在的文件命令
./hadoop fs ls
- 查看集群运行好的文件输出
./hadoop fs -text /output/part-00001
- 本地模拟测试文件命令
cat 文件名 | python map.py | sort -k 1 | python reduce.py > outputFile
- 跑代码
bash run.sh
- hdfs上传文件
./hadoop fs -put
- 删除hdfs目录
./hadoop fs -rmr
- 杀掉hadoop集群运行中的环境
hadoop job -kill job 201710171458_0005
- 加入压缩包命令
tar cvzf w.tar.gz white_list_1 white_list_2
- 命令行全局排序
sort -k 1 -n
按照第一列的数字格式进行正序排序
sort -k 1 -rn
按照逆序排序
常用命令
|
管道
cat hello.txt | python map.py
将hello.txt传入到map.py文件执行- awk 根据条件执行
awk '$1>10{print $1}'
如果第一列大于10,就输出第一列的值 - sz:从服务器下载文件到本地
- rz:上传文件到服务器
- 2>&1解释:
0 是一个文件描述符,表示标准输入(stdin)
1 是一个文件描述符,表示标准输出(stdout)
2 是一个文件描述符,表示标准错误(stderr)
例子:0>file.in 1>file.out 2>file.err
将错误的输出内容输入到正确的输出文件中 2>&1 - &是一个描述符,如果1或2前不加&,会被当成一个普通文件。
1>&2 意思是把标准输出重定向到标准错误.
2>&1 意思是把标准错误输出重定向到标准输出。
&>filename 意思是把标准输出和标准错误输出都重定向到文件filename中 - [ -z STRING ] “STRING” 的长度为零则为真。
- | 管道
- && 左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2)才能够被执行
- || 与&&相反。如果||左边的命令(command1)未执行成功,那么就执行||右边的命令(command2)
- () 运算符:
执行的效果等同于多个独立的命令单独执行的效果。() 表示在当前 shell 中将多个命令作为一个整体执行。需要注意的是,使用 () 括起来的命令在执行前面都不会切换当前工作目录,也就是说命令组合都是在当前工作目录下被执行的,尽管命令中有切换目录的命令。 - ??{} 运算符:
如果使用{}来代替(),那么相应的命令将在子shell而不是当前shell中作为一个整体被执行,只有在{}中所有命令的输出作为一个整体被重定向时,其中的命令才被放到子shell中执行,否则在当前shell执行。
注意:在使用{}时,{}与命令之间必须使用一个空格 - ??子线程和父线程有什么区别
- ./a.sh,sh ./a.sh和sh a.sh是一样的, 实际上是启了一个子shell来执行a.sh
- source ./a.sh ,source a.sh 和. ./a.sh是一样的, 都是在当前shell中执行脚本
下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:
运算符 | 说明 | 举例 |
---|---|---|
-eq | 检测两个数是否相等,相等返回 true。 | [ $a -eq $b ] 返回 false。 |
-ne | 检测两个数是否不相等,不相等返回 true。 | [ $a -ne $b ] 返回 true。 |
-gt | 检测左边的数是否大于右边的,如果是,则返回 true。 | [ $a -gt $b ] 返回 false。 |
-lt | 检测左边的数是否小于右边的,如果是,则返回 true。 | [ $a -lt $b ] 返回 true。 |
-ge | 检测左边的数是否大于等于右边的,如果是,则返回 true。 | [ $a -ge $b ] 返回 false。 |
-le | 检测左边的数是否小于等于右边的,如果是,则返回 true。 | [ $a -le $b ] 返回 true。 |
- test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
数值测试 test 1 lt 2
字符串测试
参数 说明
= 等于则为真
!= 不相等则为真
-z 字符串 字符串的长度为零则为真
-n 字符串 字符串的长度不为零则为真
文件测试
-e 文件名 如果文件存在则为真
-r 文件名 如果文件存在且可读则为真
-w 文件名 如果文件存在且可写则为真
-x 文件名 如果文件存在且可执行则为真
-s 文件名 如果文件存在且至少有一个字符则为真
-d 文件名 如果文件存在且为目录则为真
-f 文件名 如果文件存在且为普通文件则为真
-c 文件名 如果文件存在且为字符型特殊文件则为真
-b 文件名 如果文件存在且为块特殊文件则为真 - cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
参数:
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。
-b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除 - $0: 脚本本身文件名称
$1: 命令行第一个参数,$2为第二个,以此类推
$*: 所有参数列表
$@: 所有参数列表
$#: 参数个数
$$: 脚本运行时的PID
$?: 脚本退出码 - ∗与@的区别
当命令行为test.sh 1 2 3
“ ∗ " 表 示 " 123 " " *"表示"1 2 3" " ∗"表示"123""@“表示"1” “2” “3”
二者没有被引号括起来时是一样的都为"1 2 3”,只有当被引号括起来后才表现出差异 - sed 可以利用脚本来处理文本文件**太过复杂
- rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
rsync功能
作为命令,实现本地-远程文件同步
作为服务,实现本地-远程文件同步
rsync特点
可以镜像保存整个目录树和文件系统
可以保留原有的权限(permission,mode),owner,group,时间(修改时间,modify time),软硬链接,文件acl,文件属性(attributes)信息等
传输效率高,使用同步算法,只比较变化的
支持匿名传输,方便网站镜像;也可以做验证,加强安全
rsync同类服务
sync 同步:刷新文件系统缓存,强制将修改过的数据块写入磁盘,并且更新超级块。
async 异步:将数据先放到缓冲区,再周期性(一般是30s)的去同步到磁盘。
rsync 远程同步:remote synchronous - expr 命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串。
- flock文件锁命令
在linux中,提供了flock文件锁命令,具体格式如下:
flock [-sxon] [-w timeout] lockfile [-c]command…
flock [-sxun] [-w timeout] fd
参数说明如下:
-s为共享锁,在定向为某文件的FD上设置共享锁而未释放锁的时间内,其他进程试图在定向为此文件的FD上设置独占锁的请求失败,而其他进程试图在定向为此文件的FD上设置共享锁的请求会成功。
-e为独占或排他锁,在定向为某文件的FD上设置独占锁而未释放锁的时间内,其他进程试图在定向为此文件的FD上设置共享锁或独占锁都会失败。只要未设置-s参数,此参数默认被设置。
-u手动解锁,一般情况不必须,当FD关闭时,系统会自动解锁,此参数用于脚本命令一部分需要异步执行,一部分可以同步执行的情况。
-n为非阻塞模式,当试图设置锁失败,采用非阻塞模式,直接返回1,并继续执行下面语句。
-w设置阻塞超时,当超过设置的秒数,就跳出阻塞,返回1,并继续执行下面语句。
-o必须是使用第一种格式时才可用,表示当执行command前关闭设置锁的FD,以使command的子进程不保持锁。
-c执行其后的comand。 - lsof(list open files)是一个列出当前系统打开文件的工具,即文件被占用的那些程序信息。可以用于判断文件是否编辑或传输完成。
- seq指令常用来生成连续的数字或与连续数字相关的字符串,效率相当快。
- curl是一个利用URL语法在命令行下工作的文件传输工具
请求 curl www.baidu.com
get发送curl “www.hotmail. com/when/junk.cgi?birthyear=1905&press=OK”
post发送curl -d “birthyear=1905&press=OK” www.hotmail. com/when/junk.cgi - eval 执行命令拼接好的字符串指令
- sshpass 非交互式ssh密码验证,常用于shell文件中(ssh登陆不能在命令行中指定密码)
- 建立软链接和硬链接的语法
软链接:ln -s 源文件 目标文件
硬链接:ln 源文件 目标文件
源文件:即你要对谁建立链接
软连接相当于快捷图标。硬链接会重新拷贝一份文件,并实时和源文件同步更新。
使用相对路径创建的链接,在移动过后就失效;使用绝对路径,就可以移动文件或文件夹 - #!/usr/bin/env python
当在头文件加上这些东西,就可以不用python命令执行,而是直接像linux一样直接执行 - ulimit 主要是用来限制进程对资源的使用情况的,它支持各种类型的限制
选项 含义
-a 显示当前系统所有的limit资源信息。
-H 设置硬资源限制,一旦设置不能增加。
-S 设置软资源限制,设置后可以增加,但是不能超过硬资源设置。
-c 最大的core文件的大小,以 blocks 为单位。
-f 进程可以创建文件的最大值,以blocks 为单位.
-d 进程最大的数据段的大小,以Kbytes 为单位。
-m 最大内存大小,以Kbytes为单位。
-n 查看进程可以打开的最大文件描述符的数量。
-s 线程栈大小,以Kbytes为单位。
-p 管道缓冲区的大小,以Kbytes 为单位。
-u 用户最大可用的进程数。
-v 进程最大可用的虚拟内存,以Kbytes 为单位。
-t 最大CPU占用时间,以秒为单位。
-l 最大可加锁内存大小,以Kbytes 为单位。