歡迎您光臨本站 註冊首頁

如何挑選合適的大數據或Hadoop平台?

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

如何挑選合適的大數據或Hadoop平台?

  
今年,大數據在很多公司都成為相關話題。雖然沒有一個標準的定義來解釋何為 「大數據」,但在處理大數據上,Hadoop已經成為事實上的標準。IBM、Oracle、SAP、甚至Microsoft等幾乎所有的大型軟體提供商都採用了Hadoop。然而,當你已經決定要使用Hadoop來處理大數據時,首先碰到的問題就是如何開始以及選擇哪一種產品。你有多種選擇來安裝Hadoop的一個版本並實現大數據處理。本文討論了不同的選擇,並推薦了每種選擇的適用場合。

Hadoop平台的多種選擇

下圖展示了Hadoop平台的多種選擇。你可以只安裝Apache 發布版本,或從不同提供商所提供的幾個發行版本中選擇一個,或決定使用某個大數據套件。每個發行版本都包含有Apache Hadoop,而幾乎每個大數據套件都包含或使用了一個發行版本,理解這一點是很重要的。
下面我們首先從Apache Hadoop開始來好好看看每種選擇。

Apache Hadoop

Apache Hadoop項目的目前版本(2.0版)含有以下模塊:
Hadoop通用模塊:支持其他Hadoop模塊的通用工具集。
Hadoop分散式文件系統(HDFS):支持對應用數據高吞吐量訪問的分散式文件系統。
Hadoop YARN:用於作業調度和集群資源管理的框架。
Hadoop MapReduce:基於YARN的大數據并行處理系統。

在本地系統上獨立安裝Apache Hadoop是非常容易的(只需解壓縮並設置某些環境變數,然後就可以開始使用了)。但是這隻合適於入門和做一些基本的教程學習。
如果你想在一個或多個「真正的節點」上安裝Apache Hadoop,那就複雜多了。

問題1:複雜的集群設置

你可以使用偽分散式模式在單個節點上模擬多節點的安裝。你可以在單台伺服器上模擬在多台不同伺服器上的安裝。就算是在該模式下,你也要做大量的配置工作。如果你想設置一個由幾個節點組成的集群,毫無疑問,該過程就變得更為複雜了。要是你是一個新手管理員,那麼你就不得不在用戶許可權、訪問許可權等諸如此類的問題中痛苦掙扎。

問題2: Hadoop生態系統的使用

在Apache中,所有項目之間都是相互獨立的。這是很好的一點!不過Hadoop生態系統除了包含Hadoop外,還包含了很多其他Apache項目:
倠椀最:分析大數據集的一個平台,該平台由一種表達數據分析程序的高級語言和對這些程序進行評估的基礎設施一起組成。
Hive:用於Hadoop的一個數據倉庫系統,它提供了類似於SQL的查詢語言,通過使用該語言,可以方便地進行數據匯總,特定查詢以及分析存放在Hadoop兼容文件系統中的大數據。
Hbase:一種分佈的、可伸縮的、大數據儲存庫,支持隨機、實時讀/寫訪問。
匠焀漀漀瀀:為高效傳輸批量數據而設計的一種工具,其用於Apache Hadoop和結構化數據儲存庫如關係資料庫之間的數據傳輸。
Flume:一種分散式的、可靠的、可用的服務,其用於高效地搜集、匯總、移動大量日誌數據。
娠漀漀Keeper:一種集中服務,其用於維護配置信息,命名,提供分散式同步,以及提供分組服務。
還有其他一些項目。

你需要安裝這些項目,並手動地將它們集成到Hadoop中。

你需要自己留意不同的版本和發布版本。不幸的是,不是所有的版本都能在一起完美地運行起來。你要自己比較發布說明並找出解決之道。Hadoop提供了眾多的不同版本、分支、特性等等。跟你從其他項目了解的1.0、1.1、2.0這些版本號不同,Hadoop的版本可遠沒這麼簡單。如果你想更進一步了解關於「Hadoop版本地獄」的細節,請閱讀「大象的家譜(Genealogy of elephants)」一文。

問題3:商業支持

Apache Hadoop只是一個開源項目。這當然有很多益處。你可以訪問和更改源碼。實際上有些公司使用並擴展了基礎代碼,還添加了新的特性。很多討論、文章、博客和郵件列表中都提供了大量信息。

然而,真正的問題是如何獲取像Apache Hadoop這樣的開源項目的商業支持。公司通常只是為自己的產品提供支持,而不會為開源項目提供支持(不光是Hadoop項目,所有開源項目都面臨這樣的問題)。

何時使用Apache Hadoop

由於在本地系統上,只需10分鐘左右就可完成其獨立安裝,所以Apache Hadoop很適合於第一次嘗試。你可以試試WordCount示例(這是Hadoop的「hello world」示例),並瀏覽部分MapReduce的Java代碼 。

如果你並不想使用一個「真正的」Hadoop發行版本(請看下一節)的話,那麼選擇Apache Hadoop也是正確的。然而,我沒有理由不去使用Hadoop的一個發行版本——因為它們也有免費的、非商業版。

所以,對於真正的Hadoop項目來說,我強烈推薦使用一個Hadoop的發行版本來代替Apache Hadoop。下一節將會說明這種選擇的優點。

Hadoop發行版本

Hadoop發行版本解決了在上一節中所提到的問題。發行版本提供商的商業模型百分之百地依賴於自己的發行版本。他們提供打包、工具和商業支持。而這些不僅極大地簡化了開發,而且也極大地簡化了操作。

Hadoop發行版本將Hadoop生態系統所包含的不同項目打包在一起。這就確保了所有使用到的版本都可以順當地在一起工作。發行版本會定期發布,它包含了不同項目的版本更新。

發行版本的提供商在打包之上還提供了用於部署、管理和監控Hadoop集群的圖形化工具。採用這種方式,可以更容易地設置、管理和監控複雜集群。節省了大量工作。

正如上節所提到的,獲取普通Apache Hadoop項目的商業支持是很艱難的,而提供商卻為自己的Hadoop發行版本提供了商業支持。

Hadoop發行版本提供商

目前,除了Apache Hadoop外, HortonWorks、Cloudera和MapR三駕馬車在發布版本上差不多齊頭並進。雖然,在此期間也出現了其他的Hadoop發行版本。比如EMC公司的Pivotal HD、IBM的InfoSphere BigInsights。通過Amazon Elastic MapReduce(EMR),Amazon甚至在其雲上提供了一個託管的、預配置的解決方案。

雖然很多別的軟體提供商沒有開發自己的Hadoop發行版本,但它們和某一個發行版本提供商相互合作。舉例來說,Microsoft和Hortonworks相互合作,特別是合作將Apache Hadoop引入到Windows Server操作系統和Windows Azure雲服務中。另外一個例子是,Oracle通過將自己的軟硬體與Cloudera的Hadoop發行版本結合到一起,提供一個大數據應用產品。而像SAP、Talend這樣的軟體提供商則同時支持幾個不同的發行版本。

如何選擇合適的Hadoop發行版本?

本文不會評估各個Hadoop的發行版本。然而,下面會簡短地介紹下主要的發行版本提供商。在不同的發行版本之間一般只有一些細微的差別,而提供商則將這些差別視為秘訣和自己產品的與眾不同之處。下面的列表解釋了這些差別:
Cloudera:最成型的發行版本,擁有最多的部署案例。提供強大的部署、管理和監控工具。Cloudera開發並貢獻了可實時處理大數據的Impala項目。

Hortonworks:不擁有任何私有(非開源)修改地使用了100%開源Apache Hadoop的唯一提供商。Hortonworks是第一家使用了Apache HCatalog的元數據服務特性的提供商。

並且,它們的Stinger開創性地極大地優化了Hive項目。Hortonworks為入門提供了一個非常好的,易於使用的沙盒。Hortonworks開發了很多增強特性並提交至核心主幹,這使得Apache Hadoop能夠在包括Windows Server和Windows Azure在內的Microsft Windows平台上本地運行。

MapR:與競爭者相比,它使用了一些不同的概念,特別是為了獲取更好的性能和易用性而支持本地Unix文件系統而不是HDFS(使用非開源的組件)。可以使用本地Unix命令來代替Hadoop命令。除此之外,MapR還憑藉諸如快照、鏡像或有狀態的故障恢復之類的高可用性特性來與其他競爭者相區別。該公司也領導著Apache Drill項目,本項目是Google的Dremel的開源項目的重新實現,目的是在Hadoop數據上執行類似SQL的查詢以提供實時處理。

Amazon Elastic Map Reduce(EMR):區別於其他提供商的是,這是一個託管的解決方案,其運行在由Amazon Elastic Compute Cloud(Amazon EC2)和Amzon Simple Strorage Service(Amzon S3)組成的網路規模的基礎設施之上。除了Amazon的發行版本之外,你也可以在EMR上使用MapR。臨時集群是主要的使用情形。如果你需要一次性的或不常見的大數據處理,EMR可能會為你節省大筆開支。然而,這也存在不利之處。其只包含了Hadoop生態系統中Pig和Hive項目,在默認情況下不包含其他很多項目。並且,EMR是高度優化成與S3中的數據一起工作的,這種方式會有較高的延時並且不會定位位於你的計算節點上的數據。所以處於EMR上的文件IO相比於你自己的Hadoop集群或你的私有EC2集群來說會慢很多,並有更大的延時。

上面的發行版本都能靈活地單獨使用或是與不同的大數據套件組合使用。而這期間出現的一些其它的發行版本則不夠靈活,會將你綁定至特定的軟體棧和(或)硬體棧。比如EMC的Pivotal HD原生地融合了Greenplum的分析資料庫,目的是為了在Hadoop,或Intel的Apache Hadoop發行版本之上提供實時SQL查詢和卓越的性能,Intel的Apache Hadoop發行版本為固態驅動器進行了優化,這是其他Hadoop公司目前還沒有的做法。

所以,如果你的企業已經有了特定的供應方案棧,則一定要核查它支持哪個Hadoop發行版本。比如,如果你使用了Greeplum資料庫,那麼Pivotal就可能是一個完美的選擇,而在其他情況下,可能更適合採取更加靈活的解決方案。例如,如果你已經使用了Talend ESB,並且你想使用TalenD Big Data來啟動你的大數據項目,那麼你可以選擇你心儀的Hadoop發行版本,因為Talend並不依賴於Hadoop發行版本的某個特定提供商。

為了做出正確的選擇,請了解各個發行版本的概念並進行試用。請查證所提供的工具並分析企業版加上商業支持的總費用。在這之後,你就可以決定哪個發行版本是適合自己的。

何時使用Hadoop發行版本?

由於發行版本具有打包、工具和商業支持這些優點,所以在絕大多數使用情形下都應使用Hadoop的發行版本。使用普通的(原文為plan,應為plain)Apache Hadoop發布版本並在此基礎之上構建自己的發行版本的情況是極少見的。你會要自己測試打包,構建自己的工具,並自己動手寫補丁。其他一些人已經遇到了你將會遇到的同樣問題。所以,請確信你有很好的理由不使用Hadoop發行版本。

然而,就算是Hadoop發行版本也需要付出很大的努力。你還是需要為自己的MapReduce作業編寫大量代碼,並將你所有的不同數據源集成到Hadoop中。而這就是大數據套件的切入點。

大數據套件

你可以在Apache Hadoop或Hadoop發行版本之上使用一個大數據套件。大數據套件通常支持多個不同的Hadoop發行版本。然而,某些提供商實現了自己的Hadoop解決方案。無論哪種方式,大數據套件為了處理大數據而在發行版本上增加了幾個更進一步的特性:

工具:通常,大數據套件是建立像Eclipse之類的IDE之上。附加插件方便了大數據應用的開發。你可以在自己熟悉的開發環境之內創建、構建並部署大數據服務。

蘒模:Apache Hadoop或Hadoop發行版本為Hadoop集群提供了基礎設施。然而,你仍然要寫一大堆很複雜的代碼來構建自己的MapReduce程序。你可以使用普通的Java來編寫這些代碼,或者你也可以那些已經優化好的語言,比如PigLatin或Hive查詢語言(HQL),它們生成MapReduce代碼。大數據套件提供了圖形化的工具來為你的大數據服務進行建模。所有需要的代碼都是自動生成的。你只用配置你的作業(即定義某些參數)。這樣實現大數據作業變得更容易和更有效率。

代碼生成:生成所有的代碼。你不用編寫、調試、分析和優化你的MapReduce代碼。

調度:需要調度和監控大數據作業的執行。你無需為了調度而編寫cron作業或是其他代碼。你可以很容易地使用大數據套件來定義和管理執行計劃。

集成:Hadoop需要集成所有不同類技術和產品的數據。除了文件和SQL資料庫之外,你還要集成NoSQL資料庫、諸如Twitter或Facebook這樣的社交媒體、來自消息中間件的消息、或者來自類似於Salesforce或SAP的B2B產品的數據。通過提供從不同介面到Hadoop和後端的眾多連接器,大數據套件為集成提供了很多幫助。你不用手工編寫連接代碼,你只需使用圖形化的工具來集成並映射所有這些數據。集成能力通常也具有數據質量特性,比如數據清洗以提高導入數據的質量。

大數據套件提供商

大數據套件的數目在持續增長。你可以在幾個開源和專有提供商之間選擇。像IBM、Oracle、Microsoft等這樣的大部分大軟體提供商將某一類的大數據套件集成到自己的軟體產品組合中。而絕大多數的這些廠商僅只支持某一個Hadoop發行版本,要麼是自己的,要麼和某個Hadoop發行版本提供商合作。

從另外一方面來看,還有專註於數據處理的提供商可供選擇。它們提供的產品可用於數據集成、數據質量、企業服務匯流排、業務流程管理和更進一步的集成組件。既有像Informatica這樣的專有提供商,也有Talend或Pentaho這樣的開源提供商。某些提供商不只支持某一個Hadoop發行版本,而是同時支持很多的。比如,就在撰寫本文的時刻,Talend就可以和Apache Hadoop、Cloudera、Hortonworks、MapR、Amazon Elastic MapReduce或某個定製的自創發行版本(如使用EMC的Pivotal HD)一起使用。

如何選擇合適的大數據套件?

本文不會評估各個大數據套件。當你選擇大數據套件時,應考慮幾個方面。下面這些應該可以幫助你為自己的大數據問題作出合適的抉擇:

耠啻性:親自試用大數據套件。這也就意味著:安裝它,將它連接到你的Hadoop安裝,集成你的不同介面(文件、資料庫、B2B等等),並最終建模、部署、執行一些大數據作業。自己來了解使用大數據套件的容易程度——僅讓某個提供商的顧問來為你展示它是如何工作是遠遠不夠的。親自做一個概念驗證。

纏泛性:是否該大數據套件支持廣泛使用的開源標準——不只是Hadoop和它的生態系統,還有通過SOAP和REST web服務的數據集成等等。它是否開源,並能根據你的特定問題易於改變或擴展?是否存在一個含有文檔、論壇、博客和交流會的大社區?

礠性:是否支持所有需要的特性?Hadoop的發行版本(如果你已經使用了某一個)?你想要使用的Hadoop生態系統的所有部分?你想要集成的所有介面、技術、產品?請注意過多的特性可能會大大增加複雜性和費用。所以請查證你是否真正需要一個非常重量級的解決方案。是否你真的需要它的所有特性?

眠阱:請注意某些陷阱。某些大數據套件採用數據驅動的付費方式(「數據稅」),也就是說,你得為自己處理的每個數據行付費。因為我們是在談論大數據,所以這會變得非常昂貴。並不是所有的大數據套件都會生成本地Apache Hadoop代碼,通常要在每個Hadoop集群的伺服器上安裝一個私有引擎,而這樣就會解除對於軟體提供商的獨立性。還要考慮你使用大數據套件真正想做的事情。某些解決方案僅支持將Hadoop用於ETL來填充數據至數據倉庫,而其他一些解決方案還提供了諸如后處理、轉換或Hadoop集群上的大數據分析。ETL僅是Apache Hadoop和其生態系統的一種使用情形。

決策樹:框架vs.發行版本vs.套件

現在,你了解了Hadoop不同選擇之間的差異。最後, 讓我們總結並討論選擇Apache Hadoop框架、Hadoop發行版本或大數據套件的場合。

下面的「決策樹」將幫助你選擇合適的一種:

Apache:
映恛癎理解底層細節?
專家?自己選擇和配置?

發行版本:
容易的設置?
初學(新手)?
部署工具?
膗商業支持?

大數據套件:
不同數據源集成?
膗商業支持?
代碼生成?
大數據作業的圖形化調度?
鳩現大數據處理(集成、操作、分析)?

結論

Hadoop安裝有好幾種選擇。你可以只使用Apache Hadoop項目並從Hadoop生態系統中創建自己的發行版本。像Cloudera、Hortonworks或MapR這樣的Hadoop發行版本提供商為了減少用戶需要付出的工作,在Apache Hadoop之上添加了如工具、商業支持等特性。在Hadoop發行版本之上,為了使用如建模、代碼生成、大數據作業調度、所有不同種類的數據源集成等附加特性,你可以使用一個大數據套件。一定要評估不同的選擇來為自己的大數據項目做出正確的決策。

作者簡介

Kai W梔渀攀爀 是Talend公司的首席顧問。他擅長的主要領域是Java EE、SOA、雲計算、業務流程管理(BPM)、大數據以及企業架構管理。他還在像JavaOne、ApacheCon或OOP這樣的國際IT會議上做演講,為專業期刊撰文,並在博客上分享自己的經驗。你可以在他的網站上找到更多詳細信息和參考資料(演示文稿、文章、博客文章),可以點擊這裡或是通過Twitter:@KaiWaehner來聯繫他。

查看英文原文:Spoilt for Choice – How to choose the right Big Data / Hadoop Platform?

轉自 http://www.infoq.com/cn/articles/BigDataPlatform

本文來自ChinaUnix新聞頻道,如果查看原文請點:http://news.chinaunix.net/opensource/2013/1009/2966224.shtml

[火星人 ] 如何挑選合適的大數據或Hadoop平台?已經有651次圍觀

http://coctec.com/docs/service/show-post-3914.html