文档章节

hadoop+hive使用中遇到的有关问题汇总

peizhenfly
 peizhenfly
发布于 2015/02/04 21:38
字数 1154
阅读 52
收藏 0

1.datanode无法正常启动
添加datanode后,datanode无法正常启动,进程一会莫名其妙挂掉,查看namenode日志显示如下:

2013-06-21 18:53:39,182 FATAL org.apache.hadoop.hdfs.StateChange: BLOCK* NameSystem.getDatanode: Data node x.x.x.x:50010 is attempting to report storage ID DS-1357535176-x.x.x.x-50010-1371808472808. Node y.y.y.y:50010 is expected to serve this storage.

原因分析:
    拷贝hadoop安装包时,包含data与tmp文件夹(见本人《hadoop安装》一文),未成功格式化datanode
解决办法:
rm -rf /data/hadoop/hadoop-1.1.2/datarm -rf /data/hadoop/hadoop-1.1.2/tmphadoop datanode -format

2. safe mode
2013-06-20 10:35:43,758 ERROR org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException as:hadoop cause:org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot renew lease for DFSClient_hb_rs_wdev1.corp.qihoo.net,60020,1371631589073. Name node is in safe mode.

解决方案:
hadoop dfsadmin -safemode leave

3.连接异常
2013-06-21 19:55:05,801 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Call to homename/x.x.x.x:9000 failed on local exception: java.io.EOFException

可能原因:
namenode监听127.0.0.1:9000,而非0.0.0.0:9000或外网IP:9000 iptables限制
解决方案:
检查/etc/hosts配置,使得hostname绑定到非127.0.0.1的IP上 iptables放开端口

4. namenode id
ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /var/lib/hadoop-0.20/cache/hdfs/dfs/data: namenode namespaceID = 240012870; datanode namespaceID = 1462711424 .

问题:Namenode上namespaceID与datanode上namespaceID不一致。 

  问题产生原因:每次namenode format会重新创建一个namenodeId,而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的数据,但是没有清空datanode下的数据,所以造成namenode节点上的namespaceID与datanode节点上的namespaceID不一致。启动失败。 

  解决办法:参考该网址 http://blog.csdn.net/wh62592855/archive/2010/07/21/5752199.aspx 给出两种解决方法,我们使用的是第一种解决方法:即: 

  (1)停掉集群服务 

  (2)在出问题的datanode节点上删除data目录,data目录即是在hdfs-site.xml文件中配置的dfs.data.dir目录,本机器上那个是/var/lib/hadoop-0.20/cache/hdfs/dfs/data/ (注:我们当时在所有的datanode和namenode节点上均执行了该步骤。以防删掉后不成功,可以先把data目录保存一个副本). 

  (3)格式化namenode. 

  (4)重新启动集群。 

  问题解决。 
    这种方法带来的一个副作用即是,hdfs上的所有数据丢失。如果hdfs上存放有重要数据的时候,不建议采用该方法,可以尝试提供的网址中的第二种方法。

5. 目录权限
start-dfs.sh执行无错,显示启动datanode,执行完后无datanode。查看datanode机器上的日志,显示因dfs.data.dir目录权限不正确导致:
expected: drwxr-xr-x,current:drwxrwxr-x

解决办法:
    查看dfs.data.dir的目录配置,修改权限即可。

hive错误
1.NoClassDefFoundError
Could not initialize class java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase.io.HbaseObjectWritable
将protobuf-***.jar添加到jars路径
//$HIVE_HOME/conf/hive-site.xml<property>   <name>hive.aux.jars.path</name>   <value>file:///data/hadoop/hive-0.10.0/lib/hive-hbase-handler-0.10.0.jar,file:///data/hadoop/hive-0.10.0/lib/hbase-0.94.8.jar,file:///data/hadoop/hive-0.10.0/lib/zookeeper-3.4.5.jar,file:///data/hadoop/hive-0.10.0/lib/guava-r09.jar,file:///data/hadoop/hive-0.10.0/lib/hive-contrib-0.10.0.jar,file:///data/hadoop/hive-0.10.0/lib/protobuf-java-2.4.0a.jar</value></property>

2.hive动态分区异常
[Fatal Error] Operator FS_2 (id=2): Number of dynamic partitions exceeded hive.exec.max.dynamic.partitions.pernode
hive> set hive.exec.max.dynamic.partitions.pernode = 10000;

3.mapreduce进程超内存限制——hadoop Java heap space
vim mapred-site.xml添加:
//mapred-site.xml<property><name>mapred.child.java.opts</name><value>-Xmx2048m</value></property>


#$HADOOP_HOME/conf/hadoop_env.shexport HADOOP_HEAPSIZE=5000

4.hive文件数限制
[Fatal Error] total number of created files now is 100086, which exceeds 100000
hive> set hive.exec.max.created.files=655350;

5.metastore连接超时
FAILED: SemanticException org.apache.thrift.transport.TTransportException: java.net.SocketTimeoutException: Read timed out

解决方案:
hive> set hive.metastore.client.socket.timeout=500;

6. java.io.IOException: error=7, Argument list too long
Task with the most failures(5): -----Task ID:  task_201306241630_0189_r_000009URL:  http://namenode.godlovesdog.com:50030/taskdetails.jsp?jobid=job_201306241630_0189&tipid=task_201306241630_0189_r_000009-----Diagnostic Messages for this Task:java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row (tag=0) {"key":{"reducesinkkey0":"164058872","reducesinkkey1":"djh,S1","reducesinkkey2":"20130117170703","reducesinkkey3":"xxx"},"value":{"_col0":"1","_col1":"xxx","_col2":"20130117170703","_col3":"164058872","_col4":"xxx,S1"},"alias":0}at org.apache.hadoop.hive.ql.exec.ExecReducer.reduce(ExecReducer.java:270)at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:520)at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:421)at org.apache.hadoop.mapred.Child$4.run(Child.java:255)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.java:415)at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1149)at org.apache.hadoop.mapred.Child.main(Child.java:249)Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row (tag=0) {"key":{"reducesinkkey0":"164058872","reducesinkkey1":"xxx,S1","reducesinkkey2":"20130117170703","reducesinkkey3":"xxx"},"value":{"_col0":"1","_col1":"xxx","_col2":"20130117170703","_col3":"164058872","_col4":"djh,S1"},"alias":0}at org.apache.hadoop.hive.ql.exec.ExecReducer.reduce(ExecReducer.java:258)... 7 moreCaused by: org.apache.hadoop.hive.ql.metadata.HiveException: [Error 20000]: Unable to initialize custom script.at org.apache.hadoop.hive.ql.exec.ScriptOperator.processOp(ScriptOperator.java:354)at org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:474)at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:800)at org.apache.hadoop.hive.ql.exec.SelectOperator.processOp(SelectOperator.java:84)at org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:474)at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:800)at org.apache.hadoop.hive.ql.exec.ExtractOperator.processOp(ExtractOperator.java:45)at org.apache.hadoop.hive.ql.exec.Operator.process(Operator.java:474)at org.apache.hadoop.hive.ql.exec.ExecReducer.reduce(ExecReducer.java:249)... 7 moreCaused by: java.io.IOException: Cannot run program "/usr/bin/python2.7": error=7, 参数列表过长at java.lang.ProcessBuilder.start(ProcessBuilder.java:1042)at org.apache.hadoop.hive.ql.exec.ScriptOperator.processOp(ScriptOperator.java:313)... 15 moreCaused by: java.io.IOException: error=7, 参数列表过长at java.lang.UNIXProcess.forkAndExec(Native Method)at java.lang.UNIXProcess.<init>(UNIXProcess.java:135)at java.lang.ProcessImpl.start(ProcessImpl.java:130)at java.lang.ProcessBuilder.start(ProcessBuilder.java:1023)... 16 moreFAILED: Execution Error, return code 20000 from org.apache.hadoop.hive.ql.exec.MapRedTask. Unable to initialize custom script.

解决方案:
升级内核或减少分区数https://issues.apache.org/jira/browse/HIVE-2372

本文转载自:http://www.reader8.cn/jiaocheng/20130708/2212075.html

共有 人打赏支持
peizhenfly
粉丝 1
博文 38
码字总数 1188
作品 0
西安
程序员
私信 提问
hbase适用于何种场景下呢?

本人目前正在研究hbase的适用场景,公司原来的架构是hadoop+hive,目前想研究下hbase是否可以对平台进行一些优化,现在对于hbase的适用场景有点陌生,不太清楚到底应该用在什么样的场景下,请...

TBcoding
2011/03/08
3.3K
1
Hadoop 和 hive之间的关系是什么?

查阅了很多资料,hadoop的核心是hdsf和mapreduce。那hive是做什么用的?我看资料中说,hive是基于sql的,那hadoop+hive的整合是进行了一个什么实质性的操作?总是说,hdfs是一个分布式文件,...

薄暮凉年
2015/09/14
1K
3
请问我用hive创建的托管表,如何在mysql下也能访问到呢?

我配置了hadoop+hive环境,用mysql做为metastore,请问我用hive创建的托管表,如何在mysql下也能访问到呢?谢谢!

天南海北
2012/01/06
408
0
记一次hive里面统计数据报错

我们生产环境用的hadoop+hive,为了安全起见,没有给hdfs账号,而是在系统上创建了一个新的普通用户分配给别人,但是用普通账户登录后进入hive统计数据报没有权限(hive中执行sql语句),报错...

split_two
2016/01/25
0
0
动态替换word模板内容思路

1.用户有这么一个需求: 到月度、季度、年度总结的时候,领导下发一个工作总结模板,等所有下属单位填写完成后,系统会将所有的word文件汇总到一个word文件中。 2.他们现在的做法是: 领导用...

AndroidV5
2016/01/06
1K
14

没有更多内容

加载失败,请刷新页面

加载更多

通过Docker容器连接代理Wormhole

Wormhole 是一个能识别命名空间的由 Socket 激活的隧道代理。可以让你安全的连接在不同物理机器上的 Docker 容器。可以用来完成一些有趣的功能,例如连接运行在容器本机的服务或者在连接后创...

Linux就该这么学
32分钟前
1
0
从架构到平台, POWER 9处理器最全解读

本文根据IBM中国芯片设计部门高级经理尹文,在「智东西公开课」的超级公开课IBM专场《POWER 9-认知时代的驱动力》 上的系统讲解整理而来。 本次讲解中,尹文老师从内核微架构、总线互连、异构...

Mr_zebra
35分钟前
1
0
openjdk和oraclejdk有什么区别吗?

1.授权协议的不同:OpenJDK采用GPL V2协议放出,而SUN JDK则采用JRL放出。两者协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用。 2.Open...

吴伟祥
36分钟前
2
0
c++基类析构函数要声明为virtual的原因

更深层的原因不知道,不过标准规定,如果不声明为virtual,那么将会导致未定义行为。个人测试结果表明,如果不声明为virtual,那么派生类的析构函数将不会得到调用

安非他命
42分钟前
2
0
CentOS 7下protobuf的源码编译安装

protobuf的github地址:https://github.com/google/protobuf支持多种语言,有多个语言的版本,本文采用的是在CentOS 7下编译源码进行安装。 github上有详细的安装说明:https://github.com/...

xtof
49分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部