Hadoop搭建之 start-yarn.sh 报错

在配置好Hadoop伪分布式环境并启动HDFS后,尝试启动YARN组件时遇到错误,错误信息显示找不到YARN的日志文件路径。通过检查发现yarn.env.sh文件中环境变量未正确配置。解决方法是编辑yarn.env.sh,设置正确的$HADOOP_YARN_HOME等环境变量,并根据JDK和HADOOP的实际路径调整。完成配置后,重新启动YARN,ResourceManager和NodeManager进程正常运行,标志着Hadoop启动成功。

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

在搭建伪分布式的Hadoop集群环境时,在配置基础环境了并成功开启了HDFS组件后,jps查看已运行的名称节点和数据节点进程,

[hadoop@master hadoop]$ jps
8994 NameNode
10396 Jps
9087 DataNode
9279 SecondaryNameNode

然后尝试开启YARN组件,但是报错:

[hadoop@master hadoop]$ start-yarn.sh 
starting yarn daemons
mkdir: cannot create directory ‘/usr/local/hadoop’: Permission denied
chown: cannot access ‘/usr/local/hadoop/logs’: No such file or directory
starting resourcemanager, logging to /usr/local/hadoop/logs/yarn-hadoop-resourcemanager-master.out
/home/hadoop/app/hadoop-2.7.5/sbin/yarn-daemon.sh: line 123: cd: /usr/local/hadoop: No such file or directory
/home/hadoop/app/hadoop-2.7.5/sbin/yarn-daemon.sh: line 124: /usr/local/hadoop/logs/yarn-hadoop-resourcemanager-master.out: No such file or directory
head: cannot open ‘/usr/local/hadoop/logs/yarn-hadoop-resourcemanager-master.out’ for reading: No such fil
<think>嗯,用户遇到了Hadoop部署时start-yarn.sh脚本报出YARN_LOG_DIR的警告,需要解决这个问题。首先,我得回忆一下Hadoop的环境变量配置。根据之前的经验,Hadoop的版本更新可能会改变某些环境变量的名称,比如YARN_CONF_DIR被HADOOP_CONF_DIR替代。类似地,用户提到的YARN_LOG_DIR现在应该用HADOOP_LOG_DIR了。 用户提供的引用[3]中提到,启动JobHistoryServer时出现了警告,说明YARN_CONF_DIR和YARN_LOG_DIR已经被替换。所以解决方案应该涉及修改环境变量,避免使用旧的变量名。可能需要在启动脚本里检查是否设置了YARN_LOG_DIR,并将其替换为HADOOP_LOG_DIR。 接下来,我需要考虑如何具体操作。首先,用户可能需要编辑start-yarn.sh和stop-yarn.sh脚本,或者在hadoop-env.sh中设置正确的环境变量。查看引用[1],用户之前可能在sbin目录下的脚本中添加了用户配置,所以可能需要在同样的地方修改环境变量。比如,将YARN_LOG_DIR替换为HADOOP_LOG_DIR,并确保其指向正确的日志目录。 另外,引用[4]提到配置文件正确的重要性,所以需要检查配置文件中的相关设置。可能还需要检查Hadoop的官方文档,确认环境变量的最新用法。如果用户的环境变量在多个地方被设置,可能会有冲突,需要统一使用HADOOP_LOG_DIR。 步骤可能包括:1. 修改启动脚本中的环境变量;2. 更新配置文件中的相关设置;3. 确保所有节点的配置一致;4. 重新启动服务并验证警告是否消失。同时,要注意权限问题,确保日志目录的写入权限正确设置。 总结下来,解决方案的核心是将所有出现YARN_LOG_DIR的地方替换为HADOOP_LOG_DIR,并确保路径正确。同时,参考用户提供的引用中的方法,比如在start-yarn.sh中添加正确的变量定义,或者调整hadoop-env.sh中的配置。最后,测试启动脚本,确认警告不再出现。</think>以下是解决Hadoop部署中关于$YARN\_LOG\_DIR$环境变量警告的步骤: ### 解决方案 1. **修改启动脚本配置** 在$HADOOP\_HOME/sbin/$目录下的`start-yarn.sh`和`stop-yarn.sh`中,将所有`YARN_LOG_DIR`替换为`HADOOP_LOG_DIR`: ```bash # 修改前 YARN_LOG_DIR=/path/to/yarn/logs # 修改后 HADOOP_LOG_DIR=/path/to/hadoop/logs # 确保路径与集群配置一致 ``` 注意:日志目录需与`hadoop-env.sh`中的配置保持一致[^1][^3]。 2. **更新全局环境变量** 在$HADOOP\_HOME/etc/hadoop/hadoop-env.sh$中统一配置: ```bash export HADOOP_LOG_DIR=/var/log/hadoop # 示例路径,按实际需求修改 # 注释或删除旧的YARN_LOG_DIR定义 # export YARN_LOG_DIR=... ``` 3. **同步配置到所有节点** 通过`scp`将修改后的文件同步至集群所有节点,确保配置一致性: ```bash scp hadoop-env.sh start-yarn.sh node1:$HADOOP_HOME/etc/hadoop/ scp hadoop-env.sh start-yarn.sh node2:$HADOOP_HOME/etc/hadoop/ ``` 4. **验证配置生效** 重启YARN服务并检查日志输出: ```bash ./sbin/stop-yarn.sh && ./sbin/start-yarn.sh tail -f $HADOOP_LOG_DIR/yarn-*.log # 确认无相关WARNING ``` ### 技术原理 Hadoop 3.x版本对日志系统进行了统一管理,废弃了组件独立日志变量(如$YARN\_LOG\_DIR$),改用全局变量$HADOOP\_LOG\_DIR$[^3]。旧脚本继续使用$YARN\_LOG\_DIR$会导致兼容性警告,但不影响服务运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值