一文搞定!在 OpenStack 上部署 Hadoop

renke發表於2021-09-09

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 scripts 進行清理和轉換。

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 工作流。

內容覆蓋主流開源領域


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/430/viewspace-2808638/,如需轉載,請註明出處,否則將追究法律責任。

相關文章