在hadoop上運(yùn)行python程序
準(zhǔn)備文件
測試文件test.txt (/home/hadoop/input/test.txt)
mapper.py (/home/hadoop/input/code/mapper.py)
reducer.py (/home/hadoop/input/code/reducer.py)
以上文件的存放路徑可以自己定義,這里是以我的目前操作環(huán)境來進(jìn)行教程斧账,請自行對照替換路徑
我的HADOOP_HOME是/home/hadoop/hadoop-1.0.4
1.配置好你的hadoop分布式集群靡挥,請?jiān)谀愕南到y(tǒng)變量中配置好HADOOP_HOME為hadoop文件夾根目錄
2.啟動hdfs和mapreducer
start-all.sh
3.將你用作測試的輸入文件存放到hdfs上(當(dāng)然是在master主機(jī)上操作啦)
#c創(chuàng)建input文件夾存放測試文件
hadoop dfs -mkdir hdfs://master:9000/user/hadoop/input
#將本地的文件發(fā)送到hdfs
hadoop dfs -copyFromLocal /home/hadoop/input/test.txt hdfs://master:9000/user/hadoop/input
4.開始運(yùn)行你的python程序
#hadoop1.x版本
hadoop jar $HADOOP_HOME/contrib/streaming/hadoop-streaming-1.0.4.jar \
-mapper 'python mapper.py' -file /home/hadoop/code/mapper.py\
-reducer 'python reducer.py' -file /home/hadoop/code/reducer.py \
-input hdfs://master:9000/input/* -output hdfs://master:9000/output
$HADOOP_HOME/contrib/streaming/hadoop-streaming-1.0.4.jar
它是個java程序,先運(yùn)行這個程序,它會創(chuàng)建進(jìn)程運(yùn)行運(yùn)行你的python程序,hadoop能運(yùn)行所有語言的程序都依賴于它.
-mapper 'python mapper.py'
mapper后面跟的是個命令,用于啟動你的程序
-file /home/hadoop/code/mapper.py
file指明了你的程序所在的路徑趁尼,以便分發(fā)到所有的slave機(jī)器上運(yùn)行
-input hdfs://master:9000/input/*
input指明了輸入文件的路徑,它會讀取input目錄下的所有文件猖辫,由標(biāo)準(zhǔn)輸入的方式傳送給你的程序
-output hdfs://master:9000/output
output指明的輸出結(jié)果的存放路徑酥泞,它會自動創(chuàng)建該路徑,所以請不要指向一個已經(jīng)存在的文件夾啃憎,否則會報(bào)錯
參考網(wǎng)址:http://www.reibang.com/p/4c57e7e3f02f