hadoop 日常错误解决方法整理

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: <div style="font-family:'lucida Grande',Verdana,'Microsoft YaHei'; font-size:14px; line-height:23.8px"> hadoop 日常错误整理  </div> <div style="font-family:'lucida Grande',Verdana,'Microsoft YaHei'; f
hadoop 日常错误整理  

====描述

hive 执行show tables; 

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.conf.Configuration.unset(Ljava/lang/String;)V

解决方法
hive的版本是0.13.0太高,hadoop的版本较低。 hadoop中没有对应的方法。降低hive的版本到0.11.0

====描述


hive 的sql报错

 Expression not in GROUP BY key 
原因
sql语句含有groupby 但是意义不明确,比如没有聚合函数

解决方法
修改sql


====描述


hive 的sql报错

Makefile.include.header:97: *** Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR=<directory> and run Make again

原因
yum install gcc kernel kernel-devel , 重启机器

解决方法


====描述


Building the OpenGL support module

原因
 

解决方法
export MAKE='/usr/bin/gmake -i'
./VBoxLinuxAdditions.run

====描述



hiveserver 执行的时候报错

jdbc前端报错
Query returned non-zero code: 2, cause: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask

hiveserver日志
org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row

任务的日志
UDFArgumentException: The UDF implementation class 'com.udf.Converter_long2str' is not present in the class path

原因



把udf的jar包放到hive的lib之后, hiveserver 并未加载udf类



解决方法



需要重新启动hiveserver ,重新加载jar包



====描述

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable



OpenJDK 64-Bit Server VM warning: You have loaded library /home/soulmachine/local/opt/hadoop-2.2.0/lib/native/libhadoop.so which might have disabled stack guard. The VM will try to fix the stack guard now.

It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.

14/ 02/14 13:14:50 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable


localhost



原因



dns中找不到机器名



解决方法



配置文件指定一个 ServerName localhost 即可

====描述



httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.12.210 for ServerName



原因



dns中找不到机器名



解决方法



配置文件指定一个 ServerName localhost 即可



====描述



java.io.IOException: File <filename> could only be replicated to 0 nodes, instead of 1



原因



datanode没有启动成功



解决方法



重新启动datanode,或者namenode 重新format。

====描述:



jianghehui@YunWei-Jumper:~/softs$ mysql -h xxxx -P 3306 -uroot -p

jianghehui@YunWei-Jumper:~/softs$ mysql -h

jianghehui@YunWei-Jumper:~/softs$ mysql -V

jianghehui@YunWei-Jumper:~/softs$ mysql

ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)

jianghehui@YunWei-Jumper:~/softs$ 



原因:



编译的时候,bin指定到绝对路径了。



解决方法:



使用绝对路径,或者加到path

====描述:



You don't have permission to access /index.html on this server



原因:



index.html是用root用户建的文件,apache权限不够



解决方法:



打开apache配置文件httpd.conf,找到这么一段:

<Directory />

     Options FollowSymLinks

     AllowOverride None

     Order deny,allow

     deny from all

     Satisfy all

</Directory>

然后试着把deny from all中的deny改成了allow,保存后重起了apache,然后再一测试我的网页就正常了.

====描述:



mysql reset slave 执行还有遗留信息



原因:



xxx



解决方法:



使用reset slave all

====描述:



No job jar file set.  User classes may not be found.See JobConf(Class) or JobConf#setJar(String).

需要将class放到jar包中运行



not a SequenceFile

指定为seqfile,需要创建seqfile



job Submission failed with exception 'java.io.IOException(The ownership/permissions on the staging directory /tmp/hadoop-hadoop-user1/mapred/staging/hadoop-user1/.staging is not as expected. It is owned by hadoop-user1 and permissions are rwxrwxrwx. The directory must be owned by the submitter hadoop-user1 or by hadoop-user1 and permissions must be rwx------)



hadoop fs -chmod -R 700 /tmp/hadoop-hadoop-user1/mapred/staging/hadoop-user1/.staging



Permission denied: user=xxj, access=WRITE, inode="user":hadoop:supergroup:rwxr-xr-x

 <property>

<name>dfs.permissions</name>

<value>false</value>

</property>





 writablename cannot load class

自己写的writable对象不在classpath中



Type mismatch in key from map: expected org.apache.hadoop.io.BytesWritable, recieved org.apache.hadoop.io.LongWritable

key的类型和指定的不匹配





Cleaning up the staging area hdfs://192.168.12.200:9000/tmp/hadoop-root/mapred/staging/jianghehui/.staging/job_ 201307172232_0004



原因:



hadoop



解决方法:



sql语句执行有问题,比如没有指定库名 直接使用表名字

====描述:



PHP startup: Unable to load dynamic library './php_mysql.dll 找不到指定的模块

undefined function mysql_connect()



原因:



xxx



解决方法:



总结如下:

extension_dir要设置正确。

PHP的安装目录添加到%path%中



还有 把所依赖的dll拷贝到%windir%\system32

====描述



device "eth0" does not seem to be present, delaying initialization



原因



虚拟机用模板做linux的时候因为网卡配置信息(主要是MAC)也复制过去,但是虚拟服务器会分配另外的一个mac地址,启用的时候会出错



解决方法



1.打开etc/sysconfig/network-scripts/ ficfg-eth0,确定ONBOOT应该为yes,

2.检查ficfg-eth0的MAC和ifconfig现实的MAC是否相符,并修改ficfg-eth0的MAC。

3.重启服务,service NetworkManager restart ,service network restart.

4.然后系统会自动识别到网卡信息,就ok了。

====描述



Keepalived 测试不成功,查看 /var/log/messages 

Keepalived_healthcheckers: IPVS: Can't initialize ipvs: Protocol not available



原因



是否lvs模块加载异常,于是lsmod|grep ip_vs发现果然没有相应的模块,而正常情况下应该是有的



解决方法


手动加载ip_vs模块

modprobe ip_vs

modprobe ip_vs_wrr


添加进/etc/rc.local开机自动加载

modprobe ip_vs

modprobe ip_vs_wrr



====描述



hive> show tables;

FAILED: Error in metadata: javax.jdo.JDOFatalInternalException: Unexpected exception caught.

NestedThrowables:

java.lang.reflect.InvocationTargetException

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask



原因



不知道



解决方法



 delete $HADOOP_HOME/build

====描述



WARNING: org.apache.hadoop.metrics.jvm.EventCounter is deprecated. Please use org.apache.hadoop.log.metrics.EventCounter in all the log4j.properties files.




文档格式(如下):

原因



过时的类



解决方法



把所有配置文件中的EventCounter 替换成org.apache.hadoop.metrics.jvm.EventCounter。包括lib/hive-common-0.10.0.jar!/hive-log4j.properties。





====描述



java.io.IOException: File <filename> could only be replicated to 0 nodes, instead of 1





原因



datanode没有启动成功



解决方法



重新启动datanode,或者namenode 重新format。

====描述



hadoop 启动的时候 JAVA_HOME is not set and could not be found.



原因



xxx



解决方法



libexec/hadoop-config.sh 或者其他的脚本里面手动设置JAVA_HOME变量

====描述



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



原因



驱动没加载成功

数据库没有创建,并且url没有配置createDatabaseIfNotExist=true



解决方法



把mysql或者derby的驱动加到path里面去

====描述



eclipse cdt 启动的时候报错

Failed to load the JNI shared library



原因



jdk的版本是64bit , 而eclipse是32bit。位数不一致。



解决方法



安装bit一致的jdk和eclipse



====描述



hive 使用mysql元数据库的时候 ,show tables 报错 Index column size too large. The maximum column size is 767 bytes.



原因


xxx


解决方法


将数据库的字符集改成latin1


====描述


hive 执行查询的时候,表明明存在,却报错Table not found


原因


xxx


解决方法


表名字前面加上库名


====描述


xxx


原因


xxx

解决方法

xxx


====描述

xxx


原因

xxx

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
分布式计算 Hadoop
hadoop 的启动和停止命令(史上最全)
sbin/start-all.sh 启动所有的Hadoop守护进程。包括NameNode、 Secondary NameNode、DataNode、ResourceManager、NodeManager sbin/stop-all.sh 停止所有的Hadoop守护进程。包括NameNode、 Secondary NameNode、DataNode、ResourceManager、NodeManager sbin/start-dfs.sh 启动Hadoop HDFS守护进程NameNode、SecondaryNameNode、DataNode sbin/stop-dfs.sh 停止Hadoop
|
10月前
|
存储 分布式计算 Java
|
10月前
|
分布式计算 负载均衡 Hadoop
|
分布式计算 Hadoop Shell
Hadoop中HDFS的Shell操作(开发重点)、启动Hadoop集群、基本语法、常用命令实操、命令大全、-help、-mkdir、-moveFromLocal、-copyFromLocal
Hadoop中HDFS的Shell操作(开发重点)、启动Hadoop集群、基本语法、常用命令实操、命令大全、-help、-mkdir、-moveFromLocal、-copyFromLocal
Hadoop中HDFS的Shell操作(开发重点)、启动Hadoop集群、基本语法、常用命令实操、命令大全、-help、-mkdir、-moveFromLocal、-copyFromLocal
|
分布式计算 Java Hadoop
Hadoop jps正确使用流程及报错处理
jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。 详细参数请参考:https://www.cnblogs.com/toSeeMyDream/p/5747412.html 注:jps命令有个地方很不好,似乎只能显示当前用户的java进程,显示其他用户很容易报错 -- process information unavailable 下面我们模拟下Hadoop生产实战中 jps 真死、假死的问题
348 0
|
分布式计算 Hadoop
在Hadoop系统中运行WordCount案例失败解决方法
在Hadoop系统中运行WordCount案例失败解决方法
527 0
|
分布式计算 Hadoop
hadoop初学者MapReduce常见错误
image.png 主机与ip地址的映射,不可以出错配置完后hostname一下 image.png core-site.xml 正确配置 fs.
821 0
|
XML 分布式计算 Hadoop
|
分布式计算 Hadoop Java

相关实验场景

更多