在DataLake集群自建Hue组件

新版控制台EMR DataLake集群(EMR-5.8.0及以上版本和EMR-3.42.0及以上版本)不再包含Hue组件。本文为您介绍如何通过root用户在EMR DataLake集群中安装、构建和访问Hue组件。

前提条件

已创建DataLake集群,详情请参见创建集群

使用限制

Master节点组已开启挂载公网开关。

操作步骤

  1. 登录集群Master节点,详情请参见登录集群

  2. 从Hue的官方Git仓库下载hue-release包,上传到登录节点并执行以下命令解压缩。

    cd $hue_dir
    tar zxf hue-release-4.10.0.tar.gz

    $hue_dir为hue包上传目录,本示例中$hue_dir/tmp/

  3. 执行以下命令,安装依赖包。

    sudo yum -y 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-devel openldap-devel python3-devel sqlite-devel gmp-devel rsync mysql-devel
    sudo yum -y install nodejs npm
    sudo yum -y install git
  4. 创建数据库并修改Hue相关配置连接MySQL。

    1. 执行以下命令,登录MySQL Shell。

      mysql -u root -pEMRroot1234
      说明

      内置MySQL登录的用户名为root,密码为EMRroot1234。

    2. 执行以下命令,创建hue数据库和hue账号,并将数据库所有权限赋予hue。

      CREATE DATABASE IF NOT EXISTS hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
      CREATE USER 'hue'@'localhost' IDENTIFIED BY '******';
      GRANT ALL on hue.* to 'hue'@'localhost' IDENTIFIED BY '******';
      FLUSH PRIVILEGES;
      说明

      示例中的******为新增hue账号的密码,请您自行修改。

    3. 进入$hue_dir/hue-release-4.10.0/desktop/conf目录,将pseudo-distributed.ini.tmpl复制为pseudo-distributed.ini,并按实际需求修改pseudo-distributed.ini中相应配置本示例中需要修改[desktop][[database]]下的配置。

        [desktop]
        	gunicorn_work_class=sync
        [[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=localhost
          port=3306
          user=hue
          password=******
          # conn_max_age option to make database connection persistent value in seconds
          # https://docs.djangoproject.com/en/1.11/ref/databases/#persistent-connections
          ## conn_max_age=0
          # Execute this script to produce the database password. This will be used when 'password' is not set.
          ## password_script=/path/script
          name=hue
          ## options={}
          # Database schema, to be used only when public schema is revoked in postgres
          ## schema=public

      参数

      说明

      gunicorn_work_class

      修改参数为sync。

      engine

      数据库引擎,本示例为mysql。

      host

      访问数据库的主机名,MySQL中默认值为localhost。

      port

      与数据库通信的端口号,MySQL中默认值为3306。

      user

      为前一步骤中创建的用户名。本示例为hue。

      password

      为前一步骤中新增hue账号的密码,本示例为******。

      name

      为前一步骤中创建的数据库名称。本示例为hue。

  5. 执行以下命令设置环境变量。

    export PYTHON_VER=python3.6
    export SKIP_PYTHONDEV_CHECK=true
    说明

    本文示例使用Master节点上自带的Python 3.6版本构建Hue,但具体的Python版本需要根据实际情况进行设置。

  6. 下载依赖包并安装Hue。如果节点能够稳定访问GitHub,可以选择自动下载安装;否则请手动下载安装。

    自动下载安装

    进入Hue根目录执行以下命令安装Hue,自动下载安装过程中需要访问GitHub并下载相应依赖包。

    构建流程完成后hue将被安装在/opt/apps/目录下。

    rm -rf $hue_dir/hue-release-4.10.0/desktop/core/ext-py/
    rm -rf /opt/apps/hue
    cd $hue_dir/hue-release-4.10.0/
    PREFIX=/opt/apps make install
    说明

    如果节点无法稳定访问GitHub,可能会导致安装失败。这种情况下,建议手动下载所需软件包并进行安装。

    手动下载安装

    1. 修改$hue_dir/hue-release-4.10.0/desktop/core/requirements.txt的最后2行取消github相关依赖自动下载,修改前后内容如下所示。

      # 修改前内容
      # git+https://github.com/gethue/django-babel.git
      # git+https://github.com/gethue/django-mako.git
      # 修改后内容
      django-babel
      django-mako
    2. 进入Hue根目录($hue_dir/hue-release-4.10.0/)执行以下命令安装Hue。构建流程完成后hue将被安装在/opt/apps/目录下。

      rm -rf desktop/core/ext-py/
      rm -rf /opt/apps/hue
      PREFIX=/opt/apps make install
    3. 从Hue的官方Git仓库下载django-makodjango-babel源码,上传到hue包所在节点并在上传目录下执行以下命令解压缩。

      unzip django-babel-master.zip
      unzip django-mako-master.zip

      本示例上传到master节点的根目录/tmp/下,解压缩后的目录为/tmp/django-babel-master/tmp/django-mako-master

    4. 分别在django-babel和django-mako解压缩后的根目录下执行以下命令,安装django-mako和django-babel。

      source /opt/apps/hue/build/env/bin/activate
      pip install -e .
  7. 执行以下命令,启动Hue服务并使用hue。

    source /opt/apps/hue/build/env/bin/activate
    sudo useradd hue
    supervisor

    您可以执行以下命令,添加superuser,并使用superuser登录Hue UI。

    source /opt/apps/hue/build/env/bin/activate
    hue createsuperuser #会触发交互式命令行,用于输入superuser用户名和密码。
  8. 在浏览器地址栏中输入http://<Master节点公网的IP地址>:8000,即可访问Hue UI。

    说明

    本示例仅包含Hue基础配置,若需要使用Hue其余功能请在查看Hue配置信息后,修改/opt/apps/hue/desktop/conf/pseudo-distributed.ini配置文件并重启Hue服务。

相关文档

HUE官方运维文档:ADMINISTRATOR