新装Hadoop无法启动,报错“sed: can't read : No such file or directory”
核心原因分析
sed报错can't read : No such file or directory通常是Hadoop脚本依赖的环境变量未正确配置,导致sed命令尝试读取空路径文件;log4j警告为次要问题,服务启动正常后可通过配置消除。
分步解决步骤
修正JAVA_HOME环境变量
编辑Hadoop安装目录下的etc/hadoop/hadoop-env.sh,找到export JAVA_HOME行,将其设置为你的Java实际安装路径(示例:export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64),避免使用相对路径或留空。保存后重载环境变量:source /usr/local/hadoop/etc/hadoop/hadoop-env.sh验证HADOOP_CONF_DIR配置
执行以下命令检查该变量是否正确指向Hadoop配置目录:echo $HADOOP_CONF_DIR若为空或路径错误,手动设置:
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop可将该命令添加到
~/.bashrc或~/.profile实现永久生效。检查配置文件路径与权限
确认core-site.xml、hdfs-site.xml中指定的存储目录(如namenode、datanode的数据目录)已提前创建,且当前用户mark拥有读写权限:# 示例创建namenode存储目录 mkdir -p /usr/local/hadoop/hadoop_data/hdfs/namenode chown -R mark:mark /usr/local/hadoop/hadoop_data使用官方推荐的启动命令
start-all.sh已被官方废弃,建议分开启动HDFS和YARN组件,避免脚本兼容性问题:# 启动HDFS组件 start-dfs.sh # 启动YARN组件 start-yarn.sh验证启动状态
执行以下命令检查Hadoop进程是否正常运行:jps正常情况下应显示
NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager这几个进程。
额外提示
log4j警告可通过复制Hadoop配置目录下的log4j.properties.template为log4j.properties,并根据需求调整日志配置来消除。
内容的提问来源于stack exchange,提问作者mariko

