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