macOS环境启动Hadoop Secondary Namenode出现SSH连接被拒问题求助
解决方案
1. 固定Mac本地主机名,禁止动态变更
Mac默认会根据当前网络环境自动调整主机名,是导致SSH解析不稳定的核心原因,执行以下操作:
- 执行
sudo scutil --set HostName kakaoui-MacBookPro.local设置静态主机名,和报错中的主机名保持大小写完全一致 - 执行
sudo scutil --set LocalHostName kakaoui-MacBookPro.local固定本地解析主机名 - 配置SSH免密登录,执行以下命令后测试
ssh kakaoui-MacBookPro.local,无需输入密码即可登录即为配置成功:
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
2. 修正hosts文件绑定
执行sudo vim /etc/hosts,在文件末尾加入以下两行:
127.0.0.1 kakaoui-MacBookPro.local ::1 kakaoui-MacBookPro.local
保存退出后执行dscacheutil -flushcache刷新DNS缓存即可。
3. 统一修改Hadoop配置文件
打开Hadoop安装目录下的etc/hadoop文件夹,修改以下配置项,所有涉及主机地址的地方统一用localhost,避免调用动态主机名:
core-site.xml
<property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property>
hdfs-site.xml
<property> <name>dfs.namenode.secondary.http-address</name> <value>localhost:9868</value> </property>
yarn-site.xml
<property> <name>yarn.resourcemanager.address</name> <value>localhost:8032</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
mapred-site.xml
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
hadoop-env.sh
添加JAVA_HOME绝对路径,避免环境变量读取异常:
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
4. 修正权限与初始化配置
- 给Hadoop安装目录授予当前用户完全权限,解决日志无法写入问题:
sudo chown -R 你的用户名:staff /你的Hadoop安装路径,替换为实际的用户名和Hadoop路径即可 - 清空之前异常启动生成的临时数据:删除
/tmp/hadoop-你的用户名文件夹 - 重新格式化namenode:执行
hdfs namenode -format,确认无报错后再启动集群
5. 警告说明
报错中的Unable to load native-hadoop library是Mac平台的常见提示,不影响集群正常运行,可以直接忽略,无需额外处理。
内容的提问来源于stack exchange,提问作者김기영
相关产品推荐
相关产品推荐

