上一篇文章介紹了Streaming的各種參數,本文具體介紹使用方法。
提交hadoop任務示例:
$HADOOP_HOME/bin/hadoop streaming \
-input /user/test/input -output /user/test/output \
-mapper “mymapper.sh” -reducer “myreducer.sh” \
-file/home/work/mymapper.sh \
-file /home/work/myreducer.sh \
-jobconf mapred.job.name=”file-demo”
上面的命令提交了一個hadoop任務,輸出和輸入分別為 /user/test/output 和/user/test/input。 map程序為 mymapper.sh,reduce程序為myreducer.sh。這里需要注意一定要將這兩個文件用-file分發到集群的節點上。最后一行指定了任務的名字。
還有一些較為復雜的使用,比如需要指定任務個數等,可以使用
-jobconf mapred.job.map.capacity=m -jobconf mapred.job.reduce.capacity=n
上面的命令設置最多同時運行m個map任務,n個reduce任務,如果m或n為0或者沒有指定,則對應的capacity沒有限制,默認配置就是0沒有限制。建議在運行作業時都設置map和reduce capacity,防止作業占用過多資源。
當然,這里只是簡單介紹了最基本的用法,hadoop streaming還有很多高級使用方法,可一些很強大的排序指定功能,這里不再過多介紹,有需要的朋友可以給我留言進行詢問,只要我遇到過的問題一定給出解決方案。如果運行時出現錯誤,可以參見我的另一篇文章——hadoop錯誤碼