P1:ssh连接机器,出现ssh:NODE_166:Temporary failure in name resolution
解决办法:检查/etc/hosts文件中定义了主机名和IP地址对应关系是否正确。
P2: ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Call to master/10.1.22.165:9000 failed on local exception: java.net.NoRouteToHostException: No route to host
解决办法:修改hostname 和 /etc/hosts 里的虚拟域名一致。如果没办法修改hostname (修改/etc/sysconfig/ network HOSTNAME可以改变hostname) ,可以修改 /etc/hosts 来为每个记录增加一个和其域名一致的域名别名
P3: java.io.IOException: Too many open files
解决办法:超过了系统可打开文件数的限制, linux系统默认打开文件数最大值是1024 ,修改/etc/security/limits.conf
添加:
* soft nofile 65535
* hard nofile 65535
Max user process
Ulimit –a
P4:在datanode 链接不上 hadoopmaster,提示Retrying connect to server: hadoopmaster/130.38.27.112:9001. Already tried 0 time(s)
解决办法:这个问题是由于namenode没有启动成功导致的。查看namenode日志针对问题解决。
P5:Incompatible namespaceIDs in /data1/ocnosql_dev/data: namenode namespaceID = 405233244966; datanode namespaceID = 33333244
解决办法:将namenode和datanode的VERSION中的namespaceID修改成一样
P6: Task process exit with nonzero status of 126异常
解决办法:环境变量有错或者执行权限不够。可能原因为JDK包内${JAVA_HOME}/jre/bin/java文件的执行权限不够
P7: 执行mapreduce任务的时候OutOfMemoryError
解决办法:修改mapred-site.xml
P8: ERROR org.apache.hadoop.security.UserGroupInformation: PriviledgedActionExcepti
on as:ocnosql (auth:SIMPLE) cause:java.io.IOException: File /guoyk/test.txt._COPYING_ could only be replicated to 0 nodes instead of minReplication (=1).
There are 0 datanode(s) running and no node(s) are excluded in this operation.
解决办法:dfs.datanode.failed.volumes.tolerated数值大于或等于dfs.datanode.data.dir中配置的数,将tolerated值调小或注释掉
P9:运行job任务时报out of memory错误,然后怎么调整内存大小都不行,后来发现是can’t create new thread。
在vi /etc/security/limits.conf 添加
ocnosql - nofile 65535
ocnosql- nproc
65535
P10:hdfs无法使用(比如执行一个操作文件命令就报错:only be replicated to 0 nodes, instead of 1)
解决办法:给出了几个可能的原因,1、由于多次格式化,重启导致namenode和datanode的信息不一致;2、namenode和datdanode建立连接需要等一段时间,说白了就是等一会儿 ;3、没有写文件权限(但是我查看日志都是root最高权限)4、磁盘空间不足
P11:上传本地文件至hdfs,或者写hdfs时发生java.net.SocketTimeoutException: 1000000 millis timeout while waiting for channel to be ready for write
解决办法:
问题原因:当一个HDFS系统同时处理许多个并行的put操作,往HDFS上传数据时,有时候会出现dfsclient 端发生socket 链接超时的报错,有的时候甚至会由于这种原因导致最终的put操作失败,造成数据上传不完整。
修改hadoop配置文件hdfs-site.xml,增加dfs.datanode.socket.write.timeout和dfs.socket.timeout两个属性的设置。
或者把这个值设为0。即可
P12:ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
java.io.EOFException
at java.io.DataInputStream.readFully(DataInputStream.java:180)
at java.io.DataInputStream.readLong(DataInputStream.java:399)
at org.apache.hadoop.hdfs.server.namenode.FSImage.readCheckpointTime(FSImage.java:561)
at org.apache.hadoop.hdfs.server.namenode.FSImage.getFields(FSImage.java:552)
at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.read(Storage.java:227)
问题原因:IO错误,所以应该是文件有问题
解决办法:namenode的元数据目录下的fstime文件为空,从备份的地方拷贝了一个过来就好了
readCheckpointTime是指读取fstime文件
P13:2013-04-15 17:06:03,585 INFO org.apache.hadoop.hdfs.server.datanode.OfferService: using BLOCKREPORT_INTERVAL of 10000msec Initial delay: 0msec
2013-04-15 17:06:03,585 ERROR org.apache.hadoop.hdfs.server.datanode.OfferService: OfferService encountered exception java.lang.NullPointerException
问题原因:
解决办法:在avatar环境上有时候重启的时候就会一直刷这个日志,我处理的方法就是重启 datanode,重启就 可以解决。
单独重启进程,顺序如下:
主节点:hadoop-daemon.sh start avatarnode
备节点:hadoop-daemon.sh start avatarnode
-one -standby -sync
数据节点:hadoop-daemons.sh start avatardatanode
、
P14:
hdfs dfs -setrep -R -w 2 /test/712/dir1; 执行等待时间过长
解决办法:这个操作与datanode的blockreport有关,功能测试如果该操作延迟,可以修改参数dfs.blockreport.intervalMsec,调小点,默认是6小时,可以调为10分钟。
P15:datanode停机后汇报到namenode的时间差问题 默认10分30秒,
配置为:
dfs.namenode.heartbeat.recheck-interval 毫秒
dfs.heartbeat.interval 秒
P16:put数据的时候,停datanode节点,put等待间过长的问题,
修改配置:
P17:解决zookeeper占用内存太高的问题,默认是使用机器1/3的内存
在zookeeper/bin下的zkServer.sh文件前面增加配置:
JVMFLAGS="-Xmx1000m"
P18、hbase的snapy压缩不生效问题