-input <path>:指定作業(yè)輸入,path可以是文件或者目錄,可以使用*通配符,-input選項(xiàng)可以使用多次指定多個(gè)文件或目錄作為輸入。
-output <path>:指定作業(yè)輸出目錄,path必須不存在,而且執(zhí)行作業(yè)的用戶必須有創(chuàng)建該目錄的權(quán)限,-output只能使用一次。
-mapper:指定mapper可執(zhí)行程序或Java類,必須指定且唯一。
-reducer:指定reducer可執(zhí)行程序或Java類,必須指定且唯一。
-file, -cacheFile, -cacheArchive:分別用于向計(jì)算節(jié)點(diǎn)分發(fā)本地文件、HDFS文件和HDFS壓縮文件
-numReduceTasks:指定reducer的個(gè)數(shù),如果設(shè)置-numReduceTasks 0或者-reducer NONE則沒有reducer程序,
mapper的輸出直接作為整個(gè)作業(yè)的輸出。 -jobconf | -D NAME=VALUE:指定作業(yè)參數(shù),NAME是參數(shù)名,VALUE
是參數(shù)值,可以指定的參數(shù)參考hadoop-default.xml。特別建議用-jobconf mapred.job.name=’My Job Name’
設(shè)置作業(yè)名,使用-jobconf mapred.job.priority=VERY_HIGH | HIGH | NORMAL | LOW | VERY_LOW設(shè)置
作業(yè)優(yōu)先級,使用-jobconf mapred.job.map.capacity=M設(shè)置同時(shí)最多運(yùn)行M個(gè)map任務(wù),使用
-jobconf mapred.job.reduce.capacity=N設(shè)置同時(shí)最多運(yùn)行N個(gè)reduce任務(wù)。
常見的作業(yè)配置參數(shù)如下表所示:
mapred.job.name 作業(yè)名
mapred.job.priority 作業(yè)優(yōu)先級
mapred.job.map.capacity 最多同時(shí)運(yùn)行map任務(wù)數(shù)
mapred.job.reduce.capacity 最多同時(shí)運(yùn)行reduce任務(wù)數(shù)
hadoop.job.ugi 作業(yè)執(zhí)行權(quán)限
mapred.map.tasks map任務(wù)個(gè)數(shù)
mapred.reduce.tasks reduce任務(wù)個(gè)數(shù)
mapred.job.groups 作業(yè)可運(yùn)行的計(jì)算節(jié)點(diǎn)分組
mapred.task.timeout 任務(wù)沒有響應(yīng)(輸入輸出)的最大時(shí)間
mapred.compress.map.output map的輸出是否壓縮
mapred.map.output.compression.codec map的輸出壓縮方式
mapred.output.compress reduce的輸出是否壓縮
mapred.output.compression.codec reduce的輸出壓縮方式
stream.map.output.field.separator map輸出分隔符
-combiner:指定combiner Java類,對應(yīng)的Java類文件打包成jar文件后用-file分發(fā)。
-partitioner:指定partitioner Java類,Streaming提供了一些實(shí)用的partitioner實(shí)現(xiàn)
-inputformat, -outputformat:指定inputformat和outputformat Java類,用于讀取輸入數(shù)據(jù)和寫入輸出數(shù)據(jù),
分別要實(shí)現(xiàn)InputFormat和OutputFormat接口。如果不指定,默認(rèn)使用TextInputFormat和TextOutputFormat。
-cmdenv NAME=VALUE:給mapper和reducer程序傳遞額外的環(huán)境變量,NAME是變量名,VALUE是變量值。
-mapdebug, -reducedebug:分別指定mapper和reducer程序失敗時(shí)運(yùn)行的debug程序。
-verbose:指定輸出詳細(xì)信息,例如分發(fā)哪些文件,實(shí)際作業(yè)配置參數(shù)值等,可以用于調(diào)試。
注意事項(xiàng)
1).mapper或reducer程序盡量輸出一些重要的錯(cuò)誤日志到標(biāo)準(zhǔn)錯(cuò)誤,不要寫本地文件,因?yàn)槌绦驁?zhí)行完以后本地文件就會被刪
除,但是輸出到標(biāo)準(zhǔn)錯(cuò)誤的日志會被保存,有利于出現(xiàn)問題定位程序問題。但是量不要太大,否則會影響性能。
2).注意mapper和reducer程序的返回值,Streaming框架默認(rèn)認(rèn)為程序返回值為0時(shí)用戶程序正常,非0時(shí)用戶程序異常從而
導(dǎo)致任務(wù)失敗,多次任務(wù)失敗導(dǎo)致作業(yè)失敗。
3).mapper或reducer程序在遇到從標(biāo)準(zhǔn)輸入讀到EOF,讀標(biāo)準(zhǔn)輸入異常,pipe broken異常,寫標(biāo)準(zhǔn)輸出異常,寫標(biāo)準(zhǔn)錯(cuò)誤異
常時(shí),應(yīng)該主動退出。
4).mapper或reducer程序可以在當(dāng)前目錄下創(chuàng)建臨時(shí)文件進(jìn)行讀寫,但是不允許向它的上層目錄,或者在cacheArchive解壓
后的目錄中創(chuàng)建或?qū)懳募?/span>
5).zip壓縮包中不能有中文字符的文件名,否則Java解壓會出現(xiàn)異常。如果使用新版本命令格式,命令行中參數(shù)要先指定
genericOptions如-D,然后指定commandOptions如-mapper