我在谷歌控制檯中通過部署界面部署了一個hadoop集羣。 (Hadoop 2.x)Hadoop和Google雲存儲連接器問題
我的任務是過濾存儲在一個Google存儲(GS)存儲桶中的數據,並將結果放到另一個存儲。所以,這是一個只有簡單的python腳本的地圖作業。請注意,羣集和輸出存儲區位於同一個區域(EU)。
利用谷歌雲存儲連接器,我運行下面的數據流作業:
hadoop jar /home/hadoop/hadoop-install/share/hadoop/tools/lib/hadoop-streaming-2.4.1.jar \
-D mapreduce.output.fileoutputformat.compress=true \
-D mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.GzipCodec \
-D mapreduce.job.reduces=0 \
-file file_1 \
-file mymapper.py \
-input gs://inputbucket/somedir/somedir2/*-us-* \
-output gs://outputbucket/somedir3/somedir2 \
-inputformat org.apache.hadoop.mapred.TextInputFormat \
-mapper mymapper.py
什麼情況是所有的地圖製作過程數據和存儲在GS臨時目錄中,它看起來像結果:
gs://outputbucket/somedir3/somedir2/_temporary/1/mapper-0000/part-0000.gz
畢竟mappers完成後,工作進度掛在100%的地圖,0%減少。看着gsutil所輸出鬥,我看到結果文件被複制到目標目錄:
gs://outputbucket/somedir3/somedir2
這個過程需要很長的時間和使用Hadoop殺死了整體效益。 我的問題是:
1)這是一個已知的問題,或者我只是做錯了什麼?我找不到任何相關信息。
2)我正確地說,通常hdfs會將這些文件移動到目標目錄,但GS不能執行移動,因此文件被複制?
3)我能做些什麼來避免這種模式?
您使用的是Hadoop 1.x還是2.x? –
我正在使用Hadoop 2.x – user5519499
您正在使用不推薦使用的屬性。從https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/DeprecatedProperties.html配置正確的屬性 –