MacBook M1执行start-dfs命令启动Hadoop失败求助
解决MacBook M1上Hadoop start-dfs.sh启动问题
- 修复日志目录权限
日志提示/opt/homebrew/Cellar/hadoop/3.3.4/libexec/logs不存在,虽然显示自动创建,但M1环境下可能因权限问题导致创建失败或无法写入,执行以下命令手动创建并赋权:
sudo mkdir -p /opt/homebrew/Cellar/hadoop/3.3.4/libexec/logs sudo chown -R $USER:staff /opt/homebrew/Cellar/hadoop/3.3.4/libexec/logs
- 配置本地SSH免密登录
Hadoop通过SSH启动节点,必须确保本地免密登录可用:
- 生成密钥:
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
- 将公钥添加到授权列表:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 0600 ~/.ssh/authorized_keys
- 测试
ssh localhost,确认无需输入密码即可登录。
- 检查并修正Hadoop核心配置
修改/opt/homebrew/Cellar/hadoop/3.3.4/libexec/etc/hadoop下的配置文件:
- core-site.xml:
<configuration> <property> <name>hadoop.tmp.dir</name> <value>/opt/homebrew/Cellar/hadoop/3.3.4/libexec/tmp</value> <description>临时文件根目录</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
- hdfs-site.xml:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/opt/homebrew/Cellar/hadoop/3.3.4/libexec/hadoop_data/hdfs/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/opt/homebrew/Cellar/hadoop/3.3.4/libexec/hadoop_data/hdfs/datanode</value> </property> </configuration>
- 创建配置中指定的目录并赋权:
sudo mkdir -p /opt/homebrew/Cellar/hadoop/3.3.4/libexec/tmp sudo mkdir -p /opt/homebrew/Cellar/hadoop/3.3.4/libexec/hadoop_data/hdfs/namenode sudo mkdir -p /opt/homebrew/Cellar/hadoop/3.3.4/libexec/hadoop_data/hdfs/datanode sudo chown -R $USER:staff /opt/homebrew/Cellar/hadoop/3.3.4/libexec/tmp /opt/homebrew/Cellar/hadoop/3.3.4/libexec/hadoop_data
- 重新格式化NameNode并启动
执行格式化命令:
hdfs namenode -format
之后再运行:
start-dfs.sh
- 关于Native-Hadoop库加载警告
M1的ARM架构与Hadoop官方原生库不兼容,这个警告不影响核心功能启动。若要彻底解决,需下载Hadoop源码,安装Xcode Command Line Tools、CMake等依赖后,编译适配ARM架构的原生库替换原有文件。
内容的提问来源于stack exchange,提问作者Ramc_26
相关产品推荐
相关产品推荐

