Mac安装Hadoop伪分布式执行start-dfs.sh出现ssh无法解析hostname错误
报错对应遗漏的配置步骤
你遇到的是两类问题,分别对应不同的配置遗漏:
1. ssh无法解析主机名错误(核心报错)
这是导致启动失败的主要原因,遗漏的配置如下:
- 未配置
/etc/hosts的本地主机名映射:Hadoop启动SecondaryNameNode时会读取当前设备的主机名发起ssh连接,你的hosts文件中没有将本机主机名指向127.0.0.1导致解析失败。
修复方法:终端执行hostname获取你的设备主机名,编辑/etc/hosts文件,在127.0.0.1 localhost和::1 localhost行后追加你的主机名即可。 - 未显式指定SecondaryNameNode的本地地址:伪分布式模式下所有服务都运行在本地,你没有在
hdfs-site.xml中指定SecondaryNameNode的地址为localhost,导致Hadoop默认用主机名访问。
修复方法:在hdfs-site.xml中添加如下配置:<property> <name>dfs.namenode.secondary.http-address</name> <value>localhost:50090</value> </property> - 未配置本地ssh免密登录:伪分布式模式要求本机可以通过ssh localhost免密登录,你没有生成ssh密钥并将公钥加入授权列表。
修复方法:终端执行ssh-keygen -t rsa一路回车生成密钥,再执行cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys,设置权限chmod 600 ~/.ssh/authorized_keys,确保ssh localhost无需输入密码即可登录。
2. NativeCodeLoader警告(不影响核心运行)
这个是提示性警告,不会导致启动失败,是因为Hadoop官方提供的原生动态库没有适配Mac平台(尤其是M系列ARM架构的Mac),遗漏的配置如下:
- 未在环境变量中指定Hadoop原生库路径:你可以在
hadoop-env.sh中添加配置export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"尝试消除警告,如果你使用的是ARM架构的Mac,需要自行编译对应架构的Hadoop原生库,否则可以直接忽略该警告,不影响基础功能使用。
内容的提问来源于stack exchange,提问作者Ayan Biswas
相关产品推荐
相关产品推荐

