天天看点

Hue安装配置实践

hue是一个开源的apache hadoop ui系统,最早是由cloudera desktop演化而来,由cloudera贡献给开源社区,它是基于python web框架django实现的。通过使用hue我们可以在浏览器端的web控制台上与hadoop集群进行交互来分析处理数据,例如操作hdfs上的数据,运行mapreduce job等等。很早以前就听说过hue的便利与强大,一直没能亲自尝试使用,下面先通过官网给出的特性,通过翻译原文简单了解一下hue所支持的功能特性集合:

默认基于轻量级sqlite数据库管理会话数据,用户认证和授权,可以自定义为mysql、postgresql,以及oracle

基于文件浏览器(file browser)访问hdfs

基于hive编辑器来开发和运行hive查询

支持基于solr进行搜索的应用,并提供可视化的数据视图,以及仪表板(dashboard)

支持基于impala的应用进行交互式查询

支持spark编辑器和仪表板(dashboard)

支持pig编辑器,并能够提交脚本任务

支持oozie编辑器,可以通过仪表板提交和监控workflow、coordinator和bundle

支持hbase浏览器,能够可视化数据、查询数据、修改hbase表

支持metastore浏览器,可以访问hive的元数据,以及hcatalog

支持job浏览器,能够访问mapreduce job(mr1/mr2-yarn)

支持job设计器,能够创建mapreduce/streaming/java job

支持sqoop 2编辑器和仪表板(dashboard)

支持zookeeper浏览器和编辑器

支持mysql、postgresql、sqlite和oracle数据库查询编辑器

下面,我们通过实际安装来验证hue的一些功能。

环境准备

这里,我所基于的基本环境及其配置情况,如下所示:

centos-6.6 (final)

jdk-1.7.0_25

maven-3.2.1

git-1.7.1

hue-3.7.0(branch-3.7.1)

hadoop-2.2.0

hive-0.14

python-2.6.6

基于上面的软件工具,要保证正确安装和配置。需要说明的是,我们通过hue来执行hive查询,需要启动hiveserver2服务:

<code>1</code>

<code>cd</code> <code>/usr/</code><code>local</code><code>/hive</code>

<code>2</code>

<code>bin/hiveserver2 &amp;</code>

否则通过hue web控制无法执行hive查询。

安装配置

我新建了一个hadoop用户,以hadoop用户,首先使用yum工具来安装hue相关的依赖软件:

<code>sudo</code> <code>yum</code><code>install</code> <code>krb5-devel cyrus-sasl-gssapi cyrus-sasl-deve libxml2-devel libxslt-devel mysql mysql-devel openldap-devel python-devel python-simplejson sqlite-devel</code>

然后,执行如下命令进行hue软件包的下载构建:

<code>cd</code> <code>/usr/</code><code>local</code><code>/</code>

<code>3</code>

<code>sudo</code> <code>chown</code> <code>-r hadoop:hadoop branch-3.7.1/</code>

<code>4</code>

<code>cd</code> <code>branch-3.7.1/</code>

<code>5</code>

<code>make</code> <code>apps</code>

上述过程如果没有任何问题,我们就已经安装好hue。hue的配置文件为/usr/local/branch-3.7.1/desktop/conf/pseudo-distributed.ini,默认的配置文件不能正常运行hue,所以需要修改其中的内容,与我们对应的hadoop集群配置相对应。该配置文件根据整合不同的软件,将配置分成多个段,每个段下面还有子段,便于管理配置,如下所示(省略子段名称):

desktop

libsaml

libopenid

liboauth

librdbms

hadoop

filebrowser

liboozie

oozie

beeswax

impala

pig

sqoop

proxy

hbase

search

indexer

jobsub

jobbrowser

zookeeper

spark

useradmin

libsentry

我们很容易根据需要来配置自己需要的内容。我们修改配置文件的情况,如下表所示:

<b>hue配置段</b>

<b>hue配置项</b>

<b>hue配置值</b>

<b>说明</b>

default_hdfs_superuser

hdfs管理用户

http_host

10.10.4.125

hue web server所在主机/ip

http_port

8000

hue web server服务端口

server_user

运行hue web server的进程用户

server_group

运行hue web server的进程用户组

default_user

yanjun

hue管理员

hadoop/hdfs_clusters

fs_defaultfs

hdfs://hadoop6:8020

对应core-site.xml配置项fs.defaultfs

hadoop_conf_dir

/usr/local/hadoop/etc/hadoop

hadoop配置文件目录

hadoop/yarn_clusters

resourcemanager_host

hadoop6

对应yarn-site.xml配置项yarn.resourcemanager.hostname

resourcemanager_port

8032

resourcemanager服务端口号

resourcemanager_api_url

http://hadoop6:8088

对应于yarn-site.xml配置项yarn.resourcemanager.webapp.address

proxy_api_url

http://hadoop6:8888

对应yarn-site.xml配置项yarn.web-proxy.address

history_server_api_url

http://hadoo6:19888

对应mapred-site.xml配置项mapreduce.jobhistory.webapp.address

hive_server_host

hive所在节点主机名/ip

hive_server_port

10000

hiveserver2服务端口号

hive_conf_dir

/usr/local/hive/conf

hive配置文件目录

上面主要配置了hadoop集群相关的内容,以及hive(beeswax段配置的是hive,通过hiveserver2与hive交互)。

最后,启动hue服务,执行如下命令:

<code>cd</code> <code>/usr/</code><code>local</code><code>/branch-3.7.1/</code>

<code>build/</code><code>env</code><code>/bin/supervisor &amp;</code>

hue功能验证

我们主要通过在hue web控制台上执行hive查询,所以需要准备hive相关的表和数据。

hive准备

我们首先在hive中创建一个数据库(如果没有权限则授权):

<code>grant</code> <code>all</code> <code>to</code> <code>user</code> <code>hadoop;</code>

<code>create</code> <code>database</code> <code>user_db;</code>

这里,hadoop用户是hive的管理用户,可以将全部权限赋给该用户。

创建示例表,建表ddl如下所示:

<code>01</code>

<code>create</code> <code>table</code> <code>user_db.daily_user_info (</code>

<code>02</code>

<code></code><code>device_type</code><code>int</code><code>,</code>

<code>03</code>

<code></code><code>version string,</code>

<code>04</code>

<code></code><code>channel string,</code>

<code>05</code>

<code></code><code>udid string)</code>

<code>06</code>

<code>partitioned</code><code>by</code> <code>(</code>

<code>07</code>

<code></code><code>stat_date string)</code>

<code>08</code>

<code>row format delimited</code>

<code>09</code>

<code></code><code>fields terminated</code><code>by</code> <code>'\t'</code>

<code>10</code>

<code>stored</code><code>as</code> <code>inputformat</code>

<code>11</code>

<code></code><code>'org.apache.hadoop.mapred.textinputformat'</code>

<code>12</code>

<code>outputformat</code>

<code>13</code>

<code></code><code>'org.apache.hadoop.hive.ql.io.hiveignorekeytextoutputformat'</code><code>;</code>

准备的数据文件格式,示例如下所示:

<code>0 3.2.1 c-gbnpk b01b8178b86cebb9fddc035bb238876d</code>

<code>0 3.0.7 a-wanglouko e2b7a3d8713d51c0215c3a4affacbc95</code>

<code>0 1.2.7 h-follower 766e7b2d2eedba2996498605fa03ed33</code>

<code>0 1.2.7 a-shiry d2924e24d9dbc887c3bea5a1682204d9</code>

<code>0 1.5.1 z-wammer f880af48ba2567de0f3f9a6bb70fa962</code>

<code>6</code>

<code>0 1.2.7 h-clouda aa051d9e2accbae74004d761ec747110</code>

<code>7</code>

<code>0 2.2.13 h-clouda 02a32fd61c60dd2c5d9ed8a826c53be4</code>

<code>8</code>

<code>0 2.5.9 b-ywsy 04cc447ad65dcea5a131d5a993268edf</code>

各个字段之间使用tab分隔,每个字段含义与上面表user_db.daily_user_info的字段对应,然后我们将测试数据加载到示例表的各个分区之中:

<code>load</code> <code>data</code><code>local</code> <code>inpath</code><code>'/home/hadoop/u2014-12-05.log'</code> <code>overwrite</code><code>into</code> <code>table</code><code>user_db.daily_user_info partition (stat_date=</code><code>'2014-12-05'</code><code>);</code>

<code>load</code> <code>data</code><code>local</code> <code>inpath</code><code>'/home/hadoop/u2014-12-06.log'</code> <code>overwrite</code><code>into</code> <code>table</code><code>user_db.daily_user_info partition (stat_date=</code><code>'2014-12-06'</code><code>);</code>

<code>load</code> <code>data</code><code>local</code> <code>inpath</code><code>'/home/hadoop/u2014-12-07.log'</code> <code>overwrite</code><code>into</code> <code>table</code><code>user_db.daily_user_info partition (stat_date=</code><code>'2014-12-07'</code><code>);</code>

<code>load</code> <code>data</code><code>local</code> <code>inpath</code><code>'/home/hadoop/u2014-12-08.log'</code> <code>overwrite</code><code>into</code> <code>table</code><code>user_db.daily_user_info partition (stat_date=</code><code>'2014-12-08'</code><code>);</code>

<code>load</code> <code>data</code><code>local</code> <code>inpath</code><code>'/home/hadoop/u2014-12-09.log'</code> <code>overwrite</code><code>into</code> <code>table</code><code>user_db.daily_user_info partition (stat_date=</code><code>'2014-12-09'</code><code>);</code>

<code>load</code> <code>data</code><code>local</code> <code>inpath</code><code>'/home/hadoop/u2014-12-10.log'</code> <code>overwrite</code><code>into</code> <code>table</code><code>user_db.daily_user_info partition (stat_date=</code><code>'2014-12-10'</code><code>);</code>

<code>load</code> <code>data</code><code>local</code> <code>inpath</code><code>'/home/hadoop/u2014-12-11.log'</code> <code>overwrite</code><code>into</code> <code>table</code><code>user_db.daily_user_info partition (stat_date=</code><code>'2014-12-11'</code><code>);</code>

可以通过hive cli接口登录,查看表中数据:

<code>select</code> <code>count</code><code>(1)</code><code>from</code> <code>daily_user_info;</code>

我这里有241709545条记录作为测试数据。

hue登录页面

hue服务启动成功后,可以直接通过浏览器打开连接http://10.10.4.125:8000/,就可以登录。第一次打开,需要输入默认用户和口令,然后就可以登录进去,如下图所示:

Hue安装配置实践

首次登录,选择使用的用户即为hue管理员用户,权限很大,可以添加用户并管理用户及其用户组的操作权限。

hue用户首页

登录成功以后,进入hue web控制台首页,如下图所示:

Hue安装配置实践

登录成功后,首先会执行一些基本环境的配置检查工作,它与我们实际修改配置时都指定了哪些应用有关系。

hive查询编辑器页面

用户登录成功后,选择query editors下面的hive菜单项,如图所示:

Hue安装配置实践

在提交查询的时候,由于该查询执行时间较长,可以等待查询执行,最后结果显示在的现房的results标签页上,也可以在执行过程中查看hive后台执行情况。

job浏览器页面

通过job浏览器(job browser)页面http://10.10.4.125:8000/jobbrowser/,可以查看运行在hadoop集群上各种状态的job,包括succeeded、running、failed、killed这4种状态,如图所示:

Hue安装配置实践

如果想要看到job具体执行状态信息,需要正确配置并启动hadoop集群的jobhistoryserver和webappproxyserver服务,可以通过web页面看到相关数据,我们的示例,如图所示:

Hue安装配置实践

如果想看某个job对应的maptask或者reducetask执行情况,可以点击对应链接进去,和通过hadoop yarn的job web管理界面类似,监控起来非常方便。

用户管理和授权认证

以授权管理员用户登录成功后,可以通过点击右上角用户(我这里是yanjun),下拉列表中有“manage users”菜单项,在这里面可以创建新用户,并指定访问权限,如下图所示:

Hue安装配置实践

上面,我创建了几个用户,并指定用户所属的组(groups,支持组管理)。实际上,我们可以将不同的hue应用设置为不同的组,然后将新建的用户分配到该相关组,通过这种方式可以控制用户访问hue应用的权限。上面创建并分配权限的用户可以通过设置的用户名和口令登录hue web管理系统,与各种hadoop相关的应用(不仅仅限于此,如mysql、spark等)进行交互。

总结

通过上面的了解,以及安装配置过程所遇到的问题,做一个总结:

如果基于centos环境安装配置hue,可能相对复杂一点,不一定能够很容易的配置成功。我开始基于centos-5.11(final)进行配置,没有配置成功,可能是使用的hue的版本太高(branch-3.0和branch-3.7.1我都试过),或者可能是centos依赖的一些软件包无法安装等问题导致的。建议最好使用较新版本的centos,我这里使用的是centos-6.6 (final),hue使用的branch-3.7.1源码编译,并且python版本需要2.6+。

使用hue,我们可能会对用户管理及其权限分配也很感兴趣,所以数据存储,可以根据需要使用我们熟悉的其他关系数据库,如mysql等,并做好备份,以防使用hue应用的相关用户数据丢失,造成无法访问hadoop集群等问题。需要修改hue的配置文件,将默认存储方式sqlite3改成我们熟悉的关系数据库,目前支持mysql、postgresql,以及oracle。

如果有必要,可能结合hadoop集群底层的访问控制机制,如kerberos,或者hadoop sla,配合hue的用户管理和授权认证功能,更好地进行访问权限的约束和控制。

根据前面我们提到的hue特性,我们可以根据自己实际的应用场景,来选择不同的hue应用,通过这种插件式的配置来启动应用,通过hue与其交互,如oozie、pig、spark、hbase等等。

使用更低版本的hive,如0.12,可能在验证过程中会遇到问题,可以根据hive的版本来选择兼容版本的hue来安装配置。

由于本次安装配置实践,并没有使用cloudera发行的cdh软件包,如果使用cdh可能会更加顺利一些。