ubuntu上基于HUE 4.0的环境构建和使用


先看下HUE的架构,如图

ubuntu上基于HUE 4.0的环境构建和使用

ubuntu上基于HUE 4.0的环境构建和使用

1.  Hue是什么? 


Hue是一个可快速开发和调试Hadoop生态系统各种应用的一个基于浏览器的图形化用户接口。 


2.  Hue能干什么? 


  • 访问HDFS和文件浏览 
  • 通过web调试和开发hive以及数据结果展示 
  • 查询solr和结果展示,报表生成 
  • 通过web调试和开发impala交互式SQL Query 
  • spark调试和开发 
  • Pig开发和调试 
  • oozie任务的开发,监控,和工作流协调调度 
  • Hbase数据查询和修改,数据展示 
  • Hive的元数据(metastore)查询 
  • MapReduce任务进度查看,日志追踪 
  • 创建和提交MapReduce,Streaming,Java job任务 
  • Sqoop2的开发和调试 
  • Zookeeper的浏览和编辑 
  • 数据库(MySQL,PostGres,SQlite,Oracle)的查询和展示 


3.  Hue怎么用或者什么时候应该用? 


如果你们公司用的是CDH的hadoop,那么很幸运,Hue也是出自CDH公司,自家的东西用起来当然很爽。 
如果你们公司用的是Apache Hadoop或者是HDP的hadoop,那么也没事,Hue是开源的,而且支持任何版本的hadoop。 

关于什么时候用,这纯属一个锦上添花的功能,你完全可以不用hue,因为各种开源项目都有自己的使用方式和开发接口,hue只不过是统一了各个项目的开发方式在一个接口里而已,这样比较方便而已,不用你一会准备使用hive,就开一个hive的cli终端,一会用pig,你就得开一个pig的grunt,或者你又想查Hbase,又得需要开一个Hbase的shell终端。如果你们使用hadoop生态系统的组件很多的情况下,使用hue还是比较方便的,另外一个好处就是hue提供了一个web的界面来开发和调试任务,不用我们再频繁登陆Linux来操作了。 

你可以在任何时候,只要能上网,就可以通过hue来开发和调试数据,不用再装Linux的客户端来远程登陆操作了,这也是B/S架构的好处。 


4.  如何下载,安装和编译Hue?

http://gethue.com/downloads/releases/4.0.1/hue-4.0.1.tgz 下载较新的tgz包,自己编译和安装。

目前最新的HUE版本是4.1,考虑到最新版本与集群中已安装的hadoop组件的兼容性,选择了3个月前的次新的4.0版本。同时,本地先前已安装和配置了较多hadoop组件,准备工作简单很多,否则还有很多依赖包、环境准备等工作。

tar zxvf hue-4.0.1.tgz 

sudo apt-get install libgmp-dev    //编译时依赖gmp.h,没有此包会报"fatal error: gmp.h: No such file or directory"

make apps  // 几分钟后即编译完成;make install 可选,可以不执行


理想情况下,这时在HUE目录下执行  ./build/env/bin/hue runserver 启动hue server后,就能在浏览器中通过 http://localhost:8000看到HUE的登录界面了。

但这只是理想情况,大多数情况下,尤其已安装过很多hadoop组件,且port号大量使用的情况下,需要配置后才能使用,否则会报不同问题,如启动HUE server时报8000端口被占用即是一例:8000被先前安装的storm占用了。

Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Error: That port is already in use.


5. 配置

HUE配置文件在desktop/conf/hue.ini中,整个文件近2千行;此配置文件根据整合的不同软件,分成了20+个不同片段,有些配置中还有子段,简单罗列如下:

 desktop, notebook, hadoop, Beeswax, Metastore,  impala,  spark, Oozie,, Filebrowser, Pig,  sqoop2, proxy , Hbase Browser,  Solr search/API/Indexer,  Job designer/Browser,  Sentry/Security app,  Zookeeper,  liboozie,  Saml,  openid, Oauth, metadata. 


5.1 desktop 配置

这里是HUE相关的配置,通常需要修改hue http server/port, user/group等相关配置项即可。

如:

  http_host=master    // 修改为实际的主机名,本例中为master
  http_port=8888       //  为避免端口冲突,改为非8000的

  is_hue_4=true

  server_user=hadoop
  server_group=hadoop
  default_user=hadoop
  default_hdfs_superuser=hadoop      //  # This should be the hadoop cluster admin

desktop配置完成后,命令行中执行 ./build/env/bin/hue runserver 启动hue server后,就能在浏览器中通过 http://master:8888,就能看到登录界面,输入hadoop/hadoop后,即可进入HUE主界面,因整合的软件还没配置,一些入口和功能还不work. 

ubuntu上基于HUE 4.0的环境构建和使用  ubuntu上基于HUE 4.0的环境构建和使用


5.2 Hadoop配置

HUE可以通过两种方式访问HDFS中的数据

WebHDFS: 提高高速的数据传输,客户端直接和DataNode交互

HttpFS: 一个代理服务,方便与集群外部的系统集成

对于WebHDFS,除了hue.ini,还需要修改hadoop中hdfs-site.xml, core-site.xml 

hui.ini中:

 fs_defaultfs=hdfs://master:9000

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

hadoop_conf_dir=$HADOOP_HOME/etc/hadoop

hdfs-site.xml中:   增加 

<property>  
<name>dfs.webhdfs.enabled</name>  
<value>true</value>  
</property>


core-site.xml中增加: HUE相关的部分,针对不同的用户和用户组

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


HttpFS模式中,hadoop的httpfs-site.xml中增加 

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

core-site.xml 基本同webhdfs中的设置。


最后,cp HUE目录下的desktop/libs/hadoop/java-lib/hue-plugins-4.0.0-SNAPSHOT.jar 至 $HADOOP_HOME/share/hadoop/mapreduce/lib下。

这步完成后,即可在HUE中查看HDFS相关的内容,如file browser, job browser, etc.

执行MR任务的话,还需要设置MR2相关的配置

resourcemanager_host=master

resourcemanager_port=8032

resourcemanager_api_url=http://master:8088

proxy_api_url=http://master:8088

history_server_api_url=http://master:19888

spark_history_server_url=http://master:18088


5.3.   Beeswax & Hive

hive依赖metastore, hiveserver2,所以这里设置beeswax/hive时要注意相关设置要一致。

如本例中的HiveServer2没在master上跑,而是在slave01上,所以设置

hive_server_host=slave01

hive_server_port=10000     // 对应 hive/conf/hive-site.xml 中 hive.server2.thrift.port , 配置中曾混用了hive.server2.thrift.http.port导致一直报错连不上slave01:10001端口

hive_conf_dir=/home/hadoop/bigdata/hive/conf


先前集群中已启动过metastore, hiveserver2(Hive Thrift server2),如果没有,在这里启动后,即可在HUE中通过hive查看先前的数据信息。

启动metastore, hiveserver2的方法, nohup hive --service metastore &   &&  nohup hive --service hiveserver2  &


5.4  Spark 

spark也部署在master,主要设置了

livy_server_host=master

livy_server_port=8998


5.5  FileBrowser

通过web查看和操作HDFS中的文件,主要设置了如下配置项:

archive_upload_tempdir=/tmp

show_download_button=true

show_upload_button=true

enable_extract_uploaded_archive=true

浏览如图: 点击"View file location"后的界面中有upload按钮。

ubuntu上基于HUE 4.0的环境构建和使用


5.6  Hbase

hbase_clusters=(HbaseCluster|master:9090)    // HbaseCluster即在下面界面中点击Hbase图标(4个小方块)时下面显示的那个集群名。

hbase_conf_dir=/home/hadoop/bigdata/hbase/conf

因为已安装的hbase (1.2.6) 中包含的thrift2与HUE不兼容,点击HbaseCluser时右上角报错:Api Error: Invalid method name: 'getTableName'.   参考https://*.com/questions/24376658/thrift-api-java-client-connect-with-hbase 

启动hbase thrift接口的方法: hbase-deamon.sh start thrift2
thrift默认的监听端口是9090,可以用netstat -nl | grep 9090看看该端口是否有服务。

ubuntu上基于HUE 4.0的环境构建和使用


5.7  ZooKeeper

主要在libzookeeper, zookeeper 片段中配置所部署zookeeper的hostname:port. 

ensemble=master:2181,ndh-slave01:2181,slave02:2181


5.8 mysql等数据库设置

librdbms片段中以子片段的形式支持多种RDBS, sqlite, mysql, psql, oracle, ...

以mysql为例: 如果有多个mysql DB,分别增加一个mysql 片段即可,支持DB数量较多时,这里的list也将很长。

    ## [[[mysql]]]
      # Name to show in the UI.
      nice_name="My SQL DB"   // nicely name 

      ## name=mysqldb    /// db name 

      # Database backend to use. This can be:
      # 1. mysql      # 2. postgresql      # 3. oracle
      engine=mysql

      host=master   # IP or hostname of the database to connect to.


      # Port the database server is listening to. Defaults are:
      # 1. MySQL: 3306     # 2. PostgreSQL: 5432      # 3. Oracle Express Edition: 1521
      port=3306

       user=root   //     # Username to authenticate with when connecting to the database.
       password=666666   /// # Password matching the username to authenticate with when connecting to the database.


5.9  其它

因集群中暂没安装oozie, pig, impala, solr, 等,所以相应的片段没作修改和配置,HUE界面中对应的选项也暂没法使用。

在HUE管理界面中有一个工具项 check configuration, 很方便,可以检查配置项中存在的问题,如本例中没安装的软件,图中有提示,已安装的hive、hbase等存在访问问题,图中也给了对应提示。其实,这里对应有4个步骤,可以把它作为一个使用向导。

入口: HUE界面右上角 用户头像点开后,Check Configuration,如图:


ubuntu上基于HUE 4.0的环境构建和使用


6.  小结

至此,HUE的安装和基本配置已完成,在先前已安装和配置过hadoop众组件的基础上,整个过程相对比较简单,HUE界面操作也比较直接方便。后续将把未安装的oozie, pig, impala, solr等进行部署和整合使用。


7. 附录:

http://cloudera.github.io/hue/docs-4.0.0/manual.html#_hue_configuration_for_hadoop 

http://gethue.com/the-web-ui-for-hbase-hbase-browser/

http://gethue.com/how-to-build-hue-on-ubuntu-14-04-trusty/