參考鏈接:https://zhuanlan.zhihu.com/p/34903460
https://blog.csdn.net/frankie110/article/details/38274965
https://www.cnblogs.com/duking1991/p/6077110.html
hadoop
常用的參數(shù)總結(jié)
-D mapred.job.priority="NORMAL"
任務(wù)的優(yōu)先級(jí) `VERY_HIGH HIGH NORMAL LOW VERY_LOW`
-D mapred.job.name=jobname 指定作業(yè)名稱(chēng)
-D mapred.map.tasks=numofmap 每個(gè)Job運(yùn)行map task的數(shù)量
-D mapred.reduce.tasks=numofreduce 每個(gè)Job運(yùn)行reduce task的數(shù)量,
如果指定為 0俏站,則意味著提交了一個(gè)map only的任務(wù)
分隔符參數(shù)設(shè)置
hadoop中的map-reduce是處理<key,value>這樣的鍵值對(duì)腋颠,故指定<key,value>的分割符等參數(shù)可以分成三類(lèi):
1、map輸出時(shí)分割符
2邪财、分桶時(shí)的分隔符
3、reduce輸出時(shí)的分割符
1. map輸出時(shí)分割符
參數(shù): stream.map.output.field.separator
作用: 指定map輸出時(shí)的分割符
stream.num.map.output.key.fields
指定輸出按照分隔符切割后,key所占有的列數(shù)
(設(shè)置map程序分隔符的位置识埋,該位置之前的部分作為key,之后的部分作為value)
Example
input數(shù)據(jù): 2,2,c,c,c,c
參數(shù)配置:
-mapper "cat" # map 為分布式的cat命令
-reducer "" #reduce為空 /
-jobconf stream.map.output.field.separator=',' /
-jobconf stream.num.map.output.key.fields=2 /
即按照','逗號(hào)分隔后零渐,取前2列作為key
output數(shù)據(jù):
2,2 c,c,c,c #其中key為2,2 value為c,c,c,c
2窒舟、分桶時(shí)的分隔符
map.output.key.field.separator
指定map輸出<key,value>對(duì)之后,其中key內(nèi)部的分割符
num.key.fields.for.partition
指定分桶時(shí)诵盼,按照分隔符切割后惠豺,用于分桶key所占的列數(shù)
Example
map的output數(shù)據(jù): 2,2 c,c,c,c
參數(shù)配置:
-jobconf map.output.key.field.separator=',' /
-jobconf num.key.fields.for.partition='1' /
-partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner /
output數(shù)據(jù):
這樣用于partition分桶的key就為:2
注意,這里分桶不應(yīng)該用默認(rèn)的HashPartitioner
-D num.key.fields.for.partition
指定分桶時(shí)风宁,key按照分隔符切割后洁墙,其中用于分桶key所占的列數(shù)(配合-partitionerorg.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner 使用)
- reduce輸出時(shí)的分割符
這個(gè)與map類(lèi)似,分別用于reduce輸出時(shí)分隔符以及key占有的列數(shù)
stream.reduce.output.field.separator
stream.num.reduce.output.key.fields