前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hue安装与部署,并连接Impala

Hue安装与部署,并连接Impala

作者头像
skyyws
发布2022-05-20 08:14:15
1.9K1
发布2022-05-20 08:14:15
举报
文章被收录于专栏:skyyws的技术专栏

本文主要讲解了如何安装并启动Hue 4.1.0,然后连接impala集群进行sql查询。其中,还包含了在安装部署过程中遇到的一些问题,希望可以帮助到大家。

准备源文件

首先,我们需要下载hue的源代码,进行编译,这里有两种方式可以下载:

1. 通过git命令从github上直接拉取对应版本的分支即可,hue的官方git地址是:https://github.com/cloudera/hue,可以通过如下命令直接拉取

代码语言:javascript
复制
git clone https://github.com/cloudera/hue.git

但是有一个问题,因为我是在公司的服务器上进行git clone,下载速度会非常慢,慢的令人发指!此时,也可以通过本地使用迅雷直接下载zip包,然后上传至服务器。但是我在服务器上使用unzip进行解压的过程中发现出现了错误:

上网搜索发现,好像是zip命令的一个bug。因此,我又采用了下面的方法来获取源码;

2. 可以直接通过hue的官网下载相应版本的hue:http://gethue.com/,可以从这里面选取各个版本的hue下载,然后进行编译:

使用这种方法可以直接在本地用迅雷下载tar包,然后上传至服务器进行解压。这种方式下载会很快,而且使用tar命令进行解压也不会有问题。但是,该方法下载的源码是没有git相关信息的,因此具体采用哪种方法看大家自己的需求吧。我这里选择的是4.1版本的hue。

编译

我们将刚刚下载的压缩包解压至要安装的目录下,然后进入相应的目录,准备编译(假设我们这里安装目录为/home/hue-4.1.0)。由于我这边选择的4.1.0版本,因此,下面安装所依赖的一些组件,都是以该版本为主,具体可参考:https://github.com/cloudera/hue/tree/branch-4.1。这里我就简要介绍一下各个主要的步骤,注意,我服务器所在的环境是debian 8,因此主要以该系统为主,其他系统也类似。

1. 安装依赖的组件和库;

代码语言:javascript
复制
sudo apt-get install git ant gcc g++ libffi-dev libkrb5-dev libmysqlclient-dev libsasl2-dev libsasl2-modules-gssapi-mit libsqlite3-dev libssl-dev libxml2-dev libxslt-dev make maven libldap2-dev python-dev python-setuptools libgmp3-dev

2. 安装JDK,这里就不多做介绍,比较简单;

3. 源码编译

代码语言:javascript
复制
cd /home/hue-4.1.0
make apps

编译完成之后,就可以准备启动hue服务了;另外,如果要重新编译的话,可以使用如下命令进行清理:

代码语言:javascript
复制
# Remove desktop build products
make clean
# Remove desktop and thirdparty build products
make distclean

也可以通过直接make命令查看可以选择的参数:

如果在编译过程中,出现了找不到某个包或者软件的问题,请按照错误提示依次下载安装,在这个过程中需要root权限,请提前准备好。

配置

编译完成之后,我们需要对配置文件进行配置,hue的配置文件位于desktop/conf/pseudo-distributed.ini,我们可以通过对该文件进行修改,来进行相应的配置,这里主要介绍几个比较重要的配置。

首先,由于数据库引擎我使用了mysql,所有需要配置mysql的相关选项,其中name表示创建的各个表所属的数据库。

代码语言:javascript
复制
[[database]]
  # Database engine is typically one of:
  # postgresql_psycopg2, mysql, sqlite3 or oracle.
  #
  # Note that for sqlite3, 'name', below is a path to the filename. For other backends, it is the database name.
  # Note for Oracle, options={"threaded":true} must be set in order to avoid crashes.
  # Note for Oracle, you can use the Oracle Service Name by setting "host=" and "port=" and then "name=<host>:<port>/<service_name>".
  # Note for MariaDB use the 'mysql' engine.
  engine=mysql
  host=127.0.0.1
  port=3306
  user=hue
  password=hue
  # Execute this script to produce the database password. This will be used when 'password' is not set.
  ## password_script=/path/script
  name=hue
  ## options={}

其次,由于线上需要配置kerberos认证,因此我们需要配置相应的各个参数。

代码语言:javascript
复制
[[kerberos]]
 
  # Path to Hue's Kerberos keytab file
  hue_keytab=/home/keytab/hue.keytab
  # Kerberos principal name for Hue
  hue_principal=hue/xxx@xxx
  # Frequency in seconds with which Hue will renew its keytab
  keytab_reinit_frequency=3600
  # Path to keep Kerberos credentials cached
  ccache_path=/tmp/hue/hue_krb5_ccache
  # Path to kinit
  kinit_path=/usr/bin/kinit

注意,如果没有配置ccache_path这个参数,那么在启动hue的时候,可能会报“No such file or directory: '/var/run/hue/hue_krb5_ccache'”这个错误,如下所示:

由于我这边主要是为了连接impala,所以还需要进行impala的相关配置,如下所示:

代码语言:javascript
复制
[impala]
  # Host of the Impala Server (one of the Impalad)
  server_host=xxx
 
  # Port of the Impala Server
  server_port=21050
 
  # Kerberos principal
  impala_principal=impala/xxx@xxx

其他的一些相关的,例如hadoop,hive之类的配置,网上有很多资料,这里就不再一一列举出来,大家可以自行搜索并参考。

启动

在官方文档中,我们可以看到,编译完成之后,就是通过如下命令启动:

代码语言:javascript
复制
build/env/bin/hue runserver
# start the production server (but lose the automatic reloading after source modification)
build/env/bin/supervisor

但是,实际上,直接启动会有问题,如下所示:

提示“Table 'hue.south_migrationhistory' doesn't exist”,在网上查阅各种资料后发现,由于我是使用了mysql来存储的元数据,因此在启动服务前还有一些其他的准备工作要做,关于mysql的具体配置,我在前面已经介绍过了,这里就不再赘述。可以通过下面两条命令创建所需要的一些表:

代码语言:javascript
复制
./build/env/bin/hue syncdb --noinput
./build/env/bin/hue migrate

更多具体的可以参考:https://www.cloudera.com/documentation/enterprise/5-6-x/topics/cdh_ig_hue_database.html。执行完两条命令之后,我们就可以在mysql的对应库(我们在上面配置的name为hue,这里的库就是指这个)下面看到相应的表了:

上图中我只截图了部分表。此时,我们就可以再次通过命令来启动hue,此时我们发现可以正常启动了,然后通过http://hostname:8000就可以访问hue的页面了:

由于是第一次进入,所以我们需要创建新用户,这个用户就是超级用户(相当于管理员),本以为创建之后就可以愉快的查询了,结果没想到有出现了下面的错误:

AttributeError 'Config' object has no attribute 'get',在网上搜索了一阵子之后,发现跟配置文件里面的如下配置项有关:

然后,我将app_blacklist注释之后,再使用刚刚创建的用户名和密码登录,发现登录成功,然后查询一切正常!

之后我又将app_blacklist配置了一些少量的值,发现也是可以正常使用的,说明是有某一个依赖的如果配置进去了,则会导致上面的错误,具体是哪一个我也没有过多研究,大家有兴趣的话可以自己研究研究。

到这里,Hue的安装和启动终于搞定了,真是一波三折!现在我们就可以愉快的使用hue来查询impala中的数据了,还是非常方便的。

其他相关

关于其他的一些更多操作,我们可以通过直接执行build/env/bin/hue来查看可选项,包括创建超级用户,修改用户密码等等,如下所示:

上图只截图了部分命令,更多相关hue相关的信息可以参见hue官方文档。

问题补充

问题一 Couldn't renew kerberos ticket问题

在本地执行/usr/bin/kinit -R -c /tmp/hue/hue_krb5_ccache失败,明显kerberos有问题,与hue无关。

问题二 error load database,TSocket read 0 bytes

经过排查发现,由于我们使用了代理用户,principal和be_principal不一样,因此导致hue在连接impalad的时候有kerberos认证失败的问题,因此建议使用impala的principal。即principal和be_principal使用同一个principle,然后hue的配置文件中impala_principal也配置为相同的principle。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备源文件
  • 编译
  • 配置
  • 其他相关
  • 问题补充
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档