大家好,我是來自內蒙古的小哥,我現在在北京學習大數據,我想把學到的東西分享給大家,想和大家一起學習
hue框架介紹和安裝部署
hue全稱:HUE=Hadoop User Experience
他是cloudera公司提供的一個web框架,和其他大數據框架整合,提供可視化界面
hue的架構
1.hue UI:hue提供一個可視化的web界面
2.hue server:hue的服務器,對外提供一個web的訪問
3.hue db:存儲整合框架的信息
1、Hue的介紹
HUE=Hadoop User Experience
Hue是一個開源的Apache Hadoop UI系統,由Cloudera Desktop演化而來,最后Cloudera公司將其貢獻給Apache基金會的Hadoop社區,它是基於Python Web框架Django實現的。
通過使用Hue我們可以在瀏覽器端的Web控制台上與Hadoop集群進行交互來分析處理數據,例如操作HDFS上的數據,運行MapReduce Job,執行Hive的SQL語句,瀏覽HBase數據庫等等。
HUE鏈接
- Site: http://gethue.com/
- Github: https://github.com/cloudera/hue
- Reviews: https://review.cloudera.org
Hue的架構
核心功能
- SQL編輯器,支持Hive, Impala, MySQL, Oracle, PostgreSQL, SparkSQL, Solr SQL, Phoenix…
- 搜索引擎Solr的各種圖表
- Spark和Hadoop的友好界面支持
- 支持調度系統Apache Oozie,可進行workflow的編輯、查看
HUE提供的這些功能相比Hadoop生態各組件提供的界面更加友好,但是一些需要debug的場景可能還是需要使用原生系統才能更加深入的找到錯誤的原因。
HUE中查看Oozie workflow時,也可以很方便的看到整個workflow的DAG圖,不過在最新版本中已經將DAG圖去掉了,只能看到workflow中的action列表和他們之間的跳轉關系,想要看DAG圖的仍然可以使用oozie原生的界面系統查看。
1,訪問HDFS和文件瀏覽
2,通過web調試和開發hive以及數據結果展示
3,查詢solr和結果展示,報表生成
4,通過web調試和開發impala交互式SQL Query
5,spark調試和開發
7,oozie任務的開發,監控,和工作流協調調度
8,Hbase數據查詢和修改,數據展示
9,Hive的元數據(metastore)查詢
10,MapReduce任務進度查看,日志追蹤
11,創建和提交MapReduce,Streaming,Java job任務
12,Sqoop2的開發和調試
13,Zookeeper的瀏覽和編輯
14,數據庫(MySQL,PostGres,SQlite,Oracle)的查詢和展示
一句話總結:Hue是一個友好的界面集成框架,可以集成我們各種學習過的以及將要學習的框架,一個界面就可以做到查看以及執行所有的框架
2、Hue的安裝
Hue的安裝支持多種方式,包括rpm包的方式進行安裝,tar.gz包的方式進行安裝以及cloudera manager的方式來進行安裝等,我們這里使用tar.gz包的方式來進行安裝
第一步:下載Hue的壓縮包並上傳到linux解壓
Hue的壓縮包的下載地址:
http://archive.cloudera.com/cdh5/cdh/5/
我們這里使用的是CDH5.14.0這個對應的版本,具體下載地址為
http://archive.cloudera.com/cdh5/cdh/5/hue-3.9.0-cdh5.14.0.tar.gz
下載然后上傳到linux系統,然后進行解壓
cd /export/softwares/
tar -zxvf hue-3.9.0-cdh5.14.0.tar.gz -C ../servers/
第二步:編譯安裝啟動
2.1、linux系統安裝依賴包:
聯網安裝各種必須的依賴包
yum install ant asciidoc cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-plain gcc gcc-c++ krb5-devel libffi-devel libxml2-devel libxslt-devel make mysql mysql-devel openldap-devel python-devel sqlite-devel gmp-devel
2.2、開始配置Hue
cd /export/servers/hue-3.9.0-cdh5.14.0/desktop/conf
vim hue.ini
#通用配置
[desktop]
secret_key=jFE93j;2[290-eiw.KEiwN2s3['d;/.q[eIW^y#e=+Iei*@Mn<qW5o # 這里輸入密鑰為了保證唯一性可以輸入任何參數只要唯一即可
http_host=node03.hadoop.com
is_hue_4=true
time_zone=Asia/Shanghai
server_user=root
server_group=root
default_user=root
default_hdfs_superuser=root
#配置使用mysql作為hue的存儲數據庫,大概在hue.ini的587行左右
[[database]]
engine=mysql
host=node03.hadoop.com
port=3306
user=root
password=123456
name=hue
2.3、創建mysql數據庫
創建hue數據庫
create database hue default character set utf8 default collate utf8_general_ci;
注意:要為hue這個數據庫創建對應的用戶,並分配權限
grant all on hue.* to 'hue'@'%' identified by 'hue';
2.4、准備進行編譯
cd /export/servers/hue-3.9.0-cdh5.14.0
make apps
2.5、linux系統添加普通用戶hue
useradd hue
passwd hue
2.6、啟動hue進程
cd /export/servers/hue-3.9.0-cdh5.14.0/
build/env/bin/supervisor
2.7、頁面訪問
第一次訪問的時候,需要設置管理員用戶和密碼
我們這里的管理員的用戶名與密碼盡量保持與我們安裝hadoop的用戶名和密碼一致,
我們安裝hadoop的用戶名與密碼分別是root 123456
初次登錄使用root用戶,密碼為123456
進入之后發現我們的hue頁面報錯了,這個錯誤主要是因為hive的原因,因為我們的hue與hive集成的時候出錯了,所以我們需要配置我們的hue與hive進行集成,接下里就看看我們的hue與hive以及hadoop如何進行集成
3、hue與其他框架的集成
3.1、hue與hadoop的HDFS以及yarn集成
第一步:更改所有hadoop節點的core-site.xml配置
記得更改完core-site.xml之后一定要重啟hdfs與yarn集群
三台機器更改core-site.xml
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
第二步:更改所有hadoop節點的hdfs-site.xml
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
第三步:重啟hadoop集群
在node01機器上面執行以下命令
cd /export/servers/hadoop-2.6.0-cdh5.14.0
sbin/stop-dfs.sh
sbin/start-dfs.sh
sbin/stop-yarn.sh
sbin/start-yarn.sh
第四步:停止hue的服務,並繼續配置hue.ini
cd /export/servers/hue-3.9.0-cdh5.14.0/desktop/conf
vim hue.ini
配置我們的hue與hdfs集成
[[hdfs_clusters]]
[[[default]]]
fs_defaultfs=hdfs://node01.hadoop.com:8020
webhdfs_url=http://node01.hadoop.com:50070/webhdfs/v1
hadoop_hdfs_home=/export/servers/hadoop-2.6.0-cdh5.14.0
hadoop_bin=/export/servers/hadoop-2.6.0-cdh5.14.0/bin
hadoop_conf_dir=/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop
配置我們的hue與yarn集成
[[yarn_clusters]]
[[[default]]]
resourcemanager_host=node01
resourcemanager_port=8032
submit_to=True
resourcemanager_api_url=http://node01:8088
history_server_api_url=http://node01:19888
3.2、配置hue與hive集成
如果需要配置hue與hive的集成,我們需要啟動hive的metastore服務以及hiveserver2服務(impala需要hive的metastore服務,hue需要hvie的hiveserver2服務)
更改hue的配置hue.ini
修改hue.ini
[beeswax]
hive_server_host=node03.hadoop.com
hive_server_port=10000
hive_conf_dir=/export/servers/hive-1.1.0-cdh5.14.0/conf
server_conn_timeout=120
auth_username=root
auth_password=123456
[metastore]
#允許使用hive創建數據庫表等操作
enable_new_create_table=true
啟動hive的metastore服務
去node03機器上啟動hive的metastore以及hiveserver2服務
cd /export/servers/hive-1.1.0-cdh5.14.0
nohup bin/hive --service metastore &
nohup bin/hive --service hiveserver2 &
重新啟動hue,然后就可以通過瀏覽器頁面操作hive了
3.3、配置hue與impala的集成
停止hue的服務進程
修改hue.ini配置文件
[impala]
server_host=node03
server_port=21050
impala_conf_dir=/etc/impala/conf
3.4、配置hue與mysql的集成
找到databases 這個選項,將這個選項下面的mysql注釋給打開,然后配置mysql即可,大概在1547行
[[[mysql]]]
nice_name="My SQL DB"
engine=mysql
host=node03.hadoop.com
port=3306
user=root
password=123456
3.5、重新啟動hue的服務
cd /export/servers/hue-3.9.0-cdh5.14.0/
build/env/bin/supervisor
3.6、解決hive以及impala執行權限不足的問題
在我們hive當中執行任意的查詢,只要是需要跑MR的程序,就會報錯,發現權限不夠的異常,具體詳細信息如下:
INFO : Compiling command(queryId=root_20180625191616_d02efd23-2322-4f3d-9cb3-fc3a06ff4ce0): select count(1) from mystu
INFO : Semantic Analysis Completed
INFO : Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:_c0, type:bigint, comment:null)], properties:null)
INFO : Completed compiling command(queryId=root_20180625191616_d02efd23-2322-4f3d-9cb3-fc3a06ff4ce0); Time taken: 0.065 seconds
INFO : Concurrency mode is disabled, not creating a lock manager
INFO : Executing command(queryId=root_20180625191616_d02efd23-2322-4f3d-9cb3-fc3a06ff4ce0): select count(1) from mystu
INFO : Query ID = root_20180625191616_d02efd23-2322-4f3d-9cb3-fc3a06ff4ce0
INFO : Total jobs = 1
INFO : Launching Job 1 out of 1
INFO : Starting task [Stage-1:MAPRED] in serial mode
INFO : Number of reduce tasks determined at compile time: 1
INFO : In order to change the average load for a reducer (in bytes):
INFO : set hive.exec.reducers.bytes.per.reducer=<number>
INFO : In order to limit the maximum number of reducers:
INFO : set hive.exec.reducers.max=<number>
INFO : In order to set a constant number of reducers:
INFO : set mapreduce.job.reduces=<number>
ERROR : Job Submission failed with exception 'org.apache.hadoop.security.AccessControlException(Permission denied: user=admin, access=EXECUTE, inode="/tmp":root:supergroup:drwxrwx---
我們需要給hdfs上面的幾個目錄執行權限即可
hdfs dfs -chmod o+x /tmp
hdfs dfs -chmod o+x /tmp/hadoop-yarn
hdfs dfs -chmod o+x /tmp/hadoop-yarn/staging
或者我們可以這樣執行
hdfs dfs -chmod -R o+x /tmp
可以將/tmp目錄下所有的文件及文件夾都賦予權限
繼續執行hive的任務就不會報錯了