CDH的各種錯誤處理


1. hive 遇到問題:

untimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient  
    at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:444)  
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:626)  
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:570)  
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)  
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
    at java.lang.reflect.Method.invoke(Method.java:597)  
    at org.apache.hadoop.util.RunJar.main(RunJar.java:212)  
Caused by: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient  
    at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1453)  
    at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.<init>(RetryingMetaStoreClient.java:63)  
    at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:73)  
    at org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:2664)  
    at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:2683)  
    at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:425)  
    ... 7 more  
Caused by: java.lang.reflect.InvocationTargetException  
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)  
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)  
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)  
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)  
    at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1451)  
    ... 12 more 

解決:

1 登錄mysql 執行:
2 set global binlog_format='MIXED';

 

 

2. 執行任務的時候報hdfs的權限問題

解決:

1 在HDFS配置頁面,找到屬性dfs.permissions,取消勾選即可。

 

 

3. 在azkaban上面上傳zip包報錯

installation Failed.Error chunking

 解決:

1 在/etc/my.cnf 中進行配置
2 
3 [mysqld]
4 max_allowed_packet=1024M
5 
6 或者設置:
7 mysql> set global max_allowed_packet=1073741824;

 

 

4. hive注釋亂碼等

    --  在mysql 創建hive database,如果為utf8執行hive會出錯,改為latin1編碼就行,但是改為這個編碼了,建立表創建注釋等中文無法顯示,那么就設置單獨的幾個元數據列為utf8就行

解決:

 1 use hive
 2 
 3 當hive使用mysql作為元數據庫的時候mysql的字符集要設置成latin1 default。
 4 alter database hive character set latin1;
 5 
 6 
 7 為了保存那些utf8的中文,要將mysql中存儲注釋的那幾個字段的字符集單獨修改為utf8。
 8 修改字段注釋字符集
 9 alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
10 修改表注釋字符集
11 alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
12 修改分區表參數,以支持分區鍵能夠用中文表示。
13 alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
14 alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
15 
16 flush privileges;
17 
18 修改hive連接配置
19 javax.jdo.option.ConnectionURL  
20 jdbc:mysql://192.168.0.123:3306/hive?characterEncoding=UTF-8  
21 
22 發現還是亂碼,后來發現是linux底層的編碼原因,查看底層編碼:
23 [root@testslave01 ~]# locale 
24 LANG=C
25 LC_CTYPE="C"
26 LC_NUMERIC="C"
27 LC_TIME="C"
28 LC_COLLATE="C"
29 LC_MONETARY="C"
30 LC_MESSAGES="C"
31 LC_PAPER="C"
32 LC_NAME="C"
33 LC_ADDRESS="C"
34 LC_TELEPHONE="C"
35 LC_MEASUREMENT="C"
36 LC_IDENTIFICATION="C"
37 LC_ALL=
38 發現不是utf8的
39 
40 修改編碼:
41 vi /etc/sysconfig/i18n 內容如下:
42 LANG="en_US.UTF-8"
43 SYSFONT="latarcyrheb-sun16"
44 
45 然后source /etc/sysconfig/i18n
46 再測試,亂碼問題解決

 

 

5. 通過hiveserver2的方式連接中文亂碼

解決:

1 在hiveserver2的啟動腳本中添加如下的環境變量(hiveserver2的啟動編碼沒走系統底層編碼):
2 export LANG=zh_CN.UTF-8

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM