我有一个Hadoop作业,在输入大量输入文件时需要很长时间才能初始化,我不知道为什么。无论使用多少文件,作业都会在几秒钟内找到所有节点和文件,但如果给定10,000个文件,则需要花费大量时间(分钟)来确定拆分数。当我以不同的用户身份运行作业时,作业将立即确定分割的数量。
$ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar -D 'mapreduce.job.name=...'
packageJobJar: [] [/usr/lib/hadoop-mapreduce/hadoop-streaming-2.6.0-cdh5.11.0.jar] /tmp/streamjob4556879591438635545.jar tmpDir=null
17/08/07 22:01:40 INFO client.RMProxy: Connecting to ResourceManager at jobtracker-dev.la.prod.factual.com/10.20.103.16:8032
...
17/08/07 22:01:41 INFO security.TokenCache: Got dt for hdfs://dev; Kind: HDFS_DELEGATION_TOKEN....
17/08/07 22:01:41 INFO lzo.GPLNativeCodeLoader: Loaded native gpl library
17/08/07 22:01:41 INFO lzo.LzoCodec: Successfully loaded & initialized native-lzo library [hadoop-lzo rev 674c65bbf0f779edc3e00a00c953b121f1988fe1]
17/08/07 22:01:41 INFO mapred.FileInputFormat: Total input paths to process : 10000
17/08/07 22:01:41 INFO net.NetworkTopology: Adding a new node: /cs3/211/...
17/08/07 22:01:41 INFO net.NetworkTopology: Adding a new node: /cs3/210/...
...
<LONG PAUSE>
...
17/08/07 22:31:39 INFO mapreduce.JobSubmitter: number of splits:10000
显然,这不是很多信息,但是有没有人知道可能会发生什么?
答案 0 :(得分:1)
所花费的时间取决于这么多参数,为了开始您可以专门检查您的群集容量和纱线配置。 如果您有10k分割意味着AM与任务的协调将花费大量时间,请记住hadoop是为处理不小{大数}文件的大文件而构建的。 请检查您的hdfs块大小,以及您放置了多少。 确保您是分布式模式,建立与数据节点的密码连接。 特别是&#34; 当我以不同的用户身份运行作业时,作业将立即确定分割的数量。&#34;这不是HADOOP容量问题,请正确检查您的配置。如果您有足够的预算,可以使用ambari管理您的群集。