04.13 一文搞定!在 OpenStack 上部署 Hadoop

OpenStack 控制計算、存儲和網絡資源池。本文主要關注 OpenStack 如何在大數據用例中扮演關鍵角色。

OpenStack 上的大數據

現在,數據隨處生成,數據量呈指數增長。來自 Web 服務器、應用程序服務器、數據庫服務器的數據以用戶信息、日誌文件和系統狀態信息的形式提供。大量的數據也由物聯網設備產生,如傳感器、車輛、工業設備等。從科學模擬模型生成的數據也是大數據的來源之一。使用傳統軟件工具來存儲和執行這些數據的分析可能很困難,而 Hadoop 可以解決這個問題。

看一個用例場景 —— 大量的數據存儲在關係數據庫管理系統環境中。當數據集越來越大時, RDBMS ( 關係數據庫管理系統 Relational Database Management System )表現不佳。而且這個問題會隨著數據集的增長而越發嚴重。在這個階段,避免採用 NoSQL 。需要以具有成本效益的方式存儲和處理大量數據。應該依賴非虛擬化環境中的高端服務器嗎?要求是隨時擴展集群,需要一個更好的儀表板來管理其所有組件。

計劃在 OpenStack 之上建立一個 Hadoop 集群並創建 ETL ( Extract-Transform-Load)作業環境。Hadoop 是一個行業標準框架,用於存儲和分析具有容錯 Hadoop 分佈式文件系統和 MapReduce 實施的大型數據集。然而,可伸縮性在典型的 Hadoop 集群中是一個非常普遍的問題。

Openstack 推出了一個名為 Sahara 的項目 —— 數據處理即服務。 Openstack Sahara 旨在配置和管理數據處理框架,如集群拓撲中的 hadoop mapreduce、spark和storm 。該項目與 Amazon Elastic MapReduce(EMR) 服務提供的數據分析平臺類似。Openstack Sahara 可在幾分鐘內部署集群。此外,Openstack Sahara 可以根據需求通過添加或刪除工作節點來伸縮集群。

使用 Openstack Sahara 管理 Hadoop 集群的好處

——集群可以更快地提供且易於配置。

——像其他 OpenStack 服務一樣,Sahara 服務可以通過強大的 REST API、CLI 和 Horizon 儀表板進行管理。

——插件可用於支持 Vannila(Apache Hadoop)、HDP(ambari)、CDH(Cloudera)、MapR、Spark、Storm 等多個 Hadoop 供應商。

——集群大小可根據需求進行伸縮。

——可以與 OpenStack Swift 集成以存儲由 Hadoop和 Spark 處理的數據。

——集群監控變得簡單。

——除集群配置外,Sahara 還可以用作分析即服務,用於臨時或突發分析工作負載。

架構

Openstack Sahara 旨在利用 OpenStack 的核心服務和其他完全託管服務。這使 Sahara 更加可靠並且能夠有效地管理 Hadoop 集群,你可以選擇使用包括 Trove( OpenStack 數據服務組件,允許用戶對關係型數據庫進行管理,實現了 Mysql 實例的異步複製和提供 PostgreSQL 數據庫的實例。) 和 Swift 在內的服務。來看看 Sahara 的架構。

—— Sahara 服務有一個 API 服務器,它響應來自最終用戶的 HTTP 請求並與其他 OpenStack 服務交互以執行其功能。

—— Keystone (身份即服務)對用戶進行身份驗證,並提供用於與 OpenStack 配合使用的安全令牌,將用戶在 Sahara 中的能力限制為其 OpenStack 權限。

—— Heat (編排即服務)用於配置和編排數據處理集群的部署。

—— Glance(虛擬機鏡像即服務)使用操作系統和預安裝的 Hadoop / Spark 軟件包存儲 VM 鏡像以創建數據處理集群。

—— Nova (計算)為數據處理集群提供虛擬機。

—— Ironic(裸機即服務)為數據處理集群提供裸機節點。

—— Neutron(網絡)便於網絡服務從基礎到高級拓撲訪問數據處理集群。

—— Cinder(塊存儲)為集群節點提供持久存儲介質。

—— Swift(對象存儲)提供可靠的存儲來保存作業二進制文件和由hadoop / spark處理的數據。

—— Designate(DNS即服務)提供託管區域以保留集群實例的DNS記錄。 Hadoop服務通過主機名與群集實例進行通信。

—— Ceilometer(telrmetry)收集和存儲有關用於計量和監控目的的集群指標。

—— Manila(文件共享)可用於存儲作業創建的作業二進制文件和數據。

—— Barbican(密鑰管理服務)安全地存儲密碼和私鑰等敏感數據。

——Trove(數據庫即服務)為 hive metastore 提供數據庫實例,並存儲 Hadoop 服務和其他管理服務的狀態。

如何建立Sahara集群

請按照部署 Sahara 安裝指南中的步驟操作。不同的部署環境有不同的方式,如果你想要試驗, Kolla 也是一個不錯的選擇。

你還可以通過 Horizon 儀表板管理 Sahara 項目。

用Sahara集群ETL(提取、轉換和加載)或ELT(提取、加載和轉換)

市場上有很多 ETL 工具可用。

傳統數據倉庫有其自身的優點和侷限性,例如它可能位於數據源以外的其他位置。Hadoop 是運行 ETL 作業的理想平臺。

數據存儲區中有各種數據,包括結構化、半結構化和非結構化數據。Hadoop生態系統有從不同數據源(包括數據庫、文件和其他數據流)中提取數據並將其存儲在集中式 Hadoop Distributed File System(HDFS) 中的工具。

隨著數據快速增長,Hadoop 集群可以擴展並利用OpenStack Sahara 。

Apache Hive 是建立在 Hadoop 生態系統之上的數據倉庫項目,也是進行 ETL 分析的可靠工具。一旦使用工具(如 Sqoop、Flume、Kafka 等)從數據源中提取數據後,應該使用 MapReduce 技術用 Hive 或pig>

Hive 的另一個優點是它是一個交互式查詢引擎,可以通過 Hive 查詢語言訪問。它類似於 SQL 。因此,數據庫人員可以在不掌握 Java 和 MapReduce 概念的情況下,在 Hadoop 生態系統中執行作業。Hive 查詢執行引擎解析 Hive 查詢並將其轉換為一系列 MapReduce / Spark 作業。Hive 可以通過JDBC / ODBC 驅動程序和瘦客戶端訪問。

Oozie 是 Hadoop 生態系統中可用的工作流引擎。工作流是一組必須作為分佈式環境中的序列執行的任務。Oozie 幫助創建一個簡單的工作流來層疊多個工作流並創建協調的作業。Oozie 用於為複雜的 ETL 作業創建工作流也很理想,儘管它沒有模塊來支持與 Hadoop 相關的所有操作。

我們可以使用任何工作流引擎來執行 ETL 工作,例如 Openstack Mistral (工作流即服務)。Apache oozie 在某些方面類似於 Openstack Mistral ,充當可以定期觸發的作業調度器。

我們來看看一個典型的 ETL 作業流程,它使用Hadoop 將應用程序將其數據存儲在 MySQL 服務器中。存儲的數據需要以最少的成本和時間進行分析。

提取

第一步是從 MySQL 中提取數據並將其存儲在 HDFS中。

Apache Sqoop 可用於從結構化數據源(如 RDBMS數據存儲)導出/導入數據。

如果要提取的數據是半結構化的或非結構化的,你可以使用 Apache Flume 從數據鏈接中獲取數據,例如 Web 服務器日誌、Twitter 數據流或傳感器數據。

轉換

從上述階段提取的數據格式不正確(只是原始數據)。應該用適當的過濾器和數據聚合來清理。

這是在 HDFS 中存儲數據必不可少的。

此時,我們需要為每個表設計 Hive 模式,並創建一個數據庫來轉換存儲在臨時區域中的數據。

通常情況下,數據採用 .csv 格式,每條記錄均以逗號分隔。

我們不需要檢查 HDFS 數據以瞭解它是如何存儲的。有一些異常數據類型應該與 Hive 兼容。

數據庫建模後,我們可以加載提取的數據進行清理。表格中的數據仍然未標準化。從不同的表中聚合所需的列。

同樣,可以用“ OVERWRITE INTO TABLE ”語句來彙總多個表中的數據。

Hive 支持分區表,通過水平分配執行負載來提高查詢性能。我們傾向於分區存儲年份和月份的列。有時,分區表在 MapReduce 作業中創建更多任務。

加載

現在是時候將轉換後的數據加載到 HDFS 中的數據倉庫目錄中,這是數據的最終狀態。在這裡,我們可以應用 SQL 查詢來獲得適當的結果。

所有的 DML 命令都可以用來分析基於用例的倉庫數據。

結果可以下載為 .csv、表格或圖表進行分析。它可以與其他流行的商業智能工具(如Talend OpenStudio、Tabelau 等)集成。

自動化

現在使用 Oozie 工作流引擎自動執行 ETL 作業(你也可以使用 Mistral,大多數 Hadoop 用戶習慣用Apache Oozie )。

結論

OpenStack 集成了一個非常大的 Hadoop 生態系統,許多雲提供商提供 Hadoop 服務(只需要點擊幾下它們的雲管理門戶網站即可)。Sahara 支持大部分 Hadoop 供應商插件,讓你執行 ETL 工作流。


分享到:


相關文章: