hue(一)编译、启动、使用

背景

hue编译了很多遍,在ubuntu和centos上都安装过,联网和离线场景也都搞过,也搞坏过好多次操作系统,可以说hue是我目前为止编译踩坑最多的组件之一。不过坑多也意味着成长,所以记录下该文章一方面来加深自己的印象,另一方面也是想跟大家分享下自己的收获。

1、包管理了解

linux包管理大体上分为两类:

        一类是Debian 系列,其底层基于dpkg命令管理各种deb包的安装,上层又有apt、apt-get、aptitude等操作性更友好的包管理工具;

        另一类是RedHat 系列,底层基于rpm命令管理各种rpm包的安装,上层也有yum等其它操作性更好的包管理工具。

2、编译思路与准备

        首先挑选编译的hue版本,这里我挑选的是hue 4.10.0版本。其次到该github上查看编译的命令。

sudo yum install ant asciidoc cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-plain gcc gcc-c++ krb5-devel libffi-devel libxml2-devel libxslt-devel make mysql mysql-devel openldap-devel python-devel sqlite-devel gmp-devel

        可以看到,hue编译依赖很多,所以尽量不要拷贝那一整套命令直接执行,尽量一个一个的执行,这样即使哪个依赖出问题了,你也可以更精确的知道,这很便于后续的问题解决

        还有就是我刚开始编译的时候会报libc等库不存在或者版本不匹配的问题,这里友情提醒下,千万不要改系统库,一个失误可能就是整个系统不能用。我把系统玩坏的情况基本都是想修改系统库,不过后面也学会了如何修复系统库,但是那个操作性价比太低,而且麻烦,所以不会介绍如何修复。

        对于libc或zlib等不存在或版本不匹配问题,基本上升级一遍依赖库就可以解决。因为如果需要修改系统库才能编译hue,那么hue是不可能被很好的推广的,因此不到万不得已以及知道修改系统库的可能后果,真的不建议编译时修改系统库。

3、遇到的问题

        因为我已经安装过很多次,当时没有记录问题,因此这里我贴一些我还有印象的问题(centos和ubuntu的都包含),如果大家有问题也可以在下面留言一起交流。

        另外,每一次编译过程如果出现问题,在重新编译前尽量make clean一下,避免上次的错误的编译安装残留影响后面的重新安装。

3.1 centos - mysql已经安装过

报错信息如下:

Error: Package: 1:mariadb-devel-5.5.68-1.el7.x86_64 (os)
           Requires: mariadb-libs(x86-64) = 1:5.5.68-1.el7
 You could try using --skip-broken to work around the problem
** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows:
mysql-community-server-8.0.28-1.el7.x86_64 has missing requires of mysql-community-icu-data-files = ('0', '8.0.28', '1.el7')

        通过报错可以知道,系统中有更高的版本mysql 8,但是我们需要的是低版本mariadb,而且此时回过头看我们上一步安装mysql的详细信息可以知道由于mysql8已经存在,所以yum install mysql是没有安装成功的。

解决方式:

        rpm -qa|grep -i mysql 查看已经安装的高版本mysql组件

         rpm -ev --nodeps 组件名 卸载已经安装的组件

3.2 npm下载不下来

报错信息如下:

npm ERR! code ETIMEDOUT
npm ERR! syscall connect
npm ERR! errno ETIMEDOUT
npm ERR! network request to https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz failed, reason: connect ETIM
npm ERR! network This is a problem related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network 
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'

解决方式:

        npm默认镜像源为国外地址,所以下载会很慢或者下不下来,所以可以通过修改npm下载的镜像源为国内淘宝镜像源进行解决。

        npm config set proxy null 清空代理
        npm cache clean --force   清空缓存
        npm config set registry https://registry.npm.taobao.org 设置代理

3.3 nodejs版本问题

        这个报错我没有截图,后面我看看能不能从其它博友的文章上转载一下。其出现的原因是nodejs 18版本及以上涉及最新底层操作系统相关的包。所以在安装nodejs的时候,推荐使用18以下的版本。

3.4 缺少libpam0g-dev依赖

报错信息如下:

        AttributeError: /opt/hue-release-4.10.0/build/env/bin/python2.7: undefined symbol: pam_start

 解决方式:

        apt-get install libpam0g-dev

3.5 Api Error: 500 Server Error: User: root is not allowed to impersonate root for url: http://192.168.71.137:9090/

这是访问hbase时报的错,其提示信息很明显,是我们没有给root用户配置代理。这个需要在hadoop的core-site.xml配置文件中添加root代理(注意这个root可不是操作系统中的root,这个是我首次登陆hue创建的hue用户名):

<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
    </property>
    <property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>

最后注意要重启hdfs 以及 hbase thrift服务

4、编译安装

有两个命令:

make apps
        其把安装包都打到当前的源码包中,如果迁移安装包,就需要把当前整个包都打包在一块,这样会造成安装包冗余大量的源码数据。

PREFIX=/opt/module/hue make install
        其把安装包安装到指定的目录中。

如果有迁移安装包的需求,一定要注意安装包的路径,因为hue中一些依赖使用了绝对路径,所以在迁移安装包的时候,尽量保证路径不变

5、启动前准备

5.1 创建hue用户和用户组
        groupadd hue
        useradd -g hue hue

        这一步之后,其实hue就可以启动了,运行命令:./build/env/bin/supervisor 效果如下:

         但是此时启动的hue服务其元数据默认存在本地的sqlLite上面,这经常会出现database is locked错误,所以一般强烈推荐配置成熟的数据库进行存储,如mysql、postgres、oracle等。

5.2 拷贝配置文件

        可能有的版本编译安装后,desktop/conf/目录下没有hue.ini文件,此时可以将desktop/conf.dist/目录下的hue.ini拷贝过去,或者直接搜整个hue的源码目录,找到后再拷贝过去。

5.3 更换元数据存储目录(可选)

修改hue.ini配置文件,添加如下信息(注意区分database和databases这两个配置项):

[[database]]
    engine=mysql
    host=192.168.71.135
    port=3306
    user=root
    password=123456
    name=hue

5.4 连接上一步配置的数据库

        这一步有两个操作,一个是创建上一步指定的hue数据库,还有一个就是查看数据库是否支持远程访问,因为有的mysql数据库默认安装后只能localhost访问。

1)创建数据库

         create database hue;

2)查看配置的user是否可以远程访问

         select host,user from mysql.user;

        可以看到我这里user用户的host为%,所以是支持的,如果不是%,那么可以通过alter语句将所配置用户的host字段修改为%号。或者重新创建一个用户,但是注意不要忘记赋权,相关参考命令如下:

        create user 'hue'@'%' identified by '123456';
        GRANT ALL PRIVILEGES ON *.* TO 'hue'@'%' IDENTIFIED BY '123456';
        flush privileges;

5.5 同步数据库

        在配置完元数据存储库后,我们要通过命令在对应的库上创建hue需要用到的表。具体执行命令如下:

        ./build/env/bin/hue syncdb

        ./build/env/bin/hue migrate

5.6 启动测试

至此,虽然我们还没有连接各种具体的大数据组件,但到此为止,hue的服务算是完整的启动起来了,效果图如下:

首次登陆会将输入的用户名和密码作为超级管理员。

另外如果启动时有端口号冲突,可以修改hue.ini的如下配置(默认是8888):

http_port=8008

6、hadoop连接

        HDFS支持两种RESTful接口:WebHDFS和HttpFS。WebHDFS默认端口号为50070,HttpFS默认端口号为14000。默认启动WebHDFS而不会启动HttpFS,而HttpFS需要通过sbin/httpfs.sh来启动。

        网上说如果有HA,那么只能用14000,但是经过测试,发现50070也可以有读写权限,所以具体的使用可以根据自己的实际情况进行配置。

1)修改core-site.xml文件

<property>
    <name>hadoop.proxyuser.hue.hosts</name>
    <value>*</value>
    </property>
    <property>
    <name>hadoop.proxyuser.hue.groups</name>
    <value>*</value>
</property>
## 下面配置可选,但如果HA或者使用httpfs传递消息则比选
<property>
    <name>hadoop.proxyuser.httpfs.hosts</name>
    <value>*</value>
    </property>
    <property>
    <name>hadoop.proxyuser.httpfs.groups</name>
    <value>*</value>
</property>

2)修改httpfs-site.xml配置文件(可选)

<property>
    <name>httpfs.proxyuser.hue.hosts</name>
    <value>*</value>
</property>
<property>
    <name>httpfs.proxyuser.hue.groups</name>
    <value>*</value>
</property>

3)重启hdfs

4)开启httpfs服务

5)修改hue.ini文件

 [[hdfs_clusters]]
    [[[default]]]
      fs_defaultfs=hdfs://192.168.71.135:9000
	  webhdfs_url=http://192.168.71.135:50070/webhdfs/v1

6)重启hue

        ./build/env/bin/supervisor

7)效果如下:

7、yarn连接

1)修改hue.ini

[[yarn_clusters]]
    [[[default]]]
      resourcemanager_host=192.168.71.136
	  resourcemanager_api_url=http://192.168.71.136:8088
	  proxy_api_url=http://192.168.71.136:8088
	  history_server_api_url=http://192.168.71.137:19888

2)重启yarn

3)重启hue

4)效果如下:

8、hbase连接

1)修改hdfs的core-site配置文件,增加hbase代理

<property>
    <name>hadoop.proxyuser.hbase.hosts</name>
    <value>*</value>
    </property>
    <property>
    <name>hadoop.proxyuser.hbase.groups</name>
    <value>*</value>
</property>

2)修改hbase-site.xml

<property>
  <name>hbase.regionserver.thrift.http</name>
  <value>true</value>
</property>
<property>
  <name>hbase.thrift.support.proxyuser</name>
  <value>true</value>
</property>

3)修改hue.ini配置

[hbase]
  hbase_clusters=(Cluster|192.168.71.137:9090)
  hbase_conf_dir=/opt/module/hbase-1.4.13/conf

4)重启hdfs hbase,以及开启hbase-thrift服务

        start-dfs.sh
        start-hbase.sh
        hbase-daemon.sh start thrift

5)重启hue

6)效果如下

9、hive连接

1)修改hue.ini

[beeswax]
    hive_server_host=192.168.71.136
    hive_server_port=10000
    server_conn_timeout=120

2)确保开启了hive-server2服务进程

        ./bin/hiveserver2

3)重启hue

4)效果如下

        笔记本虚拟机资源属实有限,hiveserver2一直起不起来,所以hive的效果图这里就不展示了。

10、关系型数据库连接

        在4.10.0版本中关系型数据库的配置是最坑爹的,我也是配置了好久才配置出来。首先说下,在hue3版本系列中关系型数据库好像默认就有,但是在hue4系列中好像关系型数据需要显示去配置才能显示出来(测试hue4.3.0、hue4.7.0、hue4.8.0、hue4.9.0都是需要显示配置),而且一旦配置了关系型数据库,在数据源那块的所有展示菜单,比如hive、impala、solar等都需要显示配置出来。

1)在[[databases]]中配置关系型数据库

[librdbms]
  [[databases]]
    [[[mysql]]]
        engine=mysql
        host=192.168.71.135
        port=3306
        user=root
        password=123456

2)配置关系型数据库和hive的展示

[notebook]
  [[interpreters]]

    [[[mysql]]]
      name = MySQL
      interface=sqlalchemy


    [[[hive]]]
      name=Hive
      interface=hiveserver2

3)效果如下:

11、ubuntu16 - apt本地库使用

离线环境我主要使用的是ubuntu环境,在迁移底层包时为了更好的管理包之间的依赖关系,我个人推荐使用apt本地库来管理包的迁移,因为经过测试,对于包含很多依赖的包,如果用dpkg一次性全装或者一个个装,有些场景下回一直失败,而通过apt本地库,则可以直接安装。话不多说,下面直接介绍apt本地库的制作和使用。

1)首先在联网机器配置apt源 /etc/apt/sources.list 

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

2)运行apt-get update更新本地库

3)清空或转移 /var/cache/apt/archives下面的deb包

4)通过apt-get install packagename --download-only下载deb到本地( /var/cache/apt/archives)

5)将 /var/cache/apt/archives目录下所有deb文件拷贝到一个新的目录中,我这里是拷贝到新建的/opt/debs目录中

6)去到要打包目录的上一层,这里debs的上一层是opt,所以运行命令cd /opt

7)创建一个描述文件,描述当前文件夹中有哪些依赖包以及依赖包之间的依赖关系。
dpkg-scanpackages debs/  /dev/null | gzip> debs/Packages.gz

8)打包debs,便于拷贝移植
tar -cvzf debs.tar.gz debs

9)移动到离线环境并解压

10)修改apt源配置文件
mv /etc/apt/sources.list /etc/apt/sources.list.bak     备份原有源
touch /etc/apt/sources.list    创建空文件
echo"deb [trusted=yes] file:/opt debs/" > /etc/apt/sources.list    指定本地源

11)更新源并安装
apt-get update        此时apt源即指向我们的本地源
apt-get install package        这里就可以安装我们的目标包文件了

12)安装结束,还原已有的源

mv /etc/apt/sources.list.bak /etc/apt/sources.list

12、总结

无论用yum还是apt-get安装依赖,尽量一个个安装。

尽量不要直接改动系统核心库,可以通过整体升级的方式来升级核心库支持的相关版本。

每次重新编译安装前,尽量make clean一下,如果指定了目录,就将那个目录删除。

nodejs镜像源尽量配置成国内的。

nodejs 18 版本以上会依赖一个高级的核心系统库,推荐使用nodejs18以下的版本。

hue关系型数据库的展示需要显示声明,而且一旦配置了关系型数据库的显示展示,hive等其它默认展示的数据源也需要显示声明才能展示出来

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hue 是一个 Hadoop 生态圈的 Web 界面,它可以方便地管理和使用 Hadoop 生态圈的各种组件,包括 Impala。下面是使用 Hue 和 Impala 的简单教程: 1. 安装配置 Impala 首先,需要在 Hadoop 集群中安装配置 Impala。具体的安装配置步骤可以参考 Impala 官方文档。 2. 启动 Hue 启动 Hue 的命令如下: ``` $ sudo service hue start ``` 启动成功后,在浏览器中输入 Hue 的 URL 地址,例如:`http://localhost:8888/`,进入 Hue 的登录页面。输入用户名和密码,点击登录即可进入 Hue 的主界面。 3. 创建 Impala 表 在 Hue 的主界面中,点击左侧菜单栏的“Impala”选项,进入 Impala 的查询页面。在查询页面中,输入 Impala 建表语句,例如: ``` CREATE TABLE my_table ( id INT, name STRING, age INT, gender STRING ) ``` 然后,点击“Execute”按钮,执行该语句,即可创建名为`my_table`的表。 4. 查询 Impala 表 在 Hue 的 Impala 查询页面中,输入 Impala 查询语句,例如: ``` SELECT * FROM my_table; ``` 然后,点击“Execute”按钮,执行该语句,即可查询`my_table`表中的数据。 5. 导入数据到 Impala 表 在 Hue 的 Impala 查询页面中,可以使用 LOAD DATA 命令将数据导入到 Impala 表中。例如: ``` LOAD DATA INPATH '/path/to/data' INTO TABLE my_table; ``` 6. 使用 Impala 高级功能 Hue 还提供了 Impala 的高级功能,例如:查询分析器、视图、UDF 等。在 Hue 的 Impala 查询页面中,可以使用这些高级功能,从而更方便地管理和使用 Impala。 以上就是使用 Hue 和 Impala 的基本教程,Hue 还有很多其他的功能,可以根据需要进行学习和使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值