使用HUE來管理hadoop集羣

HUE

Hue是cdh專門的一套web管理器,它包括3個部分hue ui,hue server,hue db。hue提供所有的cdh組件的shell界面的接口。你可以在hue編寫mr,查看修改hdfs的文件,管理hive的元數據,運行Sqoop,編寫Oozie工作流等大量工作。

HUE官方地址http://gethue.com/

默認基於輕量級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


這裏我用的hue docker image. 就省去了安裝,
環境:centos7 3臺, 已經安裝了ambari的hadoop集羣

docker拉取hue

docker pull gethue/hue:latest

檢測下服務器沒有被佔用8888端口

netstat -anp | grep 8888

運行hue


運行image

docker run -tid --name hue8888 --hostname cnode1.domain.org \
 -p 8888:8888 -v /usr/hdp:/usr/hdp -v /etc/hadoop:/etc/hadoop \
 -v /etc/hive:/etc/hive -v /etc/hbase:/etc/hbase \
 -v /docker-config/pseudo-distributed.ini /hue/desktop/conf/pseudo-distributed.ini \
  c-docker.domain.org:5000/hue:latest \
   ./build/env/bin/hue runserver_plus 0.0.0.0:8888

解釋下上面的命令,

    -i 標誌保證容器中STDIN是開啓的
    -t 表示告訴docker要爲創建的容器分配一個僞tty終端
    -d 會把容器放到後臺運行
    --name alias_name 可以爲這個docker指定一個別名, 要放前面, e.g.:docker run -tid --name alias_name images:version /bin/bash
    --hostname 指定hostname, 類似--ip
    -p docker 容器的端口:外部主機的端口, 作端口映射, 來公開在dockerfile裏面定義的expose的所有端口.
    -v 掛在目錄, 外部主機目錄:容器內部目錄, 這裏我掛在了 ambari的 hadoop配置文件/etc/hadoop, hive配置路徑/etc/hive, hbase配置路徑/etc/hbase, 以及用了本地的hue配置文件去替代docker裏面的hue配置文件.
    最後是要啓動容器後要運行的命令 ./build/env/bin/hue runserver_plus 0.0.0.0:8888
    cnode1.domain.org 是我的一臺服務器的域名. 拿來跑hue的
    c-docker.domain.org 是我的私有docker倉庫. 注意這裏需要在docker daemon裏面加上 --insecure-registry c-docker.domain.org:5000來允許不安全的授權拉取, centos7具體修改docker insecure-registry如下
vim /etc/systemd/system/docker.service
在[Service]下增加和修改如下內容
EnvironmentFile=-/etc/sysconfig/docker
ExecStart=/usr/bin/docker daemon -H fd:// $OPTIONS


vim /etc/sysconfig/docker
添加
    OPTIONS="-D --selinux-enabled --insecure-registry c-docker.domain.org:5000"
重啓docker和daemon
systemctl restart docker
systemctl daemon-reload

配置hue


hue-docker的相關配置文件在/hue/desktop/conf/pseudo-distributed.ini
修改相關參數, scp傳出來後修改如下參數,保存到主機cnode1上/docker-config/pseudo-distributed.ini

http_port=8888
fs_defaultfs=hdfs://cnode1.domain.org:8020
logical_name=cnode1
webhdfs_url=http://cnode1.domain.org:50070/webhdfs/v1
hadoop_conf_dir=/etc/hadoop/conf


hive_server_host=cnode1.domain.org
hive_server_port=10000
hive_conf_dir=/etc/hive


hbase_clusters=(cluster1|cnode2.domain.org:9090)
hbase_conf_dir=/etc/hbase

注意上面的地址 hbase_clusters 的cluster1只是hue裏面顯示的, 可以隨便命名, cnode2.domain.org:9090 是hbase thrift 1的地址, 在ambari的主機裏面用如下命令啓動起來

/usr/hdp/2.4.0.0-169/hbase/bin/hbase-daemon.sh start thrift

使用


第一次進入需要配置賬戶和密碼

hue-hbase)

使用hue來連接mysql


同樣是編輯pseudo-distributed.ini,
找到[librdbms]這段後, 按照自己需要修改如下的內容, 注意要取消[[[mysql]]]的註釋

    [[[mysql]]]
      nice_name="Hyve-ENG UAT MySQL"
      name=dbname_test

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

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

      # Username to authenticate with when connecting to the database.
      user=tom

      # Password matching the username to authenticate with when
      # connecting to the database.
      password=db12@34#56%78

保存後, 重啓docker container

docker restart hue8888

接下來就可以在http://cnode1.domain.org:8888/rdbms/ 來進行對應的mysql查詢.

hue connect to mysql

多個db支持, 需要複製完整的 對應的db段, 比如要支持postsql, 或者新的mysql db庫, 需要複製
如下, 在options裏面可以定製相關編碼等:

[[[mysql3]]]
nice_name="UAT MySQL"
name=mysqldbname
engine=mysql
host=192.168.80.116
port=3306
user=tommy
password=p12391kf1#jkew
[[[mysql2]]]
nice_name="UAT MySQL"
name=mysqldbname2
engine=mysql
host=192.168.80.116
port=3306
user=tommy
password=p12391kf1#jkew
options={ "init_command":"SET NAMES 'utf8'"}

options裏面init_command支持一些初始化鏈接行爲, 比如設置編碼, 設置連接超時, 設置select的limit數量,
具體可以參考http://dev.mysql.com/doc/refman/5.6/en/mysql-tips.html#safe-updates 和django的database部分, 比如下面

 "init_command": 'set storage_engine=INNODB;    \
                 SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED', }

設置默認查詢數量,

options={"init_command": "SET sql_select_limit=100"}

多組init_command:

options={"init_command": "SET sql_select_limit=100; SET names 'utf8'; SET sql_safe_updates=1"}

參考


  1. HUE offiical site
  2. 高可用Hadoop平臺-Hue In Hadoop
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章