hadoop日常錯誤解決方法整理

白及88發表於2016-02-24
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


相關文章