CWYAlpha

Just another WordPress.com site

Thought this was cool: Hadoop Streaming的使用

leave a comment »


Hadoop

只要有标注输入输出流的语言都可以使用streaming的方法,

简单的说,这种方法和以下shell原理一样:

cat |mapper.o|sort|reducer.o

cat的数据由mapper一行一行的读入 处理,然后按照key排序,mapper的返回由reducer接到,不过已经是按照key排好序的了,所以只要一个一个的计数就行,碰到新的key就重新计数。

就是这么简单,所以当你写完了map和reduce的程序,可以用这种方法进行测试,只是这种方法不处理大数据困难,所以就放在hadoop上吧,通过streaming方法直接就可以写sh用了:

#!/bin/sh

hadoop streaming \
-D stream.map.output.field.separator=’\t’ \
-D stream.num.map.output.key.fields=1 \
-D mapred.compress.map.output=true \
-D mapred.map.output.compression.codec=org.apache.hadoop.io.compress.QuickLzCodec \
-D mapred.job.map.capacity=300 \
-D mapred.map.tasks=300 \
-D mapred.job.reduce.capacity=10 \
-D mapred.reduce.tasks=10 \
-D mapred.job.name=”my_job” \
-input /my/input.txt|* \
-output /my/output/ \
-mapper ./mapper.o ./reducer.o \
-file /my/mapper.o \

-file /my/reducer.o \
-file /my/dict.txt

注意

1、每次启动的时候保证将已经存在的output目录删除。

2、如果你的mapper或者reducer中间要读一些文件来辅助处理结果,那么这些文件要配置在-file中,这样hadoop的master在分发任务的时候也会将文件分发到worker上,是吧?

3、一个挺好的c语言的例子:http://blog.csdn.net/kangquan2008/article/details/7042638

您可能也喜欢:


Hadoop以及hadoop应用


Hadoop在Linux下面进行分布式计算


Hadoop与分布式计算


分布式环境下的大规模机器学习


MapReduce与自然语言处理

无觅

相关文章

from 丕子: http://www.zhizhihu.com/html/y2012/3877.html

Written by cwyalpha

八月 8, 2012 在 1:17 下午

发表在 Uncategorized

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: