【Hue-001】编译Hue时报错,File “/usr/bin/yum“, line 30 except KeyboardInterrupt
主要原因:是系统自带的python2.7,默认环境是python,你安装python3.x后,更改默认/usr/bin/python的软引用为python3.x导致的
解决方案:直接修改/usr/bin/yum文件中的第一行为 #!/usr/bin/python2.7
【Hue-002】Hue启动报错,OperationalError: attempt to write a readonly database
解决方案:需要创建hue用户,并将/opt/module/hue目录的所有权交给hue用户
# 将hue源码的用户所有者/组改为hue
chown -R hue:hue /opt/module/hue
【Hue-003】Hue启动报错 ,“Couldn‘t import snappy. Support for snappy compression disabled.”
解决方案:直接安装对应的依赖包
python2 -m pip install snappy
【Hue-004】登录后,连接hive报错:AuthorizationException): User: hadoop is not allowed to impersonate hadoop.
解决方案:配置的参数和登录Hue的账号不一致导致的,直接改为一致即可。
参考Centos7上安装配置Hue上 1.6 配置进行调整
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
【Hue-005】登录后,连接hdfs报错:Cannot access: /. The HDFS REST service is not available.
解决方案:1)一般是Httpfs没有启动
在有nameNodede 机器上启动 httpfs服务
hdfs --daemon start httpfs
# 或者
$HADOOP_HOME/sbin/httpfs.sh start
2)缺少配置
hadoop下的配置文件中的httpfs-site.xml文件添加配置
<property>
<name>httpfs.proxyuser.hue.hosts</name>
<value>*</value>
</property>
<property>
<name>httpfs.proxyuser.hue.groups</name>
<value>*</value>
3)配置webhdfs_url可能把端口号搞错
# hadoop 2.x
webhdfs_url=http://linux100:50070/webhdfs/v1
# hadoop 3.x
webhdfs_url=http://linux100:9870/webhdfs/v1
【Hue-006】创建表时,报编码相关的错误,'ascii' codec can't encode characters.
主要原因:comment 里面注释为中文导致建表失败
解决方案:在所有的hue server 节点修改python默认编码,再重启hue
vim /opt/module/hue/apps/filebrowser/src/filebrowser/views.py
# 添加下面的内容
(# -*- coding:UTF-8 -*-) 也要加,加在最上面,不加可能汇报其他问题
import sys 可能已经存在
# -*- coding:UTF-8 -*-
import sys
reload(sys)
sys.setdefaultencoding( “utf-8” )
【Hue-007】居于Hive引擎创建的表,中文乱码问题.
主要原因:元数据的数据库编码问题导致
解决方案:① 进入mysql ,查看hive 数据库当前编码
show create database metastore;
② 如果是utf8 则执行下面sql将 hive 数据库默认编码改成 latin1
alter database metastore default character set latin1;
③ 执行下面sql ,修改 表/字段/分区/索引 等部分的注释字符集
use hive;
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
该解决方案主要借鉴下面这篇文章:
额外补充:
为什么数据库字符编码要用latin1(iso-8859-1),而不是utf8呢?
因为在mysql innodb引擎中,索引的长度最大字节数为767。 utf8 数字、英文1字节、中文3字节,gbk,数字、英文、中文各2字节,latin1,数字、英文、中文各1字节,所以hive元数据库为了获取更长的索引长度就采取了latin1字符编码。 其他相关知识