1、上传文件时报 no route no host
检查防火墙等设置
2、空间配额问题
设置data配额为10M,然后上传一个10M的文件,然后报错。
报错信息:
put: The DiskSpace quota of /user/centos/data is exceeded: quota = 10485760 B = 10 MB but diskspace consumed = 402653184 B = 384 MB
分析: 计算大小的方式是3个副本块大小的总和,不能大于配额。 即 :空间配额 >= blocksize * 3 * 文件大小
3、ERROR:The health test result for NAME_NODE_HA_CHECKPOINT_AGE has become bad: The filesystem checkpoint is 4 hour(s) old. This is 401.25% of the configured checkpoint period of 1 hour(s). Critical threshold: 400.00%. 2,793 transactions have occurred since the last filesystem checkpoint. This is 0.28% of the configured checkpoint transaction target of 1,000,000.
参考:https://blog.csdn.net/liujiyu1989/article/details/47829083
分析 : 由于secondarynamenode没有执行checkpoint的原因所导致,查看secondarynamenode的日志,发现真正的错误是:ERROR: Exception in doCheckpoint java.io.IOException: Inconsistent checkpoint field
结论 :主要是secondarynamenode没有执行检查点的操作,导致会产生上面的错误,上面的错误说明的是你一直没有执行检查点的操作。
解决方式 :删除secondarynamenode执行检查点的目录,即hdfs-site.xml中参数fs.checkpoint.dir, dfs.namenode.checkpoint.dir的值的路径。
4、报错信息如下:
log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
解决方法:将/hadoop/etc/hadoop/log4j.properties直接拷贝到项目类路径的根下(src下)即可解决。
即 :
5、在Windows的Eclipse上执行代码连接hadoop时,报错:
Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
解决方式:
1.下载winutils的windows版本
GitHub上,有人提供了winutils的windows的版本,项目地址是:https://github.com/srccodes/hadoop-common-2.2.0-bin ,直接下载此项目的zip包,下载后是文件名是hadoop-common-2.2.0-bin-master.zip,解压后将bin目录迁移到了F:\hadoop-2.7.3\hadoop-2.7.3\bin
2.配置环境变量
系统环境变量 HADOOP_HOME = F:\hadoop-2.7.3\hadoop-2.7.3
用户变量 F:\hadoop-2.7.3\hadoop-2.7.3\bin
3.测试如果还不正常,需要重启系统。
6、start-all.sh执行后,只有namenode,没有datanade。
粗暴法:
1、先运行stop-all.sh
2、格式化namdenode,不过在这之前要先删除原目录,即core-site.xml下配置的<name>hadoop.tmp.dir</name>所指向的目录,删除后切记要重新建立配置的空目录,然后运行hadoop namenode -format
3、运行start-all.sh
细致法:
修改/dfs/name/current文件下的VERSION中的namespaceId与namenode一致。
7、start-all.sh时报错,
报错信息:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/soft/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/soft/hbase-0.98.9-hadoop2/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
原因:hbase和hdfs的slf4j文件冲突
解决:将hbase的文件删除(地址 :hbase/lib/slf*)
注 :hdfs 下地址:hadoop/share/hadoop/common/lib/slf*