在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 对方机器地址 ./文件夹