當前位置:編程學習大全網 - 熱門推薦 - 如何挑選合適的大數據或haoop平臺

如何挑選合適的大數據或haoop平臺

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

Hadoop平臺的多種選擇

下圖展示了Hadoop平臺的多種選擇。妳可以只安裝Apache 發布版本,或從不同提供商所提供的幾個發行版本中選擇壹個,或決定使用某個大數據套件。每個發行版本都包含有Apache Hadoop,而幾乎每個大數據套件都包含或使用了壹個發行版本,理解這壹點是很重要的。

相關廠商內容

AWS中眾多存儲選項、理想使用情況及彈性和可擴展性等特性。 有哪些實現EMR最佳實踐的方法和實現更快處理速度的常見架構模式。 Windows Azure從開發到部署的自動化進程 微軟Windows Azure開啟機器學習之旅 基於開源軟件的Azure平臺大規模系統構建

相關贊助商

Windows Azure專區上線,全面了解雲服務精彩呈現!

下面我們首先從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項目:

Pig:分析大數據集的壹個平臺,該平臺由壹種表達數據分析程序的高級語言和對這些程序進行評估的基礎設施壹起組成。

Hive:用於Hadoop的壹個數據倉庫系統,它提供了類似於SQL的查詢語言,通過使用該語言,可以方便地進行數據匯總,特定查詢以及分析存放在Hadoop兼容文件系統中的大數據。

Hbase:壹種分布的、可伸縮的、大數據儲存庫,支持隨機、實時讀/寫訪問。

Sqoop:為高效傳輸批量數據而設計的壹種工具,其用於Apache Hadoop和結構化數據儲存庫如關系數據庫之間的數據傳輸。

Flume:壹種分布式的、可靠的、可用的服務,其用於高效地搜集、匯總、移動大量日誌數據。

ZooKeeper:壹種集中服務,其用於維護配置信息,命名,提供分布式同步,以及提供分組服務。

還有其他壹些項目。

妳需要安裝這些項目,並手動地將它們集成到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發行版本之上,為了使用如建模、代碼生成、大數據作業調度、所有不同種類的數據源集成等附加特性,妳可以使用壹個大數據套件。壹定要評估不同的選擇來為自己的大數據項目做出正確的決策。

  • 上一篇:dnf寵物膠囊怎麽獲得
  • 下一篇:麒麟9000l和麒麟9000性能對比
  • copyright 2024編程學習大全網