Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 映射减少输入拆分未按预期工作_Python_Amazon S3_Mapreduce_Hadoop2_Hadoop Streaming - Fatal编程技术网

Python 映射减少输入拆分未按预期工作

Python 映射减少输入拆分未按预期工作,python,amazon-s3,mapreduce,hadoop2,hadoop-streaming,Python,Amazon S3,Mapreduce,Hadoop2,Hadoop Streaming,我正在尝试在hadoop2集群中运行hadoop流应用程序。我正在使用以下配置启动应用程序 hadoop jar /usr/lib/hadoop2/share/hadoop/tools/lib/hadoop-streaming.jar \ -D mapred.job.name=step01_load_delta_customer_events \ -D mapreduce.input.fileinputformat.split.minsize=134217728 \ -D mapreduce.j

我正在尝试在hadoop2集群中运行hadoop流应用程序。我正在使用以下配置启动应用程序

hadoop jar /usr/lib/hadoop2/share/hadoop/tools/lib/hadoop-streaming.jar \
-D mapred.job.name=step01_load_delta_customer_events \
-D mapreduce.input.fileinputformat.split.minsize=134217728 \
-D mapreduce.job.reduces=10 \
-D mapreduce.map.memory.mb=4704 \
-D mapreduce.map.java.opts=-Xmx4416m \
-D stream.map.input.ignoreKey=true  \
-D mapreduce.map.output.compress=true \
-D mapreduce.output.fileoutputformat.compress=true \
-D mapreduce.output.fileoutputformat.compress.type=BLOCK \
-D mapred.max.map.failures.percent=7 \
-D mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.GzipCodec \
-D mapreduce.map.output.compress.codec=com.hadoop.compression.lzo.LzoCodec \
-D mapred.output.committer.class=org.apache.hadoop.mapred.DirectFileOutputCommitter \
-D mapreduce.use.directfileoutputcommitter=true \
-files <file path>  \
-mapper <mapper code in python>  \
-reducer <reduce code in python>  \
-input "$INPUT"  \
-outputformat org.apache.hadoop.mapred.TextOutputFormat  \
-output "$OUTPUT"
hadoop-jar/usr/lib/hadoop2/share/hadoop/tools/lib/hadoop-streaming.jar\
-D mapred.job.name=step01\u load\u delta\u customer\u事件\
-D mapreduce.input.fileinputformat.split.minsize=134217728\
-D mapreduce.job.reduces=10\
-D mapreduce.map.memory.mb=4704\
-D mapreduce.map.java.opts=-Xmx4416m\
-D stream.map.input.ignoreKey=true\
-D mapreduce.map.output.compress=true\
-D mapreduce.output.fileoutputformat.compress=true\
-D mapreduce.output.fileoutputformat.compress.type=BLOCK\
-D mapred.max.map.failures.percent=7\
-D mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.gzip代码\
-D mapreduce.map.output.compress.codec=com.hadoop.compression.lzo.LzoCodec\
-D mapred.output.committer.class=org.apache.hadoop.mapred.DirectFileOutputCommitter\
-D mapreduce.use.directfileoutputcommitter=true\
-档案\
-制图员\
-减速器\
-输入“$input”\
-outputformat org.apache.hadoop.mapred.TextOutputFormat\
-输出“$output”

我的输入文件保存在AWS S3中,我的输入路径中有5400个S3对象。输入对象大小从1MB到100MB不等,总输入大小约为25GB。根据我的输入分割大小配置,我期望运行200个映射器任务。但在运行该应用程序时,有5400个映射程序任务正在运行,这与我输入的s3对象数完全相等。我认为这会影响我的应用程序的性能。有人能帮我理解这种行为吗。在这种情况下,我如何控制映射器的数量?我的应用程序正在qubole hadoop2集群中运行。

问题在于输入格式。我使用combineTextInputFormat而不是textInputFormat,输入分割效果很好。

我的hadoop流媒体作业运行缓慢,并且只使用2个映射器运行。我添加了选项“-D mapreduce.input.fileinputformat.split.maxsize=33554432-inputformat org.apache.hadoop.mapred.lib.CombineTextInputFormat”,它确实使用了许多映射程序,但给出了空结果。输入没有被压缩

当不指定“-inputformat org.apache.hadoop.mapred.lib.CombineTextInputFormat”时,split.maxsize不会有任何效果,它仍然只使用2个映射器


这是什么原因造成的?日志未显示有用的调试信息。

您应该接受此作为解决问题的答案。