Hadoop教程:四個方案將OpenStack部署到Hadoop
隨著企業(yè)開始同時利用云計算和大數(shù)據(jù)技術(shù),現(xiàn)在應當考慮如何將這些工具結(jié)合使用。在這種情況下,企業(yè)將實現(xiàn)最佳的分析處理能力,同時利用私有云的快速彈性 (rapid elasticity) 和單一租賃的特性。如何協(xié)同效用和實現(xiàn)部署,是本文希望解決的問題。
一些基礎(chǔ)知識
第一是OpenStack 。作為目前最流行的開源云版本,它包括控制器、計算 (Nova)、存儲 (Swift)、消息隊列 (RabbitMQ) 和網(wǎng)絡 (Quantum) 組件。圖 1 提供了這些組件的一個圖示(不包含 Quantum 網(wǎng)絡組件)。
▲圖 1. OpenStack 的組件
這些組件共同提供了一個允許動態(tài)配給計算和存儲資源的環(huán)境。從硬件角度看,這些服務可擴展到許多虛擬的和物理的服務器上。例如,大多數(shù)組織部署一個物理服務器作為控制器節(jié)點,部署另一個物理服務器作為計算節(jié)點。許多組織還選擇將其存儲環(huán)境分離到一個專用的物理服務器上,對于 OpenStack 部署而言,這意味著對 Swift存儲環(huán)境使用單獨的服務器。
第二是大數(shù)據(jù)。 一般可以理解為三個數(shù)據(jù)源的數(shù)據(jù)匯集:傳統(tǒng)數(shù)據(jù)(結(jié)構(gòu)化數(shù)據(jù))、感知數(shù)據(jù)(日志數(shù)據(jù)和元數(shù)據(jù))和社交(社交媒體)數(shù)據(jù)。大數(shù)據(jù)通常采用新的技術(shù)模式進行存儲,比如非關(guān)系分布式數(shù)據(jù)庫 NoSQL。共有四種非關(guān)系數(shù)據(jù)庫管理此系統(tǒng) (NRDBMS):基于列、關(guān)鍵值、圖表和基于文檔。這些 NRDBMS 將源數(shù)據(jù)聚集在一起,同時用 MapReduce 之類的分析程序?qū)R總的信息進行分析。
傳統(tǒng)的大數(shù)據(jù)環(huán)境包括一個分析程序、一個數(shù)據(jù)存儲、一個可擴展文件系統(tǒng)、一個工作流管理器、一個分布式排序和散列解決方案以及一個數(shù)據(jù)流編程框架。常用于商業(yè)應用程序的數(shù)據(jù)流編程框架是 Structured Query Language (SQL),對于開源應用程序,通常會使用 SQL 的替代方案,如 Apache Pig forHadoop。在商用方面,Cloudera 提供了最穩(wěn)定、最全面的解決方案之一,而 ApacheHadoop是最流行的開源Hadoop版本。
第三是ApacheHadoop 。包含多種組件,包括 Hadoop Distributed File System(即 HDFS,是一種可擴展的文件系統(tǒng)),HBase(數(shù)據(jù)庫/數(shù)據(jù)存儲)、Pig、Hadoop(分析方法)和 MapReduce(分布式排序和散列)。如圖 2 所示,Hadoop任務被分解為幾個節(jié)點,而 MapReduce 任務則被分解為跟蹤器 (tracker)。
▲圖 2. HDFS/MapReduce 層的組成部分
圖 3 顯示了 MapReduce 如何執(zhí)行任務,它將獲取輸入并執(zhí)行一系列分組、排序和合并操作,然后呈現(xiàn)經(jīng)過排序和散列的輸出。
▲圖 3. 高級 MapReduce 圖
圖 4 演示了一個更復雜的 MapReduce 任務及其組成部分。
▲圖 4. MapReduce 數(shù)據(jù)流圖解
盡管 Hadoop MapReduce 要比傳統(tǒng)的分析環(huán)境(如 IBM Cognos和 Satori proCube 在線分析處理)更復雜一些,但它的部署仍然具有可擴展能力和高成本效益。
全盤考慮
大數(shù)據(jù)技術(shù)和私有云環(huán)境都很有用;不過,如果將兩者結(jié)合在一起,企業(yè)會獲得巨大的利潤。盡管結(jié)合兩者會讓環(huán)境變得更復雜,企業(yè)仍然可以看到將 OpenStack 私有云和 Apache Hadoop 環(huán)境結(jié)合在一起產(chǎn)生的顯著的協(xié)同效應。如何來做會更好?
方案1. Swift+Apache Hadoop MapReduce
在私有云環(huán)境中,常見的大數(shù)據(jù)部署模型之一是:將 OpenStack 的 Swift 存儲技術(shù)部署到 Apache Hadoop MapReduce 集群,從而實現(xiàn)處理功能。使用這種架構(gòu)的優(yōu)勢是,企業(yè)將獲得一個可擴展的存儲節(jié)點,可以用該節(jié)點來處理其不斷累積的數(shù)據(jù)。根據(jù) IDC 的調(diào)查,數(shù)據(jù)年增長率已經(jīng)達到 60%,該解決方案將滿足不斷增長的數(shù)據(jù)需求,同時允許組織同時啟動一個試點項目來部署私有云。
該部署模型的最佳使用場景是企業(yè)希望通過存儲池嘗試使用私有云技術(shù),同時在內(nèi)部使用大數(shù)據(jù)技術(shù)。最佳實踐表明企業(yè)應當先將大數(shù)據(jù)技術(shù)部署到您的生產(chǎn)數(shù)據(jù)倉庫環(huán)境中,然后構(gòu)建并配置您的私有云存儲解決方案。如果將 Apache Hadoop MapReduce 技術(shù)成功融合到數(shù)據(jù)倉庫環(huán)境中,并且已經(jīng)正確構(gòu)建并運行您的私有云存儲池,那么您就可以將私有云存儲數(shù)據(jù)與預調(diào)度的 Hadoop MapReduce 環(huán)境集成在一起。
方案2. Swift + Cloudera Apache Hadoop 發(fā)行版
對于那些不愿意從頭開始使用大數(shù)據(jù)的企業(yè),可以使用 Cloudera 等解決方案供應商提供的大數(shù)據(jù)設備。Cloudera 的發(fā)行版包括 Apache Hadoop (CDH) 解決方案,它允許企業(yè)不必針對 Hadoop 的每個細微差別來招募或培訓員工,因此可以在大數(shù)據(jù)方面實現(xiàn)更高的投資回報 (ROI)。對于那些不具備大數(shù)據(jù)或私有云技能集,希望以緩慢、漸進的方式將該技術(shù)集成到其產(chǎn)品組合的企業(yè),這一點尤其吸引人。
大數(shù)據(jù)和云計算屬于相對較新的技術(shù),許多企業(yè)希望通過它們實現(xiàn)成本節(jié)省;不過,許多企業(yè)對于是否完全采用這些技術(shù)猶豫不決。通過利用供應商支持的大數(shù)據(jù)軟件版本,企業(yè)在這方面將會更加從容,同時還可以了解如何使用這些技術(shù)來發(fā)揮自身的優(yōu)勢。此外,如果使用大數(shù)據(jù)軟件分析大型數(shù)據(jù)集,而且可以通過私有云存儲節(jié)點來管理這些數(shù)據(jù)集,那么這些企業(yè)還可以實現(xiàn)更高的利用率。為了最好地將這一策略集成到企業(yè)中,首先需要安裝、配置和管理 CDH,以便分析企業(yè)的數(shù)據(jù)倉庫環(huán)境,然后將 Swift 中存儲的數(shù)據(jù)添加到需要的地方。
方案3. Swift、Nova + Apache Hadoop MapReduce
對于希望在大數(shù)據(jù)環(huán)境中實現(xiàn)更高程度的靈活性、可擴展性和自治性的企業(yè),可以利用 Apache 和 OpenStack 提供的開源產(chǎn)品的與生俱來的能力。為此,企業(yè)需要最大限度地利用這兩種技術(shù)棧,這就要求采用與前面所述的解決方案不同的思維方式來設計環(huán)境。
要獲得完全可伸縮的、靈活的大數(shù)據(jù)環(huán)境,必須在一個同時提供存儲和計算節(jié)點的私有云環(huán)境中運行它。為此,企業(yè)必須先構(gòu)建私有云,然后添加大數(shù)據(jù)。因此,在這種情況下,必然會用到 Swift、Nova 和 RabbitMQ,并控制器節(jié)點來管理和維護環(huán)境。但是,問題在于企業(yè)是否需要針對不同的系統(tǒng)和業(yè)務部門將環(huán)境分為若干個部分(例如,非大數(shù)據(jù)虛擬機或客戶機實例)。如果企業(yè)準備完全使用私有云,那么應當添加 Quantum,從網(wǎng)絡的角度對不同的環(huán)境進行劃分(參見圖 5)。
▲圖 5. OpenStack 架構(gòu)
在設置并測試了私有云環(huán)境后,可以將 Apache Hadoop 組件合并到其中。此時,Nova 實例可用于存放 NoSQL 或 SQL 數(shù)據(jù)存儲(沒錯,它們可以共存)以及 Pig 和 MapReduce 實例;Hadoop 可以位于一個獨立的非 Nova 機器上,以便提供處理功能。在不久的將來,Hadoop 有望在 Nova 實例上運行,使私有云自包含到所有 Nova 實例中。
方案4. GFS、Nova、Pig 和 MapReduce
從架構(gòu)的角度看,除了使用 OpenStack 的 Swift 實現(xiàn)可擴展存儲外,可能還有其他選擇。本例使用了 Google File System (GFS)、Nova 組件和 Apache Hadoop 組件,具體來講,使用了 Pig 和 MapReduce。該示例允許企業(yè)集中精力開發(fā)一個僅用于計算處理的私有云計算節(jié)點,同時利用 Google 的公共存儲云作為數(shù)據(jù)存儲。通過使用這種混合云,企業(yè)可以專注于計算處理功能的核心能力,由第三方負責實現(xiàn)存儲。該模型可以利用其他供應商的存儲解決方案,如 Amazon Simple Storage Service;但是,在使用任何外部存儲之前,企業(yè)應當在內(nèi)部使用可擴展的文件系統(tǒng) (XFS) 來構(gòu)建該解決方案,并進行相應的測試,然后再將其擴展到公共云中。此外,根據(jù)數(shù)據(jù)的敏感性,企業(yè)可能需要使用數(shù)據(jù)保護機制,比如模糊處理 (obfuscation)、解除匿名化、加密或散列。
技巧和提示
在將云計算和大數(shù)據(jù)技術(shù)并入企業(yè)環(huán)境時,一定要為這兩個技術(shù)平臺構(gòu)建員工的技能集。當您的員工理解這些技術(shù)后,就可以組建一個實驗室來測試這兩個平臺合并后的效果。由于包含許多不同的組件,因此在實現(xiàn)過程中,請務必遵循前面提到的經(jīng)過驗證的路徑。此外,企業(yè)在嘗試合并這兩種模式時可能會遇到一些挫折,應當在進行若干次嘗試后改用其他方法。這些方法包括設備和混合云。
障礙和陷阱
由于這些都是比較新的技術(shù),所以大多數(shù)企業(yè)需要利用現(xiàn)有資源進行測試,之后再進行大量的資本支出 (CapEx)。然而,如果沒有對這些技術(shù)在企業(yè)中的應用進行合理的預算和人員培訓,那么試點和測試工作將會以失敗告終。同樣,如果缺少完整的私有云部署,企業(yè)應當首先在其中實現(xiàn)大數(shù)據(jù)技術(shù),然后再實現(xiàn)私有云。
最后,企業(yè)需要為私有云和大數(shù)據(jù)計劃制定一個戰(zhàn)略路線圖。要獲得成功的部署,則需要進行更多的分析 “工作”,這有可能會拖延處理過程。為了消除這種風險,應當采用一種迭代式的項目管理方法,以分階段的方式部署到業(yè)務部門中,通過這種方法將這些技術(shù)部署到企業(yè)中。企業(yè)需要確認如何通過應用這些新技術(shù)使公司受益,如成本節(jié)省或加強處理功能等。(感謝@程序猿張吉的分享。)
作者:程序猿張吉