引:MapReduce作为hadoop三大核心组件之一,在大数据处理中经常被使用。由于文档的稀缺性和分散性,以及MR脚本的多元性,故各种语言、各种用法等参差不齐。所以本篇文章以python2为开发语言,run.sh为入口脚本来详细说明mr的使用。
一、使用
运行python的mr怎么跑起来?
先上代码run.sh文件:
${HADOOP_HOME}/bin/hadoop streaming \
-D mapred.job.name=my_first_mr \
-D mapred.job.map.capacity=500 \
-D mapred.job.reduce.capacity=200 \
-D mapred.map.tasks=1500 \
-D mapred.reduce.tasks=200 \
-D mapred.job.priority=VERY_HIGH \
-D mapred.job.queue.name=my_queue \
-D mapred.job.tracker="my-job.com:54311" \
-D hadoop.job.ugi="mygui,myugi" \
-D stream.memory.limit=1000 \
-input "afs://x.afs.com:9233/user/myugi/input" \
-output "afs://x.afs.com:9233/user/myugi/output" \
-outputformat org.apache.hadoop.mapred.TextOutputFormat \
-mapper "python/bin/python m.py" \
-reducer "python/bin/python r.py se" \
-file "m.py" \
-file "r.py" \
-cacheArchive "afs://x.afs.com:9233/user/myugi/Python-2.7.3.tar.gz#python"
以上代码便可运行mr,参数解释:
- -D mapred.job.name=my_first_mr: 设置MapReduce作业的名称为my_first_mr。
- -D mapred.job.map.capacity=500: 设置Map并发500。
- -D mapred.job.reduce.capacity=200: 设置Reduce并发200。
- -D mapred.map.tasks=1500: 设置Map任务的数量为1500。
- -D mapred.reduce.tasks=200: 设置Reduce任务的数量为200。
- -D mapred.job.priority=VERY_HIGH: 设置作业的优先级为VERY_HIGH。
- -D mapred.job.queue.name=my_queue: 设置作业应该提交到的队列名称为my_queue。
- -D mapred.job.tracker=“my-job.com:54311”: 指定JobTracker的地址和端口。JobTracker是Hadoop中用于协调作业执行的服务。
- -D hadoop.job.ugi=“mygui,myugi”: 设置用户组信息,其中mygui是用户名和组名。
- -D stream.memory.limit=1000: 设置流任务的内存限制为1000(MB)。
- -input “afs://x.afs.com:9233/user/myugi/input”: 指定输入数据的路径。afs协议分布式文件系统。
- -output “afs://x.afs.com:9233/user/myugi/o