如何挑選合適的大資料或Hadoop平臺?

來源:互聯網
上載者:User
今年,大資料在很多公司都成為相關話題。 雖然沒有一個標準的定義來解釋何為 「大資料」,但在處理大資料上,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專案:


  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發行版本本之上,為了使用如建模、代碼生成、大資料作業調度、所有不同種類的資料來源集成等附加特性,你可以使用一個大資料套件。 一定要評估不同的選擇來為自己的大資料項目目做出正確的決策。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.