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/javaJob 支持Sqoop 2編輯器和儀表板(Dashboard) 支持ZooKeeper瀏覽器和編輯器 支持MySql、PostGresql、Sqlite和Oracle數據庫查詢編輯器
這里我用的hue Docker image. 就省去了安裝, 環境:centos7 3臺, 已經安裝了ambari的Hadoop集群
docker拉取hue
docker pull gethue/hue:latest11檢測下服務器沒有被占用8888端口
netstat -anp | grep 888811運行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:8888123456123456解釋下上面的命令,
-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如下12345678910111234567891011vim /etc/systemd/system/docker.service在[Service]下增加和修改如下內容EnvironmentFile=-/etc/sysconfig/dockerExecStart=/usr/bin/docker daemon -H fd:// $OPTIONSvim /etc/sysconfig/docker添加 OPTIONS="-D --selinux-enabled --insecure-registry c-docker.domain.org:5000"重啟docker和daemonsystemctl restart dockersystemctl daemon-reload123456789101112123456789101112hue-docker的相關配置文件在/hue/desktop/conf/pseudo-distributed.ini 修改相關參數, scp傳出來后修改如下參數,保存到主機cnode1上/docker-config/pseudo-distributed.ini
http_port=8888fs_defaultfs=hdfs://cnode1.domain.org:8020logical_name=cnode1webhdfs_url=http://cnode1.domain.org:50070/webhdfs/v1hadoop_conf_dir=/etc/hadoop/confhive_server_host=cnode1.domain.orghive_server_port=10000hive_conf_dir=/etc/hivehbase_clusters=(cluster1|cnode2.domain.org:9090)hbase_conf_dir=/etc/hbase12345678910111213141234567891011121314注意上面的地址 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 thrift11第一次進入需要配置賬戶和密碼
)
同樣是編輯pseudo-distributed.ini, 找到[librdbms]這段后, 按照自己需要修改如下的內容, 注意要取消[[[mysql]]]的注釋
保存后, 重啟docker Container
docker restart hue888811接下來就可以在http://cnode1.domain.org:8888/rdbms/ 來進行對應的mysql查詢.

多個db支持, 需要復制完整的 對應的db段, 比如要支持postsql, 或者新的mysql db庫, 需要復制 如下, 在options里面可以定制相關編碼等:
[[[mysql3]]]nice_name="UAT MySQL"name=mysqldbnameengine=mysqlhost=192.168.80.116port=3306user=tommypassword=p12391kf1#jkew[[[mysql2]]]nice_name="UAT MySQL"name=mysqldbname2engine=mysqlhost=192.168.80.116port=3306user=tommypassword=p12391kf1#jkewoptions={ "init_command":"SET NAMES 'utf8'"}12345678910111213141516171234567891011121314151617options里面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', }1212設置默認查詢數量,
options={"init_command": "SET sql_select_limit=100"}11多組init_command:
options={"init_command": "SET sql_select_limit=100; SET names 'utf8'; SET sql_safe_updates=1"}1新聞熱點
疑難解答