1. 程式人生 > >HUE—大資料web管理器

HUE—大資料web管理器

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
  • 1

檢測下伺服器沒有被佔用8888埠

netstat -anp | grep 8888
  • 1

執行hue


執行image

 
  1. docker run -tid --name hue8888 --hostname cnode1.domain.org \

  2. -p 8888:8888 -v /usr/hdp:/usr/hdp -v /etc/hadoop:/etc/hadoop \

  3. -v /etc/hive:/etc/hive -v /etc/hbase:/etc/hbase \

  4. -v /docker-config/pseudo-distributed.ini /hue/desktop/conf/pseudo-distributed.ini \

  5. c-docker.domain.org:5000/hue:latest \

  6. ./build/env/bin/hue runserver_plus 0.0.0.0:8888

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

解釋下上面的命令,

 
  1. -i 標誌保證容器中STDIN是開啟的

  2. -t 表示告訴docker要為建立的容器分配一個偽tty終端

  3. -d 會把容器放到後臺執行

  4. --name alias_name 可以為這個docker指定一個別名, 要放前面, e.g.:docker run -tid --name alias_name images:version /bin/bash

  5. --hostname 指定hostname, 類似--ip

  6. -p docker 容器的埠:外部主機的埠, 作埠對映, 來公開在dockerfile裡面定義的expose的所有埠.

  7. -v 掛在目錄, 外部主機目錄:容器內部目錄, 這裡我掛在了 ambari的 hadoop配置檔案/etc/hadoop, hive配置路徑/etc/hive, hbase配置路徑/etc/hbase, 以及用了本地的hue配置檔案去替代docker裡面的hue配置檔案.

  8. 最後是要啟動容器後要執行的命令 ./build/env/bin/hue runserver_plus 0.0.0.0:8888

  9. cnode1.domain.org 是我的一臺伺服器的域名. 拿來跑hue的

  10. c-docker.domain.org 是我的私有docker倉庫. 注意這裡需要在docker daemon裡面加上 --insecure-registry c-docker.domain.org:5000來允許不安全的授權拉取, centos7具體修改docker insecure-registry如下

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
 
  1. vim /etc/systemd/system/docker.service

  2. 在[Service]下增加和修改如下內容

  3. EnvironmentFile=-/etc/sysconfig/docker

  4. ExecStart=/usr/bin/docker daemon -H fd:// $OPTIONS

  5.  
  6.  
  7. vim /etc/sysconfig/docker

  8. 新增

  9. OPTIONS="-D --selinux-enabled --insecure-registry c-docker.domain.org:5000"

  10. 重啟docker和daemon

  11. systemctl restart docker

  12. systemctl daemon-reload

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

配置hue


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

 
  1. http_port=8888

  2. fs_defaultfs=hdfs://cnode1.domain.org:8020

  3. logical_name=cnode1

  4. webhdfs_url=http://cnode1.domain.org:50070/webhdfs/v1

  5. hadoop_conf_dir=/etc/hadoop/conf

  6.  
  7.  
  8. hive_server_host=cnode1.domain.org

  9. hive_server_port=10000

  10. hive_conf_dir=/etc/hive

  11.  
  12.  
  13. hbase_clusters=(cluster1|cnode2.domain.org:9090)

  14. hbase_conf_dir=/etc/hbase

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

注意上面的地址 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
  • 1

使用


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

hue-hbase)

使用hue來連線mysql


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

 
  1. [[[mysql]]]

  2. nice_name="Hyve-ENG UAT MySQL"

  3. name=dbname_test

  4.  
  5. # Database backend to use. This can be:

  6. # 1. mysql

  7. # 2. postgresql

  8. # 3. oracle

  9. engine=mysql

  10. host=192.168.85.100

  11.  
  12. # Port the database server is listening to. Defaults are:

  13. # 1. MySQL: 3306

  14. # 2. PostgreSQL: 5432

  15. # 3. Oracle Express Edition: 1521

  16. port=3306

  17.  
  18. # Username to authenticate with when connecting to the database.

  19. user=tom

  20.  
  21. # Password matching the username to authenticate with when

  22. # connecting to the database.

  23. password=db12@34#56%78

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

儲存後, 重啟docker container

docker restart hue8888
  • 1

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

hue connect to mysql

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

 
  1. [[[mysql3]]]

  2. nice_name="UAT MySQL"

  3. name=mysqldbname

  4. engine=mysql

  5. host=192.168.80.116

  6. port=3306

  7. user=tommy

  8. password=p12391kf1#jkew

  9. [[[mysql2]]]

  10. nice_name="UAT MySQL"

  11. name=mysqldbname2

  12. engine=mysql

  13. host=192.168.80.116

  14. port=3306

  15. user=tommy

  16. password=p12391kf1#jkew

  17. options={ "init_command":"SET NAMES 'utf8'"}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

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

 
  1. "init_command": 'set storage_engine=INNODB; \

  2. SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED', }

  • 1
  • 2

設定預設查詢數量,

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

多組init_command:

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

參考


  1. HUE offiical site
  2. 高可用Hadoop平臺-Hue