本文主要记录使用 yum 源安装 Hue 以及配置 Hue 集成 Hdfs、Hive、Impala、Yarn、Kerberos、LDAP、Sentry、Solr 等的过程。
安装环境:

  • 操作系统:CentOs6.5
  • Hadoop:cdh5.2.0
  • Hue:3.6.0+cdh5.2.0

    安装 Hue

    在 Hadoop 集群的一个节点上安装 Hue server,这里我是在我的测试集群中的 cdh1 节点上安装: ``` $ yum install hue hue-server
  1. # 配置 Hue
  2. ## 配置hue server

[desktop] http_host=cdh1 http_port=8888 secret_key=qpbdxoewsqlkhztybvfidtvwekftusgdlofbcfghaswuicmqp time_zone=Asia/Shanghai

  1. 如果想配置 SSL,则添加下面设置:

ssl_certificate=/path/to/certificate ssl_private_key=/path/to/key

  1. 并使用下面命令生成证书:

Create a key

$ openssl genrsa 1024 > host.key

Create a self-signed certificate

$ openssl req -new -x509 -nodes -sha1 -key host.key > host.cert

  1. ## 配置 DB Query
  2. DB Query 的相关配置在 hue.ini databases 节点下面,目前共支持 sqlite, mysql, postgresql oracle 四种数据库,默认使用的是 sqlite 数据库,你可以按自己的需要修改为其他的数据库。

[[database]] engine=sqlite3 name=/var/lib/hue/desktop.db

  1. ## 配置 Hadoop 参数
  2. ### HDFS 集群配置
  3. hadoop.hdfs_clusters.default 节点下配置以下参数:
  4. - `fs_defaultfs`
  5. - `logical_name` NameNode 逻辑名称
  6. - `webhdfs_url`
  7. - `security_enabled`:是否开启 Kerberos
  8. - `hadoop_conf_dir` hadoop 配置文件路径
  9. 完整配置如下:

[hadoop] [[hdfs_clusters]] [[[default]]]

  1. # Enter the filesystem uri
  2. fs_defaultfs=hdfs://mycluster
  3. # NameNode logical name.
  4. logical_name=mycluster
  5. # Use WebHdfs/HttpFs as the communication mechanism.
  6. # Domain should be the NameNode or HttpFs host.
  7. # Default port is 14000 for HttpFs.
  8. ## webhdfs_url=http://localhost:50070/webhdfs/v1
  9. webhdfs_url=http://cdh1:14000/webhdfs/v1
  10. # Change this if your HDFS cluster is Kerberos-secured
  11. security_enabled=true
  12. hadoop_conf_dir=/etc/hadoop/conf
  1. ### 配置 WebHDFS 或者 HttpFS
  2. Hue 可以通过下面两种方式访问 Hdfs 中的数据:
  3. - `WebHDFS`:提供高速的数据传输,客户端直接和 DataNode 交互
  4. - `HttpFS`:一个代理服务,方便与集群外部的系统集成
  5. 两者都支持 HTTP REST API,但是 Hue 只能配置其中一种方式;对于 HDFS HA部署方式,只能使用 HttpFS
  6. - 1、对于 WebHDFS 方式,在每个节点上的 hdfs-site.xml 文件添加如下配置并重启服务:
dfs.webhdfs.enabled true
  1. - 2 配置 Hue 为其他用户和组的代理用户。对于 WebHDFS 方式,在 core-site.xml 添加:
hadoop.proxyuser.hue.hosts hadoop.proxyuser.hue.groups
  1. 对于 HttpFS 方式,在 /etc/hadoop-httpfs/conf/httpfs-site.xml 中添加下面配置并重启 HttpFS 进程:
httpfs.proxyuser.hue.hosts httpfs.proxyuser.hue.groups
  1. 对于 HttpFS 方式,在 core-site.xml 中添加下面配置并重启 hadoop 服务:

hadoop.proxyuser.httpfs.hosts



hadoop.proxyuser.httpfs.groups

  1. - 3、修改 /etc/hue/conf/hue.ini hadoop.hdfs_clusters.default.webhdfs_url 属性。
  2. 对于 WebHDFS

webhdfs_url=http://cdh1:50070/webhdfs/v1/

  1. 对于 HttpFS

webhdfs_url=http://cdh1:14000/webhdfs/v1/

  1. ### YARN 集群配置
  2. hadoop.yarn_clusters.default 节点下配置:

[hadoop] [[yarn_clusters]] [[[default]]] resourcemanager_host=cdh1 resourcemanager_port=8032 submit_to=True security_enabled=true resourcemanager_api_url=http://cdh1:8088 proxy_api_url=http://cdh1:8088 history_server_api_url=http://cdh1:19888

  1. ## 集成 Hive
  2. beeswax 节点下配置:

[beeswax] hive_server_host=cdh1 hive_server_port=10000 hive_conf_dir=/etc/hive/conf

  1. 这里是配置为连接一个 Hive Server2 节点,如有需要可以配置负载均衡,连接一个负载节点。
  2. ## 集成 Impala
  3. impala 节点下配置

[impala]

Host of the Impala Server (one of the Impalad)

server_host=cdh1

Port of the Impala Server

server_port=21050

Kerberos principal

impala_principal=impala/cdh1@JAVACHEN.COM

Turn on/off impersonation mechanism when talking to Impala

impersonation_enabled=True

  1. 这里是配置为连接一个 Impala Server 节点,如有需要可以配置负载均衡,连接一个负载节点。<br />参考 [Configuring Per-User Access for Hue](http://www.cloudera.com/content/cloudera/en/documentation/core/v5-2-x/topics/impala_authorization.html#impersonation_unique_1) 和 [Use the Impala App with Sentry for real security](http://gethue.com/use-the-impala-app-with-sentry-for-real-security/),在配置 `impersonation_enabled` 为 true 的情况下,还需要在 impalad 的启动参数中添加 `authorized_proxy_user_config` 参数,修改 /etc/default/impala中的 IMPALA_SERVER_ARGS 添加下面一行:

-authorized_proxy_user_config=hue=* \

  1. 另外,如果集群开启了 Kerberos,别忘了配置 `impala_principal` 参数。
  2. ## 集成 kerberos
  3. 首先,需要在 kerberos server 节点上生成 hue 用户的凭证,并将其拷贝到 /etc/hue/conf 目录。:

$ kadmin: addprinc -randkey hue/cdh1@JAVACHEN.COM $ kadmin: xst -k hue.keytab hue/cdh1@JAVACHEN.COM

$ cp hue.keytab /etc/hue/conf/

  1. 然后,修改 hue.ini kerberos 节点:

[[kerberos]]

  1. # Path to Hue's Kerberos keytab file
  2. hue_keytab=/etc/hue/conf/hue.keytab
  3. # Kerberos principal name for Hue
  4. hue_principal=hue/cdh1@JAVACHEN.COM
  5. # Path to kinit
  6. kinit_path=/usr/bin/kinit
  1. 接下来,修改 /etc/hadoop/conf/core-site.xml,添加:
hadoop.proxyuser.hue.groups hadoop.proxyuser.hue.hosts hue.kerberos.principal.shortname hue
  1. 最后,重启 hadoop 服务。
  2. ## 集成 LDAP
  3. 开启 ldap 验证,使用 ldap 用户登录 hue server,修改 auth 节点:

[desktop] [[auth]] backend=desktop.auth.backend.LdapBackend

  1. 另外修改 ldap 节点:

[desktop] [[ldap]] base_dn=”dc=javachen,dc=com” ldap_url=ldap://cdh1

  1. # ldap用户登陆时自动在hue创建用户
  2. create_users_on_login = true
  3. # 开启direct bind mechanism
  4. search_bind_authentication=false
  5. # ldap登陆用户的模板,username运行时被替换
  6. ldap_username_pattern="uid=<username>,ou=people,dc=javachen,dc=com"
  1. 注意:在开启ldap验证前,先普通方法创建一个ldap存在的用户,赋超级用户权限,否则无法管理hue用户。
  2. ## 集成 Sentry
  3. 如果 hive impala 中集成了 Sentry,则需要修改 hue.ini 中的 libsentry 节点:

[libsentry]

Hostname or IP of server.

hostname=cdh1

Port the sentry service is running on.

port=8038

Sentry configuration directory, where sentry-site.xml is located.

sentry_conf_dir=/etc/sentry/conf

  1. 另外,修改 /etc/sentry/conf/sentry-store-site.xml 确保 hue 用户可以连接 sentry
sentry.service.allow.connect impala,hive,solr,hue
  1. ## 集成 Sqoop2
  2. sqoop 节点配置 server_url 参数为 sqoop2 的地址即可。
  3. ## 集成 HBase
  4. hbase 节点配置下面参数:
  5. - `truncate_limit`Hard limit of rows or columns per row fetched before truncating.
  6. - `hbase_clusters`HBase Thrift 服务列表,例如:`Cluster1|cdh1:9090,Cluster2|cdh2:9090`,默认为:`Cluster|localhost:9090`
  7. ## 集成 Zookeeper
  8. zookeeper 节点配置下面两个参数:
  9. - `host_ports`zookeeper 节点列表,例如:`localhost:2181,localhost:2182,localhost:2183`
  10. - `rest_url`zookeeper REST 接口,默认值为 [http://localhost:9998](http://localhost:9998)
  11. ## 集成 Oozie
  12. 未使用,暂不记录。
  13. # 管理 Hue
  14. 如果配置了 kerberos,则先获取 hue 凭证:

kinit -k -t /etc/hue/conf/hue.keytab hue/cdh1@JAVACHEN.COM

  1. 启动 hue server

$ service hue start

  1. 停止 hue server

$ service hue stop

``` hue server 默认使用 8888 作为 web 访问端口,故需要在防火墙上开放该端口。
你可以在 /var/log/hue 目录查看 hue 的日志,或者通过 http://cdh1:8888/logs 查看。

测试

在开启了 LDAP 后,使用 LDAP 中的管理员用户登录 hue,根据提示向导进行设置并将 LDAP 中的用户同步到 Hue Server,然后依次测试每一个功能是否运行正常。
关于 Hue 的使用向导,请参考 http://archive.cloudera.com/cdh5/cdh/5/hue/user-guide/index.html
Enjoy it !