[root@cdh1 expers]# yarn jar /opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/hadoop-mapreduce/hadoop-streaming.jar \ > -D mapreduce.job.queuename=default \ > -files mapper.py,reducer.py \ > -mapper "python mapper.py" \ > -reducer "python reducer.py" \ > -input /user/dr/exper.txt \ > -output /user/dr/output WARNING: YARN_OPTS has been replaced by HADOOP_OPTS. Using value of YARN_OPTS. packageJobJar: [] [/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/jars/hadoop-streaming-3.0.0-cdh6.3.2.jar] /tmp/streamjob4915326641913657665.jar tmpDir=null 25/03/18 21:20:15 INFO client.RMProxy: Connecting to ResourceManager at cdh1/192.168.153.90:8032 25/03/18 21:20:16 INFO client.RMProxy: Connecting to ResourceManager at cdh1/192.168.153.90:8032 25/03/18 21:20:17 INFO mapreduce.JobResourceUploader: Disabling Erasure Coding for path: /user/root/.staging/job_1742297342561_0008 25/03/18 21:20:17 INFO mapred.FileInputFormat: Total input files to process : 1 25/03/18 21:20:18 INFO mapreduce.JobSubmitter: number of splits:2 25/03/18 21:20:18 INFO Configuration.deprecation: yarn.resourcemanager.system-metrics-publisher.enabled is deprecated. Instead, use yarn.system-metrics-publisher.enabled 25/03/18 21:20:18 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1742297342561_0008 25/03/18 21:20:18 INFO mapreduce.JobSubmitter: Executing with tokens: [] 25/03/18 21:20:18 INFO conf.Configuration: resource-types.xml not found 25/03/18 21:20:18 INFO resource.ResourceUtils: Unable to find 'resource-types.xml'. 25/03/18 21:20:19 INFO impl.YarnClientImpl: Submitted application application_1742297342561_0008 25/03/18 21:20:19 INFO mapreduce.Job: The url to track the job: http://cdh1:8088/proxy/application_1742297342561_0008/ 25/03/18 21:20:19 INFO mapreduce.Job: Running job: job_1742297342561_0008 25/03/18 21:20:24 INFO mapreduce.Job: Job job_1742297342561_0008 running in uber mode : false 25/03/18 21:20:24 INFO mapreduce.Job: map 0% reduce 0% 25/03/18 21:20:24 INFO mapredu
时间: 2025-07-06 08:44:45 浏览: 16
<think>嗯,用户给了一个关于Hadoop Streaming命令的问题,需要解释这个命令的执行过程和输出日志。首先,我得理解用户的需求是什么。看起来他们可能是在运行一个MapReduce作业时遇到了问题,或者只是想了解这个命令的具体含义和日志信息。用户提供的命令使用了yarn jar来执行Hadoop Streaming的JAR文件,指定了队列、mapper和reducer脚本,输入输出路径等参数。然后有一堆日志输出,里面包括警告和信息消息。
首先,我需要分解这个命令的各个部分,解释每个参数的作用,比如-D设置队列,-files分发文件,-mapper和-reducer指定执行脚本,输入输出路径的意义。然后,用户提供的日志中有一些关键点,比如WARNING提示YARN_OPTS被替换,ResourceManager的连接信息,作业提交的过程,分片数量,以及作业跟踪的URL。另外,日志中提到的进度信息显示作业刚开始运行,但用户可能想知道后续的结果或者是否成功,不过给出的日志只到map 0% reduce 0%,可能用户没有贴出完整的日志,或者作业刚开始就被中断了。
接下来,用户可能需要了解这些日志的含义,是否有错误,或者如何确认作业是否成功。此外,可能需要解释Hadoop Streaming的工作原理,即允许用任何可执行脚本来处理数据,这里用的是Python脚本。还需要提到常见问题,比如权限问题、脚本是否正确、输入输出路径是否存在等。此外,关于YARN_OPTS的警告可能不需要担心,但可以建议用户检查环境变量。另外,提到的resource-types.xml缺失的信息,可能只是Hadoop版本的问题,可以忽略。
用户可能还不太清楚如何查看作业状态,可以指导他们使用提供的URL来跟踪作业进度,或者使用yarn application -list等命令。同时,如果作业失败,需要检查日志中的错误信息,比如mapper或reducer是否有异常。另外,需要确认输入路径是否存在,输出路径是否未被创建,否则作业会失败。
可能用户在执行这个命令时遇到了问题,比如作业卡住或者失败,所以才会贴出日志询问。但根据提供的日志,作业刚刚提交,可能还在运行中。需要告诉用户如何进一步诊断,比如查看作业跟踪页面,或者使用yarn logs命令获取详细日志。
总结来说,回答应该分步骤解释命令结构,日志中的关键信息,可能的警告和提示,以及后续如何验证作业状态和解决常见问题。同时,保持语言清晰,结构分明,帮助用户逐步理解整个过程。</think>这个命令是使用Hadoop Streaming工具运行一个MapReduce作业。以下是对命令和输出日志的逐层解析:
---
### **一、命令结构解析**
```bash
yarn jar /opt/cloudera/parcels/CDH-6.3.2-.../hadoop-streaming.jar \
-D mapreduce.job.queuename=default \
-files mapper.py,reducer.py \
-mapper "python mapper.py" \
-reducer "python reducer.py" \
-input /user/dr/exper.txt \
-output /user/dr/output
```
1. **`yarn jar`**
使用YARN框架运行Hadoop JAR包。
2. **`-D mapreduce.job.queuename=default`**
指定作业提交到YARN的`default`队列。
3. **`-files mapper.py,reducer.py`**
将本地文件`mapper.py`和`reducer.py`分发到集群所有节点。
4. **`-mapper` 和 `-reducer`**
指定用Python解释器执行Mapper和Reducer脚本。
5. **`-input` 和 `-output`**
输入路径为HDFS上的`/user/dr/exper.txt`,输出路径为`/user/dr/output`。
---
### **二、日志关键信息解析**
1. **`WARNING: YARN_OPTS replaced by HADOOP_OPTS`**
环境变量`YARN_OPTS`已废弃,改用`HADOOP_OPTS`(可忽略此警告)。
2. **`Connecting to ResourceManager at cdh1:8032`**
作业连接到YARN资源管理器(ResourceManager),IP为`192.168.153.90`,端口`8032`。
3. **`Total input files to process : 1`**
输入文件只有一个(`exper.txt`)。
4. **`number of splits:2`**
Hadoop将输入文件切分为2个分片(Split),即启动2个Map任务。
5. **`application_1742297342561_0008`**
作业的YARN应用ID,可通过`http://cdh1:8088`的Web UI跟踪作业状态。
6. **`map 0% reduce 0%`**
初始进度显示,作业刚刚开始运行。
---
### **三、可能的问题与验证方法**
1. **作业是否成功?**
- 检查输出目录是否存在:`hdfs dfs -ls /user/dr/output`
- 查看最终日志是否显示`map 100% reduce 100%`。
2. **常见失败原因**
- **Mapper/Reducer脚本权限问题**:确保脚本有可执行权限(`chmod +x *.py`)。
- **Python环境问题**:集群节点需安装Python,且版本与脚本兼容。
- **输出目录已存在**:Hadoop要求输出目录必须不存在(删除旧目录:`hdfs dfs -rm -r /user/dr/output`)。
3. **调试建议**
- 通过Web UI查看详细日志:`http://cdh1:8088/proxy/application_1742297342561_0008/`
- 本地测试脚本:`cat exper.txt | python mapper.py | sort | python reducer.py`
---
### **四、Hadoop Streaming工作原理**
1. **数据流**
输入数据 → Mapper逐行处理 → Shuffle排序 → Reducer聚合 → 输出到HDFS。
2. **跨语言支持**
通过标准输入(`stdin`)和标准输出(`stdout`)与MapReduce框架交互,支持任意语言编写脚本。
---
如果需进一步排查问题,请提供完整的作业完成日志或错误堆栈。
阅读全文
相关推荐










