`
godlovesdog
  • 浏览: 99971 次
社区版块
存档分类
最新评论

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

阅读更多
问题排查方式
  • 一般的错误,查看错误输出,按照关键字google
  • 异常错误(如namenode、datanode莫名其妙挂了):查看hadoop($HADOOP_HOME/logs)或hive日志

hadoop错误
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/data
rm -rf /data/hadoop/hadoop-1.1.2/tmp
hadoop 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.sh
export 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_000009

URL:
  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 more
Caused 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 more
Caused 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 more
Caused 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 more


FAILED: 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
6.runtime error
hive> show tables;
FAILED: Error in metadata: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

问题排查:
hive -hiveconf hive.root.logger=DEBUG,console

13/07/15 16:29:24 INFO hive.metastore: Trying to connect to metastore with URI thrift://xxx.xxx.xxx.xxx:9083
13/07/15 16:29:24 WARN hive.metastore: Failed to connect to the MetaStore Server...
org.apache.thrift.transport.TTransportException: java.net.ConnectException: 拒绝连接
。。。
MetaException(message:Could not connect to meta store using any of the URIs provided. Most recent failure: org.apache.thrift.transport.TTransportException: java.net.ConnectException: 拒绝连接

尝试连接9083端口,netstat查看该端口确实没有被监听,第一反应是hiveserver没有正常启动。查看hiveserver进程却存在,只是监听10000端口。
查看hive-site.xml配置,hive客户端连接9083端口,而hiveserver默认监听10000,找到问题根源了
解决办法:
hive --service hiveserver -p 9083
//或修改$HIVE_HOME/conf/hive-site.xml的hive.metastore.uris部分
//将端口改为10000
分享到:
评论

相关推荐

    基于hadoop2.85的hive2.3.4安装

    3. **权限问题**:在配置Hive的过程中可能会遇到权限问题,请确保拥有足够的权限进行操作。 4. **网络问题**:Hive与Hadoop之间通过网络通信,因此网络状况对Hive的正常使用至关重要。 5. **日志查看**:安装过程中...

    hive优化(ppt)

    在IT领域,特别是大数据处理与分析中,Hive作为一个数据仓库工具,被广泛应用于基于Hadoop的数据查询和分析。Hive通过将SQL语句转换成MapReduce任务来处理大规模数据集,大大简化了数据分析的过程。然而,由于其底层...

    hive on spark mr 数据开发常见问题解决

    在Hive on Spark MR(MapReduce)数据开发中,开发者经常遇到各种问题,这些问题往往阻碍了工作效率。以下是一些常见的问题及其解决方案: 1. **Shuffle in Fetcher#6 错误** 当Hive作业处理大数据量时,可能会...

    hive sql + left join 数据缺失

    在大数据处理场景中,Hive 是一种广泛使用的工具,用于对存储在 Hadoop 文件系统中的数据进行数据汇总、查询和分析。随着Hive版本的不断更新,部分用户在升级至Hive 3之后遇到了数据处理中的一个常见问题——在执行...

    hadoop 参考资料

    2. **Hadoop常见错误及解决办法汇总.docx**:这份文档很可能是针对Hadoop在实际操作中遇到的问题和解决方案的集合。通过阅读,用户可以了解常见的错误类型,如NameNode和DataNode的故障、MapReduce作业的错误等,...

    hive中定义的复杂数据类型导入到es中问题总结.doc

    Hive 主要用于对存储在 Hadoop 文件系统 (HDFS) 中的大规模数据集进行数据汇总、查询和分析;而 ES 则是一种分布式的、基于文档的搜索和分析引擎,常用于日志聚合、实时数据分析等场景。由于两者各有优势,实际应用...

    Hive_SQL语法大全

    Hive_Sql语法详述,平时工作中遇到的问题,用于Hadoop平台的数据挖掘。

    Hive性能优化总结

    #### 一、Hadoop与Hive计算框架特性引发的问题 Hadoop作为大数据处理平台,其核心优势在于能够高效处理大规模数据集。然而,在具体的应用场景中,尤其是在Hive作为数据仓库使用时,仍存在若干挑战: 1. **数据倾斜...

    实战hadoop源代码

    6. **Hadoop与其他组件集成**:Hadoop通常与其他大数据工具如Hive、Pig、Spark等配合使用,源代码可能包含这些组件的集成示例。 7. **实战案例**:书中的实战部分可能涉及实际业务场景,如网页点击流分析、日志处理...

    hadoop 五本教程汇总

    可能会涵盖数据导入导出、数据清洗、数据挖掘和机器学习等实际问题,以及如何解决在项目中遇到的挑战。 5. **《hadoop_命令手册.pdf》**:这是一份Hadoop命令参考,提供了Hadoop命令行工具的详细使用说明,包括fs、...

    Hadoop - Hadoop in Action

    ### Hadoop - Hadoop in Action #### 知识点概览 1. **Hadoop作为分布式编程框架的介绍** 2. **Hadoop集群的基本硬件组件** 3. **Hadoop的安装与配置** 4. **MapReduce框架的基础知识** 5. **编写与运行基本的...

    Hadoop学习笔记.pdf

    Hadoop集群可以轻松扩展到PB级别的数据存储和处理能力,这使得Hadoop非常适合在需要处理大量数据的场合中使用。但是,Hadoop的可扩展性并不意味着它适合所有场景,由于其架构特点,它更适合于批处理,而非实时处理。...

    大数据云计算技术 淘宝网Hadoop与数据分析 taobao数据团队(共30页).ppt

    在实际应用中,Hadoop可能会遇到数据倾斜、网络延迟、性能瓶颈等问题。解决这些问题通常需要优化数据分布策略、调整MapReduce参数、增加硬件资源或者采用更高效的数据处理框架如Spark。 总结来说,Hadoop在淘宝网的...

    hadoop权威指南英文第四版Hadoop_ The Definitive Guide, 4th Edition

    在Hadoop生态系统中,还包含了许多其他组件,例如Hive、Pig、HBase、ZooKeeper和Oozie等。Hive提供了类SQL查询语言(HiveQL),使得数据仓库任务能够利用Hadoop来执行。Pig是用于分析大型数据集的平台,它使用了一种...

    spark替代Hive实现ETL作业

    - **BUG与特性**:在使用Spark执行复杂的Hive SQL时可能会遇到一些bug,如使用多个参数的函数创建表时出现问题。这些bug可能是由于Hive与Spark在某些特性的实现上存在差异造成的。 - **解决方案**:对于这些问题,一...

    DolphinScheduler+海豚

    - 将集群中使用的Hive Jar包复制到DolphinScheduler的各个服务对应的lib目录下。 ```bash cp /opt/cloudera/parcels/CDH/lib/hive/lib/hive-common-2.1.1-cdh6.3.2.jar /opt/apache-dolphinscheduler-3.1.7/api-...

    Hadoop技术-Hadoop架构简介.pptx

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,主要是用来解决分布式应用中经常遇到的一些数据管理问题,提供的功能包括:配置维护、域名维护、分布式同步、组服务等。 Flume是Cloudera提供的一个高...

    Hadoop开发者第一期入门专刊

    在Windows环境中使用Eclipse编写Hadoop应用程序是常见的开发方式之一。具体步骤包括配置Eclipse的Hadoop插件、创建Hadoop项目、编写MapReduce程序、打包并提交作业到Hadoop集群执行。 ### 在Windows中使用Cygwin...

    Hadoop实战-中高级部分 PPT 和 源码 下载

    **标题与描述解析** 标题“Hadoop实战-中高级部分 PPT 和 源码 下载”揭示了这个资源包是关于Hadoop的实践教程,主要面向...通过深入学习和实践,不仅可以提升技术能力,还能为解决实际工作中遇到的问题提供有力支持。

Global site tag (gtag.js) - Google Analytics