1. java.net.ConnectException
首先可以用telne——telnet ip
测试连接情况,如果拒接连接的话可能是防火墙的问题,前去配置重启即可,如果是iptables,需要先去安装iptables-services ——yum install iptables-services
,也可以通过配置firewall
或者ufw
,他们之间作用都是差不多的,只是适应不同版本衍生出来的工具。
2. core-site.xml not found
如果配置文件中语句没有问题,问题可能出自hadoop相关的环境变量,去path以及environment.sh中确认配置
3. WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using built
不能加载本地库,使用hadoop checknative -a
命令查看本地库信息,库文件保存在/hadoop/lib/native
下,如果文件不存在或者损坏的话可以尝试下载新的库文件做替换,下载到native
目录下解压再重新执行hadoop命令即可。
4. 伪分布式开启NameNode和DataNode过程中数据节点未启动
I. 确认配置文件信息是否错误或者遗漏
II. 查看日志文件(logs),一般错误都伴随着:Fatal、Error、Warning 或者 Java Exception 等关键字,直接搜索即可,确认是否有datanode相关的日志,如果没有可能格式化中未读取datanode相关配置。
III. 确认datanode是否有启动,设置的目录下是否有datanode的文件夹,有的话分别前往namenode和data目录里面的current中__查看VERSION文件里面显示的ID信息是否一致__,如果不一致可以将name/current下的VERSION中的clusterID复制给data目录下的VERSION,覆盖掉原来的clusterID,或者直接将VERSION删除重新格式化。
IV. 将设置的设置的节点目录整个删除,比如我设置的namenode以及datanode目录都在tmp目录下,直接rm -r ./tmp
删除整个目录后重新执行格式化./bin/hdfs namenode -format
,此举会删除HDFS中全部原有数据,慎行。
5. ssh: Could not resolve hostname
这个并不是 ssh 的问题,可通过设置 Hadoop 环境变量来解决。在 ~/.bashrc 中,增加如下两行内容(设置过程与 JAVA_HOME 变量一样,其中 HADOOP_HOME 为 Hadoop 的安装目录):
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
- 配置完成后使用
source ~/.bashrc
使变量设置生效
6. Hadoop “Unable to load native-hadoop library for your platform” warning
I. 尝试在hadoop-env.sh中添加以下配__置:
-
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=/usr/local/hadoop/lib/"
-
export HADOOP_COMMON_LIB_NATIVE_DIR="/usr/local/hadoop/lib/native/"
II. 也有可能是libhadoop.so.1.0.0在不对应的Ubuntu中运行导致的,也许你的ubuntu是64位的,但是libhadoop.so.1.0.0
文件却是32位的,去下载对应的版本再编译替换即可,这里只是警告,也不影响实际运行其实。
7. 其他问题
报错信息中可能会有些大家熟悉的关键字字眼,比如java、hadoop、host等等,大致就是环境变量配置或者Path中的问题,可以针对性的解决问题,找到相关报错信息网上百度,建议多查看日志信息。