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