Hadoop 日常运维中的一些问题汇总整理

         对于运维需要时刻保证服务的稳定和高可用。以下是一些对Hadoop群集运维过程中遇到的一些问题总结。有包含到大家遇到的可以参考。

    1.  问题1

在集群执行hive脚本时,hive.log报错如下

java.lang.InterruptedException

解决办法:

原因是因为线程在等待过程中长期获取不到资源被终止, 可以通过修改下面的配置进行优化:

dfs.datanode.handler.count(加大)DN的服务线程数。这些线程仅用于接收请求,处理业务命令

dfs.namenode.handler.count(加大)  NN的服务线程数。用于处理RPC请求

2.  问题2

 

ive.log抛出异常信息如下

Error: java.lang.RuntimeException: org.apache.hive.com.esotericsoftware.kryo.KryoException: Encountered unregistered class ID: 73

Serialization trace:

colExprMap (org.apache.hadoop.hive.ql.exec.TableScanOperator)

aliasToWork (org.apache.hadoop.hive.ql.plan.MapWork)

解决办法:

原因是hive-exec包的org.apache.hadoop.hive.ql.exec.Utilities中默认使用cloningQueryPlanKryo来存储数据,多线程时覆盖影响的0.13.1的bug,在0.14中已经得到修复,偶发性的数据序列化错误,很难重现, 可以修改hive.plan.serialization.format参数值为javaXML来避免错误,默认是kryo序列化格式,没进行尝试因为问题不容易重新;以下是参考资料 

https://issues.apache.org/jira/browse/HIVE-8688?jql=project in (MAPREDUCE, HIVE, HADOOP, HDFS) AND text ~ "org.apache.hive.com.esotericsoftware.kryo.KryoException" ORDER BY priority DESC

https://issues.apache.org/jira/browse/HIVE-7711?jql=project in (MAPREDUCE, HIVE, HADOOP, HDFS) AND text ~ "org.apache.hive.com.esotericsoftware.kryo.KryoException" ORDER BY priority DESC

3. 问题3

 java.io.IOException: 断开的管道

下面是在执行hive ql时后台报的错误,原因是在datanode上写入文件时,传输管道中断导致失败

可以通过修改下面几个参数对集群读写性能进行优化

dfs.datanode.handler.count(加大)DN的服务线程数。这些线程仅用于接收请求,处理业务命令

dfs.namenode.handler.count(加大)  NN的服务线程数。用于处理RPC请求

dfs.namenode.avoid.read.stale.datanode(true)决定是否避开从脏DN上读数据。脏DN指在一个指定的时间间隔内没有收到心跳信息。脏DN将被移到可以读取(写入)节点列表的尾端。尝试开启

dfs.namenode.avoid.write.stale.datanode(true)  和上面相似,是为了避免向脏DN写数据

4. 问题4

 java.io.EOFException: Premature EOF

文件操作超租期,实际上就是data stream操作过程中文件被删掉了 可以加大这个参数来进行优化dfs.datanode.max.transfer.threads;

参考资料:

https://issues.apache.org/jira/browse/HDFS-4723   http://www.sharpcloud.cn/thread-4927-1-1.html

5. 问题5

Connection reset by peer

java.io.IOException: Connection reset by peer

datanode重置链接   The client is stuck in an RPC to NameNode. Currently RPCs can be wait for a long time if the server is busy.  

可以通过修改下面几个参数来优化

dfs.namenode.handler.count(加大)  NN的服务线程数。用于处理RPC请求

dfs.namenode.replication.interval(减小)  NN周期性计算DN的副本情况的频率,秒

dfs.client.failover.connection.retries(建议加大)  专家设置。IPC客户端失败重试次数。在网络不稳定时建议加大此值

dfs.client.failover.connection.retries.on.timeouts(网络不稳定建议加大)专家设置。IPC客户端失败重试次数,此失败仅指超时失败。在网络不稳定时建议加大此值

参考资料:https://issues.apache.org/jira/browse/HADOOP-3657

6. 问题6

SemanticException Schema of both sides of union should match

2015-08-10 17:22:35,390 ERROR [main]: ql.Driver (SessionState.java:printError(567)) - FAILED: SemanticException Schema of both sides of union should match.

语法错误,使用union查询时查询两个表的内容不同,测试sql时报的错,不是集群作业的,检查hive ql改正即可

7.  问题7 

java.net.SocketTimeoutException

IO超时加大下面俩个参数即可

dfs.datanode.socket.write.timeout (加大)向datanode写入数据超时设置

dfs.client.socket-timeout (加大) dfsclients与集群间进行网络通信的超时设置

你可能感兴趣的:(Hadoop)