Hadoop运行任务时一直卡在: INFO mapreduce.Job: Running job

本文记录了解决Hadoop和Hive复杂查询卡住的问题,通过调整YARN的内存配置最终使问题得以解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  今天,一大清早同事就让我帮他解决Hive的问题:他在Hive中执行简单的查询(直接从hive查询数据,没有MR过程)能很快的得到结果,但是执行复杂的查询时,就一直卡着不动.我连到服务器上试了一下,跟他遇到的问题一样,问题处在哪里呢?既然简单的查询能出结果,复杂查询需要MR计算,但是却卡住了,那估计是Hadoop的问题.

  于是,我在Hadoop跑一个简单的WountCound程序试试,结果跟Hive中遇到的情况一样:

   

    然后就一直卡在这个界面,很久都没有结果.

 最先想到的是:配置可能有点问题.于是我把配置检查了一遍,发现配置没错.于是,我又去检查Yarn和HDFS的启动日志,也没有发现ERROR.接着,我查看每个任务运行时的Container日志,也没有Error.真是见鬼了!

 在我查看各种日志和配置的时候,我同事在Docker中,将集群上的配置Copy过去,试了一遍,能正常运行!这...

 然后,我各种百度,google,在百度出来的各种方法我都试了一遍,仍然没有解决问题!于是,我同事说,是不是安装的时候有些包损坏了.于是,他又重新装了一边Hadoop,还是使用原来的配置,可问题依旧!

 此时,都已经搞了一直整天了,还有一个小时就要下班了!大哭于是,我在Google中看了几篇文章,基本上上面所说的方法我都试了.终于,在Stackover上有一个哥们也遇到了同样的问题,有人帮他解决了,里面链接到了一个网站:http://hortonworks.com/blog/how-to-plan-and-configure-yarn-in-hdp-2-0/  ,我打开一看,说的是要设置yarn里面关于内存和虚拟内存的配置项.我以前没配置这几项,也能正常运行,感觉是这个问题的可能性不大啊!但是,既然这么多方法都不管用,这能试一试了. 

  于是,我在yarn-site.xml中加了:

      

<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>20480</value>
</property>
<property>
   <name>yarn.scheduler.minimum-allocation-mb</name>
   <value>2048</value>
</property>
<property>
    <name>yarn.nodemanager.vmem-pmem-ratio</name>
    <value>2.1</value>
</property>
   再次运行,居然成功了!

 然后运行Hive,也能正确的运行了!

    出现此故障的原因应该是,在每个Docker分配的内存和CPU资源太少,不能满足Hadoop和Hive运行所需的默认资源需求。特此备忘!


[root@hadoop01 jars]# hadoop jar film.jar CleanDriver /film/input /film/outputs/cleandata 25/03/29 14:28:19 INFO client.RMProxy: Connecting to ResourceManager at hadoop01/192.168.20.20:8032 25/03/29 14:28:19 INFO input.FileInputFormat: Total input paths to process : 1 25/03/29 14:28:19 INFO mapreduce.JobSubmitter: number of splits:1 25/03/29 14:28:19 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1743079842141_0006 25/03/29 14:28:20 INFO impl.YarnClientImpl: Submitted application application_1743079842141_0006 25/03/29 14:28:20 INFO mapreduce.Job: The url to track the job: http://hadoop01:8088/proxy/application_1743079842141_0006/ 25/03/29 14:28:20 INFO mapreduce.Job: Running job: job_1743079842141_0006 25/03/29 14:28:26 INFO mapreduce.Job: Job job_1743079842141_0006 running in uber mode : false 25/03/29 14:28:26 INFO mapreduce.Job: map 0% reduce 0% 25/03/29 14:28:31 INFO mapreduce.Job: map 100% reduce 0% 25/03/29 14:28:36 INFO mapreduce.Job: map 100% reduce 100% 25/03/29 14:28:36 INFO mapreduce.Job: Job job_1743079842141_0006 completed successfully 25/03/29 14:28:36 INFO mapreduce.Job: Counters: 49 File System Counters FILE: Number of bytes read=6 FILE: Number of bytes written=245465 FILE: Number of read operations=0 FILE: Number of large read operations=0 FILE: Number of write operations=0 HDFS: Number of bytes read=8669 HDFS: Number of bytes written=0 HDFS: Number of read operations=6 HDFS: Number of large read operations=0 HDFS: Number of write operations=2 Job Counters Launched map tasks=1 Launched reduce tasks=1 Data-local map tasks=1 Total time spent by all maps in occupied slots (ms)=2452 Total time spent by all reduces in occupied slots (ms)=2374 Total time spent by all map tasks (ms)=2452 Total time spent by all reduce tasks (ms)=2374 Total vcore-milliseconds taken by all map tasks=2452 Total vcore-milliseconds taken by all reduce tasks=2374 Total megabyte-milliseconds taken by all map tasks=251084
03-30
<think>嗯,用户想知道Hadoop MapReduce作业的执行详情和性能指标分析。首先,我需要回忆一下Hadoop MapReduce的工作原理。根据引用[2]和[3],MapReduce分为Map阶段和Reduce阶段,中间还有Shuffle和Sort。用户可能需要了解每个阶段的细节,比如任务分配、资源使用情况,以及如何收集和分析性能指标。 首先,作业执行详情部分应该分阶段讲解。Map阶段涉及输入分片、任务分配,比如每个map任务处理的数据块。然后Shuffle阶段,reduce任务从各个map节点拉取数据,这里可能涉及网络传输和并行拷贝的设置,如引用[3]提到的mapreduce.reduce.shuffle.parallelcopies参数。Sort阶段在Reduce之前进行,影响排序效率的因素可能有内存缓冲区大小和溢写次数。 接下来是性能指标分析。需要提到资源利用率,比如内存和CPU,如引用[2]中提到的mapreduce.map.memory.mb和mapreduce.reduce.cpu.vcores这些参数。数据倾斜也是一个关键点,用户可能需要知道如何识别和处理Map或Reduce阶段的数据分布不均。此外,Shuffle阶段的网络和磁盘IO指标也很重要,比如传输的数据量。 优化方法部分,应该包括参数调整,比如增加并行度或调整内存设置。推测执行和Combiner的使用也是常见优化手段。另外,引用[3]提到reduce输出不写在本地磁盘,这点可能需要澄清,或者是否影响性能? 用户可能还想知道如何具体获取这些指标,比如通过JobTracker UI或YARN的ResourceManager,以及日志分析工具。此外,相关的问题可以引导用户深入探讨性能调优、数据倾斜解决方法,或者Shuffle机制的具体细节。 需要确保回答结构清晰,分点列出执行详情和性能指标,并给出优化建议。同,引用正确的参考文献,比如配置参数来自引用[2],Shuffle的并行拷贝来自引用[3]。可能还需要检查是否遗漏了其他重要指标,如任务执行间、失败重试次数等。最后,生成的相关问题要围绕用户可能的后续疑问展开,比如如何调优或处理特定错误。</think>### Hadoop MapReduce作业执行详情与性能指标分析 #### 一、作业执行阶段详解 1. **Map阶段** - 输入数据被划分为多个分片(Input Splits),每个分片对应一个Map任务$^{[2]}$ - 任务分配由YARN ResourceManager完成,每个Map任务默认分配1024 MB内存和1个虚拟核$^{[2]}$ - 中间结果存储在运行Map任务的节点本地磁盘,按`<key,value>`形式输出$^{[3]}$ 2. **Shuffle阶段** - Reduce任务通过5个并行线程(可配置`mapreduce.reduce.shuffle.parallelcopies`)拉取Map输出$^{[3]}$ - 数据跨节点传输产生网络IO,可能成为性能瓶颈 3. **Sort阶段** - Map输出在Reduce端按key排序,默认使用快速排序算法 - 排序过程涉及内存缓冲区(`mapreduce.task.io.sort.mb`)和磁盘溢写 4. **Reduce阶段** - 聚合处理已排序数据,最终输出到HDFS - 默认分配与Map任务相同的资源规格$^{[2]}$ #### 二、关键性能指标 1. **资源利用率** - **内存使用**:通过`mapreduce.map.memory.mb`和`mapreduce.reduce.memory.mb`监控 - **CPU负载**:`mapreduce.map.cpu.vcores`配置决定计算密度$^{[2]}$ 2. **数据倾斜检测** - Map/Reduce任务执行间差异超过200%可能发生数据倾斜 - 通过计数器`Map output records`对比各任务记录数 3. **Shuffle效率** - `Shuffled Maps`显示成功传输的Map输出比例 - `Reduce Shuffle Bytes`反映网络传输量 4. **任务吞吐量** - `Bytes Read/Written`统计各阶段数据吞吐 - `GC Time`反映JVM垃圾回收对性能的影响 #### 三、优化方法 1. **参数调优** ```xml <!-- 示例配置 --> <property> <name>mapreduce.reduce.shuffle.parallelcopies</name> <value>10</value> <!-- 提升shuffle并行度 --> </property> <property> <name>mapreduce.task.io.sort.factor</name> <value>100</value> <!-- 增加合并文件数 --> </property> ``` 2. **数据预处理** - 使用Combiner减少网络传输:$$ \text{Combiner}(k, [v_1,v_2]) \rightarrow [(k, \sum v_i)] $$ - 采用LZO/Zstandard压缩中间数据 3. **硬件级优化** - 为Shuffle阶段配置专用SSD磁盘 - 调整网络拓扑策略减少跨机架传输 #### 四、性能分析工具 1. **内置监控** - JobTracker Web UI(端口50030)显示任务间线 - `Counters API`获取详细指标: ```bash hadoop job -counter <job_id> <group_name> <counter_name> ``` 2. **高级分析** - 使用Apache Drill直接查询作业历史日志 - 集成Prometheus+Grafana实现实监控 $$ \text{作业效率} = \frac{\text{有效计算间}}{\text{总执行间}} \times 100\% $$
评论 40
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值