閱讀417 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Hadoop,有所為而有所不為

【51CTO專稿】使用大數據技術有著強烈的吸引力,而如今沒有比Apache Hadoop更誘人的大數據技術了,這種可擴展的數據存儲平台是許多大數據解決方案的核心。

hadoop

但是盡管Hadoop頗具吸引力,想了解Hadoop能夠為企業扮演什麼角色、如何最有效地部署它,仍要麵臨一條很陡的學習曲線。換句話說,學起來很費勁。

隻有明白了Hadoop的有所為而有所不為,你才能更清楚地了解如何才能最有效地把它部署到你自己的數據中心或雲環境。然後,才可以為部署的Hadoop落實最佳實踐。

Hadoop的有所不為

我們不打算花大量的時間來解釋何謂Hadoop,因為許多技術文檔和媒體報道已對此作了深入介紹。一言以蔽之,知道Hadoop的兩個主要組件很重要:一個是用於存儲的Hadoop分布式文件係統(HDFS),另一個是MapReduce框架,讓你可以對Hadoop裏麵存儲的任何數據執行批量分析任務。值得一提的是,這種數據不一定是結構化數據,這使得Hadoop非常適合分析和處理來自社交媒體、文檔和圖形等來源的數據:即並不容易適用於行和列的任何數據。

這倒不是說,你無法將Hadoop用於結構化數據。實際上,市麵上有許多解決方案可以充分利用Hadoop的這個優點:每TB比較低的存儲開支,以便將結構化數據存儲在Hadoop中,以取代關係數據庫係統(RDBMS)。但是如果你的存儲需求不是那麼大,那麼在Hadoop和RDBMS之間來回轉移數據毫無必要。

你不想使用Hadoop的一個方麵是事務型數據。顧名思義,事務型數據異常複雜,因為電子商務網站上的交易事務會生成許多步驟,而這些步驟都必須迅速加以實現。這種場景根本就不適合使用Hadoop。

Hadoop也不適合用於要求延遲時間極短的結構化數據集,比如當網頁由典型的LAMP堆棧中的MySQL數據庫來呈現時。這需要速度快,而Hadoop很難滿足這樣的要求。

Hadoop的有所為

由於批量處理功能,Hadoop應該部署在這些場合:索引編製、模式識別、推薦引擎建立和情緒分析;在所有這些場合下,數據大量生成,存儲在Hadoop中,然後最終使用MapReduce函數來進行查詢。

但是這並不意味著,Hadoop會取代你數據中心裏麵目前的組件。恰恰相反,Hadoop會集成到你現有的IT基礎設施裏麵,以便充分利用進入到貴企業的海量數據。

比如說,設想一個相當典型的非Hadoop企業網站在處理商業交易。據Cloudera的教育服務主管Sarah Sproehnle聲稱,來自其一個客戶的流行網站的日誌每天晚上都要經曆抽取、轉換和加載(ETL)的過程——這個過程可能最多耗時3小時,然後把數據存儲到數據倉庫中。這時,存儲過程將被啟動,另外過兩小時後,被清理的數據將駐留在數據倉庫中。不過,最終的數據集將隻有原始大小的五分之一——這意味著,就算可以從整個原始數據集獲取什麼價值,現在這個價值也蕩然無存了。

Hadoop集成到這家企業後,情況大為改觀:節省了時間和精力。來自Web服務器的日誌數據不用經曆ETL操作,而是直接被完整地發送到了Hadoop裏麵的HDFS。然後,對日誌數據執行同樣的清理過程,現在隻使用MapReduce任務。一旦數據清理完畢,隨後被發送到數據倉庫。但是這個操作要迅速得多,這歸因於省去了ETL這一步,加上MapReduce操作速度快。而且,所有數據仍然保存在Hadoop裏麵,準備回答網站操作人員之後可能提出來的任何額外問題。

想了解Hadoop,有必要明白這個重要的一點:千萬不要把它看作是取代你現有的基礎設施,而是補充數據管理和存儲功能的一種工具。使用Apache Flume或Apache Sqoop之類的工具,你就能把現有係統與Hadoop聯係起來,並且對你的數據進行處理——不管數據有多大。Apache Flume可以將數據從RDBMS獲取到Hadoop,並將數據從Hadoop獲取到RDBMS;Apache Sqoop則可以將係統日誌實時抽取到Hadoop。你隻要為Hadoop添加節點,就可以執行數據存儲和處理任務。

所需的硬件和成本

那麼,我們又需要多少的硬件呢?

估計Hadoop所需的硬件有點不一樣,這取決於你是在問哪家廠商。Cloudera的清單詳細地列出了Hadoop的典型從屬節點應該有怎樣的硬件配置:

中檔處理器

4GB至32 GB內存

每個節點連接至千兆以太網,並配備一隻萬兆以太網架頂式交換機

專用的交換基礎設施,以避免Hadoop擁塞網絡

每個機器4至12個驅動器,非RAID配置方式

另一家Hadoop經銷商Hortonworks的硬件規格大同小異,不過網絡方麵的信息來得模煳一點,那是由於任何某家企業添加到Hadoop實例的工作負載可能不一樣。

Hortonworks的首席技術官Eric Baldeschwieler寫道:“一條經驗法則就是,要關注網絡成本與計算機成本之比,網絡成本盡量控製在總成本的20%左右。網絡成本應包括你的整個網絡、核心交換機、機架交換機和所需的任何網卡等。”

至於Cloudera,它估計每個節點所需的成本在3000美元至7000美元之間,具體取決於你確定每個節點有什麼樣的硬件規格。

Sproehnle也概述了一條很容易遵守的經驗法則,幫助你規劃Hadoop容量。由於Hadoop具有線性擴展的特性,你隻要添加一個節點,就可以增加存儲和處理能力。這使得規劃起來簡單直觀。

比如說,要是你的數據每個月增加1TB,那麼規劃方法如下:Hadoop將數據複製三次,所以你需要3TB的原始存儲空間才能容納新增加的1TB數據。留出一點額外空間(Sproehnle估計要預留30%),以便處理數據操作;這樣一來,每個月實際需要的存儲空間是4TB。如果你使用4個1 TB驅動器的機器作為節點,每個月就需要一個新的節點。

好就好在,所有新的節點一旦連接上,就可以立即投入使用,從而讓你的處理和存儲能力增強X倍,其中X指節點的數量。

不過,安裝和管理Hadoop節點其實並非易事,但是市麵上有許多工具可以助你一臂之力。Cloudera 管理器、Apache Ambari(這是Hortonworks用於其管理係統的工具)和MapR控製係統都是同樣卓有成效的Hadoop集群管理工具。如果你使用一套“純粹”的Apache Hadoop解決方案,還可以關注Platform Symphony MapReduce、StackIQ Rocks + Big Data和Zettaset Data Platform等第三方Hadoop管理係統。

當然,說到為貴企業部署一款Hadoop解決方案,本文介紹的這些內容隻是皮毛而已。也許最寶貴的心得在於明白這一點:Hadoop並非旨在取代你目前的數據基礎設施,而是隻是起到互補作用。

一旦弄清楚了這個重要的區別,就比較容易開始考慮Hadoop可以如何幫助貴企業,沒必要對你現有的數據流程進行大刀闊斧的改動。

最後更新:2017-04-02 15:15:05

  上一篇:go 微信為何火爆
  下一篇:go ibatis中動態語句的iterate標簽