偶尔还是需要使用streaming进行一些数据的统计与分析。这里做一些小笔记,便于实时的进行查询使用。
1、.hadoop streaming运行命令
/home/work/hadoop-client/hadoop/bin/hadoopstreaming \
-Dmapred.job.name="run_shitu" \
-Dmapred.map.tasks="10000" \
-Dmapred.reduce.tasks="400" \
-Dmapred.job.priority="NORMAL" \
-input"${INPUTS}" \
-output"${OUTPUTS}" \
-mapper"python map.py" \
-reducer"python red.py" \
-file"map.py" \
-filered.py \
-file "Filter.so" \ -----制定传入的so文件
-cacheArchive"hdfs://szwg-ecomoff-hdfs.dmop.baidu.com:54310/app/ecom/fcr/lizhixu/python.tar.gz#python"\ ---制定是使用特定目录下的运行程序。
-inputformatorg.apache.hadoop.mapred.CombineTextInputFormat \
-jobconfmapred.max.split.size="512000000"
优先级:
VERY_HIGHHIGH NORMAL LOW VERY_LOW
Writecounter
reporter:counter:<group>,<counter>,<amount>
reporter:counter:<parser_shitu><parse_err>,1
-cacheArchive /app/ecom/cm/nova.ufs/u-wangyou/java6.tar.gz#java6 #hdfs上要分发的压缩包,解压后的文件夹名为
-D stream.map.output.field.separator :设置map输出中key和value的分隔符
-D stream.num.map.output.key.fields : 设置map程序分隔符的位置,该位置之前的部分作为key,之后的部分作为value
-D map.output.key.field.separator : 设置map输出中key内部的分割符
-Dnum.key.fields.for.partition : 指定分桶时,key按照分隔符切割后,其中用于分桶key所占的列数(配合-partitionerorg.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner 使用)
-Dstream.reduce.output.field.separator:设置reduce输出中key和value的分隔符
-D stream.num.reduce.output.key.fields:设置reduce程序分隔符的位置
很好的wiki
http://blog.youkuaiyun.com/jiedushi/article/details/7394705
stream调用so库遇到的一些问题:
http://blog.youkuaiyun.com/joeblackzqq/article/details/7405992
streaming的官方文档
https://cwiki.apache.org/confluence/display/Hive/Home
------------------------------------------------------------------
2 | ${HADOOP_BIN} streaming \ |