目錄
四、數據可視化與 Hue 簡介
1. 數據可視化簡介
(1)數據可視化的重要性
(2)數據可視化的用途
(3)實施數據可視化需要考慮的問題
(4)幾種主要的數據可視化工具
2. Hue 簡介
(1)Hue 是什么
(2)Hue 功能快速預覽
(3)配置元數據存儲
四、數據可視化與 Hue 簡介
1. 數據可視化簡介
? ? ? ? 數據可視化在維基百科上是這樣定義的:指一種表示數據或信息的技術,它將數據或信息編碼為包含在圖形里的可見對象(如點、線、條等),目的是將信息更加清晰有效地傳達給用戶,是數據分析或數據科學的關鍵技術之一。簡單地說,數據可視化就是以圖形化方式表示數據。決策者可以通過圖形直觀地看到數據分析結果,從而更容易理解業務變化趨勢或發現新的業務模式。使用可視化工具,可以在圖形或圖表上進行下鉆,以進一步獲得更細節的信息,交互式地觀察數據改變和處理過程。
(1)數據可視化的重要性
? ? ? ? 從人類大腦處理信息的方式看,使用圖形圖表觀察大量復雜數據要比查看電子表格或報表更容易理解。數據可視化就是這樣一種以最為普通的方式,向人快速、簡單傳達信息的技術。通過數據可視化能夠有效地利用數據,幫助人們給諸如以下問題快速提供答案:
- 需要注意的問題或改進的方向。
- 影響客戶行為的因素。
- 確定商品放置的位置。
- 銷量預測。
? ? ? ? 通過增加數據可視化的使用,能夠使企業更快地發現所要追求的價值。創建更多的信息圖表,讓人們更快地使用更多的資源,獲得更多的信息。同時使人們意識到已經知道很多信息,而這些信息先前就應該是很明顯的,從而增加了人們能夠提出更好問題的可能。它創建了似乎沒有任何聯系的數據點之間的連接,讓人們能夠分辨出有用的和沒用的數據,這樣,就能最大限度的提高生產力,讓信息的價值最大化。
(2)數據可視化的用途
- 快速理解信息
? ? ? ? 通過使用業務信息的圖形化表示,企業可以以一種清晰的、與業務聯系更加緊密的方式查看大量的數據,根據這些信息制定決策。并且由于相對于電子表格的數據分析,圖形化格式的數據分析要更快,因此企業可以更加及時地發現問題、解決問題。
- 標識關系和模式
? ? ? ? 即使面對大量錯綜復雜的數據,圖形化表示也使數據變得可以理解。企業能夠識別高度關聯、互相影響的多個因素。這些關系有些是顯而易見的,有些則不易發現。識別這些關系可以幫助組織聚焦于最有可能影響其重要目標的領域。
- 確定新興趨勢
? ? ? ? 使用數據可視化,可以輔助企業發現業務或市場趨勢,準確定位超越競爭對手的自身優勢,最終影響其經營效益。企業更容易發現影響產品銷量和客戶購買行為的異常數據,并把小問題消滅于萌芽之中。
- 方便溝通交流
? ? ? ? 一旦從可視化分析中對業務有了更新的深入了解,下一步就需要在組織間溝通這些情況。使用圖表、圖形或其他有效的數據可視化表示在溝通中是非常重要的,因為這種表示更能吸引人的注意,并能快速獲得彼此的信息。
(3)實施數據可視化需要考慮的問題
? ? ? ? 實施一個新技術,需要采取一些步驟。除了扎實地掌握數據外,還需要理解目標、需求和受眾。在組織準備實施數據可視化技術時,先要做好以下功課:
- 明確試圖可視化的數據,包括數據量和基數(一列數據中不同值的個數)。
- 確定需要可視化和傳達的信息種類。
- 了解數據的受眾,并領會他們如何處理可視化信息。
- 使用一種對受眾來說最優、最簡的可視化方案傳達信息。
? ? ? ? 在關于數據的屬性和作為信息消費者的受眾的相關問題有了答案后,就需要準備與大量的數據打交道了。大數據給可視化帶來新的挑戰,4V(Volume、Velocity、Variety、Veracity)是必須要考慮的問題,而且數據產生的速度經常會比其被管理和分析的速度快。需要可視化的列的基數也是應該重點考慮的因素,高基數意味著該列有大量不同值(如銀行賬號等),而低基數則說明該列有大量重復值(如性別列)。
(4)幾種主要的數據可視化工具
- Tableau Desktop(主流桌面 BI)
- Business Object(SAP 收購的 BI 公司)
- Hyperion(Oracle 收購的 BI 公司)
- Cognos(IBM 收購的 BI 公司)
- Pentaho Report(最流行的開源 BI)
2. Hue 簡介
? ? ? ? 前面討論了數據可視化,那么在 Hadoop 生態圈中,有哪些圖形化的用戶界面可以做數據可視化呢?這里就簡單介紹一個常用的 Hadoop 組件 —— Hue。
(1)Hue 是什么
? ? ? ? Hue 是 Hadoop User Experience 的縮寫,是一個開源的 Apache Hadoop UI 系統,最早是由 Cloudera Desktop 演化而來,由 Cloudera 貢獻給開源社區,它是基于 Python Web 框架 Django 實現的。
? ? ? ? 我使用的 CDH 5.7.0 自帶的 Hue 是 3.9.0 版本。通過使用 CDH 的 Hue Web 應用,可以與 Hadoop 集群進行交互。在 Hue 中可以瀏覽 HDFS 和作業,管理 Hive 元數據,運行 Hive、Impala 查詢或 Pig 腳本,瀏覽 HBase,用 Sqoop 導出數據,提交 MapReduce 程序,用 Solr 建立定制的搜索引擎,調度重復執行的 Oozie 工作流等。
? ? ? ? Hue 應用運行在 Web 瀏覽器中,不需要安裝客戶端。其體系結構如下圖所示。
? ? ? ? Hue Server 是 Web 應用的容器,位于 CDH 和瀏覽器之間,是所有 Hue Web 應用的宿主,負責與 CDH 組件通信。
(2)Hue 功能快速預覽
? ? ? ? 可以從 CDH Manager 中的連接登錄 Hue。點擊集群中的 Hue 服務,如下圖所示。
? ? ? ? 在 Hue 頁面點擊 Hue Web UI 鏈接,如下圖所示。
? ? ? ? 這時會打開登錄頁面,要求輸入用戶名/密碼,首次登錄輸入任意字符串,會自動作為管理員的用戶名和密碼,如下圖所示。
? ? ? ? 登錄后 Hue 會進行配置檢查、安裝示例、創建或導入用戶等向導步驟,然后進入 Hue 主頁。我的 Hue 主頁如下圖所示。
? ? ? ? 圖中最上面是導航條,11 個圖標都有超鏈接。Hue 圖標是“關于 Hue”鏈接,點擊進入剛登錄后的向導步驟頁面。第二個是主頁圖標,點擊進入“我的文檔”頁面。后面依次為“查詢數據”、“管理數據”、“使用 Oozie 的計劃”、“管理HDFS”、“管理作業”、“管理”、“文檔”、“演示教程”和“注銷”子菜單或超鏈接。“查詢數據”子菜單包括 Hive、Impala、DB 查詢、Pig 和作業設計器。“管理數據”子菜單包括 Metastore 表和 Sqoop 傳輸。“使用 Oozie 的計劃”包括 WorkFlow、Coordinator、Bundles三種 Oozie 工作流的儀表板和編輯器。“管理”包括編輯配置文件和管理用戶子菜單。
? ? ? ? 這些是 Hue 主要的功能,每個主功能下面的詳細頁面這里就不展示了,都是頁面操作,感興趣的點擊試一下便知。在這些功能特性集合中,“查詢數據”與數據可視化關系最為密切,也是最常使用的功能。在后面實例部分,將會看到與查詢相關的圖形化表示,還會演示其他一些Hue的常用功能。
(3)配置元數據存儲
? ? ? ? 像 Hadoop 的其他組件一樣,Hue 也有很多配置選項,每個選項的具體含義和配置說明可以從 CDH Manager 的 Hue 配置頁或相關文檔中找到。在這需要說明一下的是 Hue 自身的元數據存儲配置。
? ? ? ? Hue 服務器需要一個 SQL 數據庫存儲諸如用戶賬號信息、提交的作業、Hive 查詢等少量數據。CDH 5.7.0 缺省安裝時,Hue 的元數據存儲在一個嵌入式數據庫 SQLite 中,但這種配置并不適用于生產環境。Hue 也支持 MariaDB、MySQL、PostgreSQL、Oracle 等幾種外部數據庫。Cloudera 強烈推薦在 Hue 多用戶環境,特別是生產環境中使用外部數據庫。CDH 5 所支持的數據庫完整列表鏈接在http://www.cloudera.com/documentation/enterprise/latest/topics/cdh_ig_req_supported_versions.html#topic_2。
? ? ? ? 下面說明使用 CDH Manager 配置 Hue 服務器在 MySQL 中存儲元數據的詳細步驟(注意:Cloudera 推薦使用 InnoDB 作為 Hue 的 MySQL 存儲引擎。CDH 5 的 Hue 需要 InnoDB)。
? ? ? ? 配置前需求:
- 安裝所用操作系統需要的所有類庫。如 CentOS/RHEL 需要的類庫如下:
? ? ? ? ? ? Oracle's JDK (read more here)
? ? ? ? ? ? ant
? ? ? ? ? ? asciidoc
? ? ? ? ? ? cyrus-sasl-devel
? ? ? ? ? ? cyrus-sasl-gssapi
? ? ? ? ? ??cyrus-sasl-plain
? ? ? ? ? ??gcc
? ? ? ? ? ??gcc-c++
? ? ? ? ? ??krb5-devel
? ? ? ? ? ??libffi-devel
? ? ? ? ? ??libtidy (for unit tests only)
? ? ? ? ? ??libxml2-devel
? ? ? ? ? ??libxslt-devel
? ? ? ? ? ??make
? ? ? ? ? ??mvn (from apache-maven package or maven3 tarball)
? ? ? ? ? ??mysql
? ? ? ? ? ??mysql-devel
? ? ? ? ? ??openldap-devel
? ? ? ? ? ??python-devel
? ? ? ? ? ??sqlite-devel
? ? ? ? ? ??openssl-devel (for version 7+)
? ? ? ? ? ??gmp-devel
? ? ? ? 各操作系統需要的類庫完整列表鏈接在https://github.com/cloudera/hue#development-prerequisites。
- 確認 Hue Server 運行在 Python 2.6 或以上版本上。
- 安裝了 MySQL 數據庫(MySQL 數據庫的安裝配置詳見Install and Configure MySQL for Cloudera Software | 6.3.x | Cloudera Documentation)。
- 在 Cloudera Manager 管理控制臺中,從服務列表中點擊“Hue”進入Hue服務狀態頁面。
- 選擇“操作” > “停止”,停止 Hue 服務,如下圖所示。
- 選擇“操作” > “轉儲數據庫”,將元數據庫轉儲為一個 json 文件中。
- 注意在“轉儲數據庫”命令執行窗口中,確認轉儲文件所在的主機,如下圖所示。
- 在該主機上打開一個終端窗口,編輯 /tmp/hue_database_dump.json 文件,去掉文件中 useradmin.userprofile 段中的所有 JSON 對象,例如:
{ "pk": 14, "model": "useradmin.userprofile", "fields": { "creation_method": "EXTERNAL", "user": 14, "home_directory": "/user/tuser2" } },
- 在 /etc/my.cnf 文件中設置 MySQL 嚴格模式。
[mysqld] sql_mode=STRICT_ALL_TABLES
- 在 MySQL 中建立一個新的數據庫并授予一個Hue用戶該庫的管理員權限,例如:
mysql> create database hue; Query OK, 1 row affected (0.01 sec) mysql> grant all on hue.* to 'hue'@'localhost' identified by 'secretpassword'; Query OK, 0 rows affected (0.00 sec)
- 在 Cloudera Manager 管理控制臺,點擊“Hue”服務。
- 點擊“配置”標簽。
- “類別”選擇“數據庫”。
- 指定 Hue 數據庫的類型、主機名、端口、用戶名、密碼和數據庫名。例如下圖所示。
- 在新數據庫還原 Hue 的元數據。
? ? ? ? ? ? a. 選擇“操作” > “同步數據庫”。
? ? ? ? ? ? b. 確認外鍵,如下圖所示。
$ mysql -uhue -psecretpassword
mysql > SHOW CREATE TABLE auth_permission\G
mysql > SHOW CREATE TABLE desktop_document\G
mysql > SHOW CREATE TABLE django_admin_log\G
? ? ? ? ? ? c. 刪除上一步查出的外鍵。
mysql > ALTER TABLE auth_permission DROP FOREIGN KEY content_type_id_refs_id_d043b34a;
mysql > ALTER TABLE desktop_document DROP FOREIGN KEY content_type_id_refs_id_800664c4;
mysql > ALTER TABLE django_admin_log DROP FOREIGN KEY content_type_id_refs_id_93d2d1f8;
? ? ? ? ? ? d. 刪除 django_content_type 表里的數據。
DELETE FROM hue.django_content_type;
? ? ? ? ? ? e. 在 Hue 服務頁,點擊“操作” > “加載數據庫”。
? ? ? ? ? ? f. 添加 c 步刪除的外鍵。
mysql > ALTER TABLE auth_permission ADD FOREIGN KEY (content_type_id) REFERENCES django_content_type (id);
mysql > ALTER TABLE desktop_document ADD FOREIGN KEY (content_type_id) REFERENCES django_content_type (id);
mysql > ALTER TABLE django_admin_log ADD FOREIGN KEY (content_type_id) REFERENCES django_content_type (id);
? ? ? ? 13. 啟動 Hue 服務。
? ? ? ? 如果在上述步驟中報類似“libmysqlclient.so.16: cannot open shared object file: No such file or directory”這種錯誤,說明 MySQL 的類庫和 Hue 所需的不兼容,這時只需下載兼容版本的庫文件,并放置到 /usr/lib64 目錄,再操作就不會報錯了。