現(xiàn)在,數(shù)據(jù)隨處生成,數(shù)據(jù)量呈指數(shù)增長。來自 Web 服務(wù)器、應(yīng)用程序服務(wù)器、數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)以用戶信息、日志文件和系統(tǒng)狀態(tài)信息的形式提供。大量的數(shù)據(jù)也由物聯(lián)網(wǎng)設(shè)備產(chǎn)生,如傳感器、車輛、工業(yè)設(shè)備等。從科學(xué)模擬模型生成的數(shù)據(jù)也是大數(shù)據(jù)的來源之一。使用傳統(tǒng)軟件工具來存儲(chǔ)和執(zhí)行這些數(shù)據(jù)的分析可能很困難,而 Hadoop 可以解決這個(gè)問題。
看一個(gè)用例場(chǎng)景 —— 大量的數(shù)據(jù)存儲(chǔ)在關(guān)系數(shù)據(jù)庫管理系統(tǒng)環(huán)境中。當(dāng)數(shù)據(jù)集越來越大時(shí), RDBMS ( 關(guān)系數(shù)據(jù)庫管理系統(tǒng) Relational Database Management System )表現(xiàn)不佳。而且這個(gè)問題會(huì)隨著數(shù)據(jù)集的增長而越發(fā)嚴(yán)重。在這個(gè)階段,避免采用 NoSQL 。需要以具有成本效益的方式存儲(chǔ)和處理大量數(shù)據(jù)。應(yīng)該依賴非虛擬化環(huán)境中的高端服務(wù)器嗎?要求是隨時(shí)擴(kuò)展集群,需要一個(gè)更好的儀表板來管理其所有組件。
計(jì)劃在 OpenStack 之上建立一個(gè) Hadoop 集群并創(chuàng)建 ETL ( Extract-Transform-Load)作業(yè)環(huán)境。Hadoop 是一個(gè)行業(yè)標(biāo)準(zhǔn)框架,用于存儲(chǔ)和分析具有容錯(cuò) Hadoop 分布式文件系統(tǒng)和 MapReduce 實(shí)施的大型數(shù)據(jù)集。然而,可伸縮性在典型的 Hadoop 集群中是一個(gè)非常普遍的問題。
Openstack 推出了一個(gè)名為 Sahara 的項(xiàng)目 —— 數(shù)據(jù)處理即服務(wù)。 Openstack Sahara 旨在配置和管理數(shù)據(jù)處理框架,如集群拓?fù)渲械?hadoop mapreduce、spark和Storm 。該項(xiàng)目與 Amazon Elastic MapReduce(EMR) 服務(wù)提供的數(shù)據(jù)分析平臺(tái)類似。Openstack Sahara 可在幾分鐘內(nèi)部署集群。此外,Openstack Sahara 可以根據(jù)需求通過添加或刪除工作節(jié)點(diǎn)來伸縮集群。
使用 Openstack Sahara 管理 Hadoop 集群的好處
——集群可以更快地提供且易于配置。
——像其他 OpenStack 服務(wù)一樣,Sahara 服務(wù)可以通過強(qiáng)大的 REST API、CLI 和 Horizon 儀表板進(jìn)行管理。
——插件可用于支持 Vannila(Apache Hadoop)、HDP(ambari)、CDH(Cloudera)、MapR、Spark、Storm 等多個(gè) Hadoop 供應(yīng)商。
——集群大小可根據(jù)需求進(jìn)行伸縮。
——可以與 OpenStack Swift 集成以存儲(chǔ)由 Hadoop和 Spark 處理的數(shù)據(jù)。
——集群監(jiān)控變得簡(jiǎn)單。
——除集群配置外,Sahara 還可以用作分析即服務(wù),用于臨時(shí)或突發(fā)分析工作負(fù)載。
架構(gòu)
Openstack Sahara 旨在利用 OpenStack 的核心服務(wù)和其他完全托管服務(wù)。這使 Sahara 更加可靠并且能夠有效地管理 Hadoop 集群,你可以選擇使用包括 Trove( OpenStack 數(shù)據(jù)服務(wù)組件,允許用戶對(duì)關(guān)系型數(shù)據(jù)庫進(jìn)行管理,實(shí)現(xiàn)了 Mysql 實(shí)例的異步復(fù)制和提供 PostgreSQL 數(shù)據(jù)庫的實(shí)例。) 和 Swift 在內(nèi)的服務(wù)。來看看 Sahara 的架構(gòu)。
—— Sahara 服務(wù)有一個(gè) API 服務(wù)器,它響應(yīng)來自最終用戶的 HTTP 請(qǐng)求并與其他 OpenStack 服務(wù)交互以執(zhí)行其功能。
—— Keystone (身份即服務(wù))對(duì)用戶進(jìn)行身份驗(yàn)證,并提供用于與 OpenStack 配合使用的安全令牌,將用戶在 Sahara 中的能力限制為其 OpenStack 權(quán)限。
—— Heat (編排即服務(wù))用于配置和編排數(shù)據(jù)處理集群的部署。
—— Glance(虛擬機(jī)鏡像即服務(wù))使用操作系統(tǒng)和預(yù)安裝的 Hadoop / Spark 軟件包存儲(chǔ) VM 鏡像以創(chuàng)建數(shù)據(jù)處理集群。
—— Nova (計(jì)算)為數(shù)據(jù)處理集群提供虛擬機(jī)。
—— Ironic(裸機(jī)即服務(wù))為數(shù)據(jù)處理集群提供裸機(jī)節(jié)點(diǎn)。
—— Neutron(網(wǎng)絡(luò))便于網(wǎng)絡(luò)服務(wù)從基礎(chǔ)到高級(jí)拓?fù)湓L問數(shù)據(jù)處理集群。
—— Cinder(塊存儲(chǔ))為集群節(jié)點(diǎn)提供持久存儲(chǔ)介質(zhì)。
—— Swift(對(duì)象存儲(chǔ))提供可靠的存儲(chǔ)來保存作業(yè)二進(jìn)制文件和由hadoop / spark處理的數(shù)據(jù)。
—— Designate(DNS即服務(wù))提供托管區(qū)域以保留集群實(shí)例的DNS記錄。 Hadoop服務(wù)通過主機(jī)名與群集實(shí)例進(jìn)行通信。
—— Ceilometer(telrmetry)收集和存儲(chǔ)有關(guān)用于計(jì)量和監(jiān)控目的的集群指標(biāo)。
—— Manila(文件共享)可用于存儲(chǔ)作業(yè)創(chuàng)建的作業(yè)二進(jìn)制文件和數(shù)據(jù)。
—— Barbican(密鑰管理服務(wù))安全地存儲(chǔ)密碼和私鑰等敏感數(shù)據(jù)。
——Trove(數(shù)據(jù)庫即服務(wù))為 hive metastore 提供數(shù)據(jù)庫實(shí)例,并存儲(chǔ) Hadoop 服務(wù)和其他管理服務(wù)的狀態(tài)。
如何建立Sahara集群
請(qǐng)按照部署 Sahara 安裝指南中的步驟操作。不同的部署環(huán)境有不同的方式,免備案空間 香港服務(wù)器,如果你想要試驗(yàn), Kolla 也是一個(gè)不錯(cuò)的選擇。
你還可以通過 Horizon 儀表板管理 Sahara 項(xiàng)目。
用Sahara集群ETL(提取、轉(zhuǎn)換和加載)或ELT(提取、加載和轉(zhuǎn)換)
市場(chǎng)上有很多 ETL 工具可用。
傳統(tǒng)數(shù)據(jù)倉庫有其自身的優(yōu)點(diǎn)和局限性,例如它可能位于數(shù)據(jù)源以外的其他位置。Hadoop 是運(yùn)行 ETL 作業(yè)的理想平臺(tái)。