我在谷歌控制台中通过部署界面部署了一个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配置正确的属性 –