在linux下控制hadoop
一般格式
这里讲的是在公司内使用linux本地机器远程操控hadoop集群。将Hadoop安装到linux本地后(本笔记特别适用Red hat版本),可将hadoop运行地址设定为缩写,例如rd-hadoop,命令一般采用rd-hadoop fs -xx 格式。-xx往往是linux命令加上“-”,例如查看当前文件夹下的文件列表为rd-hadoop fs -ls
中断linux任务
ctrl+c
注意,如果hadoop命令正在集群上运行,需要使用kill命令才能终止集群命令。ctrl+c只能终止linux本地命令。
从hadoop上将当前文件夹的某个文件数据下载到本地
rd-hadoop fs -get xxx ./xxx
文件夹下批量下载
rd-hadoop fs -get ./* ./*
执行shell时记录文件的执行日志
sh start.sh > log.log
在本地文件上测试hadoop
head -500 xxx | python map.py | python reduce.py
测试时,对map的结果进行排序再reduce,并且只查看reduce运行结果的一部分
head -500 xxx | python map.py | sort| python reduce.py |less
排序的时候先按第一列排序,再按第二列排序...,列与列之间是tab分隔
head -500 xxx| python map.py| sort -t"先Ctrl+v然后Ctrtl+I" +0 -1 +1 -2 +2 -3 +3 -4
其中的+0 -1 代表第一个分隔符
如果要按数字排序而不是字符串排序则写n,例如+2 -3 变为+2n -3意思是第三列按数字排序
在执行map时要读取一个本地数据,例如一个过滤白名单list.txt
保证本文件夹中已经包含list.txt
在map.py或者reducer.py中引用这个文件进行过滤
在run.sh文件中调用这个文件
在后台执行
在后台执行可以保证即使本地linux机器断网hadoop集群上的命令也可以执行
nohap bash start.sh &> log.log&
查看当前运行的hadoop进程
jobs
以GB查看文件大小
rd-hadoop fs -dus -h xxx
从另外一台linux机器上将数据下载到hadoop集群文件夹
rp-hadooop fs scp -r 对方机器地址 ./文件夹