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