HPCC 和 Hadoop 的詳細比較

類別: IT

硬體環境

通常使用基於Intel或AMD CPU的刀鋒伺服器來構建叢集系統,為了降低成本可以使用已經停止銷售的過時硬體。節點有本地記憶體和硬碟,通過高速交換機相連(通常為千兆交換機),如果叢集節點很多,也可以使用分層交換。叢集內的節點是對等的(所有資源可以簡化為相同配置),但這一點並非必須。

作業系統

Linux或windows

系統配置

實現HPCC叢集用兩種配置:資料加工(Thor)類似於Hadoop的MapReduce叢集;資料分發引擎(Roxie)提供了獨立的高效能線上查詢處理功能和資料倉儲功能。兩種配置都可以用做分散式檔案系統,不過它們試圖提高效能的實現方法不同。HPCC環境通常由兩種配置型別的多個叢集組成。雖然每個叢集上的檔案系統相互獨立,但是一個叢集可以訪問同一環境下位於其他叢集上的檔案系統內的檔案。

Hadoop系統軟體使用MapReduce處理範例實現了叢集。這樣的叢集也可以用做執行HDFS的分散式檔案系統。其他的功能都處Hadoop的MapReduce和Hbase,Hive等檔案系統軟體之上。

授權和維護費用

HPCC:社團版本是免費的。企業版授權費用目前取決於叢集大小和系統配置的型別。

Hadoop:免費,不過有多個廠商提供不同的付費的維護服務。

核心軟體

HPCC:如果使用了Thor配置,那麼核心軟體包括安裝在叢集每個節點上的作業系統和多種服務,它們來實現任務的執行和分散式檔案系統的訪問。名字為Dali的獨立伺服器提供檔案系統名字服務和管理HPCC環境下任務的工作單元。Thor叢集可以配置為一個主節點和多個備用節點。Roxie叢集是一個對等連線的叢集,它的每個節點可執行伺服器和執行查詢以及金鑰和檔案處理的任務代理。Roxie叢集的檔案系統使用分散式B+樹來儲存索引和資料,並提供對加密資料的訪問。要對Thor和Roxie叢集進行操作的話,附加的中介軟體元件是不可或缺的。

Hadoop:核心軟體包括作業系統、Hadoop的MapReduce叢集和HDFS軟體。每個備用節點包括任務跟蹤服務和資料節點服務。主節點包括任務追蹤服務,任務追蹤服務可配置為獨立的硬體節點或者執行在一個備用硬體節點。類似地,對HDFS來說,要提供名字服務的話,主名位元組點服務也是必須的,並且可在一個備用的節點或者一個獨立的節點之上執行這個服務。

中介軟體

HPCC:中介軟體包括在MySQL伺服器上實現的ECL程式碼倉庫、編譯ECL程式和查詢的ECL伺服器、ECL代理即Thor叢集上管理任務執行的客戶端程式,ESP伺服器(企業服務平臺),它提供認證、日誌記錄、安全以及執行任務和提供Web服務環境的其他服務,Dali伺服器,它可用作儲存任務工作單元資訊的系統資料和為分散式檔案系統提供名字服務。中介軟體可以靈活地執行在一個到幾個節點上。多個這樣的伺服器可以提供冗餘備份和提高效能。

Hadoop:沒有中介軟體。客戶端軟體可以直接提交任務給叢集主節點的任務追蹤器。作為伺服器執行的Hadoop工作流排程器(HWS)的管理需要多個MapReduce序列的任務的功能正在開發中。

系統工具

HPCC包括用於管理、維護和監視HPCC配置和環境的客戶端和操作工具套件。這個套件包括ECL IDE、程式開發環境、屬性遷移工具、分散式檔案應用(DFU)、環境配置應用和Roxie配置應用。命令列版本也可用。ECLWatch是一個監控HPCC環境的基於Web的應用程式,它包括佇列管理,分散式檔案系統管理、任務監視和系統效能監視工具。其他工具是通過Web服務介面提供的。

Hadoop:dfsadmin工具提供檔案系統的狀態資訊;fsck是一個檢查HDFS上檔案的健康性的應用;資料節點塊掃描器定時地驗證資料節點上所有的儲存塊;平衡器根據需要把超負荷的資料節點上的阻塞重新發布到低負荷的資料節點上。MapReduce的WEB使用者介面包括顯示正在執行的和已經完成的任務資訊的任務追蹤器頁面;對一個具體的任務再向下點選的話就可以看到這個任務的詳細資訊。還有顯示Map和Reduce任務資訊的任務頁面。

易部署 

HPCC:環境配置工具。源伺服器有一個集中式倉庫,它分發作業系統級別的設定、服務和二進位制檔案到配置中所有可網路啟動的節點上。

Hadoop:需要第三方應用嚮導提供的線上工具協助。需要手動部署RPM。

分散式檔案系統

HPCC:Thor的分散式檔案系統是面向記錄的,使用本地Linux檔案系統儲存部分檔案。檔案是跨節點初始化裝載的(提取的),並且每個節點都有一個單獨的部分檔案,對一個分散式檔案來說,這個部分檔案可為空。在由使用者指定的偶數個記錄/文件範圍內對檔案進行分割。主備結構通過儲存在獨立伺服器的名字服務和檔案對映資訊來分割。每個節點只需要一個本地檔案來表示一個分散式檔案。同一環境下多個叢集之間也支援讀寫訪問許可權設定。使用特定的介面卡允許訪問來自外部資料庫的比如MySQL的檔案,允許事務資料與分散式檔案資料合併且併入批處理的任務中。Roxie分散式檔案系統使用了分散式B+樹索引檔案,這樣的檔案包含了鍵值資訊和儲存在每個節點的本地檔案裡的資料。

Hadoop:面向塊的,大多數安裝使用大小為64MB或者128MB的塊。塊是以節點的本地Unix/Linux檔案系統的獨立單元/本地檔案儲存的。每個塊的後設資料資訊儲存為一個獨立的檔案。主備結構使用了單獨的名位元組點提供名字服務和塊對映,並且使用了多個資料節點。檔案劃分為塊並且分佈地儲存在叢集的各個節點。跨節點儲存在一個節點上每個邏輯塊的多個本地檔案(一個用來儲存塊資料、一個用來儲存後設資料)來表示一個分散式檔案。

容錯性

HPCC:Thor和Roxie的分散式檔案系統(可配置)在其他節點上儲存了部分檔案的副本,以防止磁碟或者節點失效。Thor系統在一個節點失效之後提供了要麼自動要麼手動的切換和熱啟動,任務從最近一次檢查點重新啟動或者繼續執行。當複製資料到一個新的節點的時候,副本的製作自動進行。Roxie系統在減少節點數而引起節點失效時繼續執行。

Hadoop:HDFS(可配置)在其他節點上儲存(使用者指定的)多個副本,以防止由於自動恢復出現的磁碟或節點失效。MapReduce架構包括了試探性執行,當檢測到一個慢的或者失敗的Map任務時,其他Map任務將從失效的節點處開始恢復。

執行任務的環境

HPCC:Thor使用了主備處理結構。ECL任務定義的處理步驟可以指定本地操作(資料在每個節點上獨立處理)或者全域性(資料跨所有節點處理)操作。為了對編譯的ECL資料流程式的執行進行優化,一個過程的多個處理步驟可作為一個單獨任務的一部分自動地執行。如果每個節點的CPU和記憶體資源可滿足要求的話,那麼為了減少時延,一個單獨的Thor叢集可配置為並行地執行多個任務。包括ECL代理、ECL伺服器和Dali伺服器的中介軟體提供了客戶端介面,並管理作為工作單元打包的任務的執行。Roxie使用了多個伺服器/代理的結構處理ECL程式,每個查詢把伺服器任務當作管理者,多個代理任務在需要的時候獲取和處理這個查詢的資料。

Hadoop:對輸入的鍵值對資料使用MapReduce處理範例。是主備處理結構。任務追蹤器執行在主節點上,任務追蹤器執行在每個備用節點上。給Map任務指定輸入檔案的輸入分支,通常一個塊一個任務。Reduce任務數由使用者指定。對指定的節點來說,Map處理是在本地執行的。移動和排序操作是隨著Map的階段來進行的,它用來分發和排序鍵值對給鍵區所對應的Reduce任務,這樣具有同一鍵的鍵值對由同一個Reduce任務處理。對大多數過程來說,多個MapReduce處理步驟通常是必須的,並且一定是單獨由使用者或者語言比如Pig來排序和串接的。

程式語言

HPCC:ECL是HPCC環境的主要程式語言。ECL編譯為優化的C++,然後再編譯為在Thor和Roxie平臺上可執行的DLL。ECL的包括封裝在函式裡的內聯的C++程式碼。外部服務可以用任何語言書寫,並且編譯為ECL可呼叫的函式共享庫。管道介面允許執行用任何語言寫的合併到任務裡的外部程式。

Hadoop的MapReduce任務通常用Java書寫。其他語言的支援是通過流或者管道介面來實現的。其他處理環境是在Hadoop的MapReduce之上執行的,比如HBase和Hive,它們擁有自身的語言介面。Pig拉丁語言和Pig執行環境提供了高階別的資料流語言,然後把這種語言對映到到多個Java書寫的MapReduce任務上。

整合程式設計開發環境

HPCC平臺提供了ECL整合開發環境,一個綜合的特別針對ECL語言的整合開發環境。ECL整合開發環境提供了對共享原始碼倉庫的訪問,還提供了開發ECL資料流程式的完整的開發和測試環境。對ECLWatch工具的訪問是內建的,它允許開發人員檢視任務的執行狀況。對當前和歷史任務的工作單元的訪問也提供了,它允許開發人員在開發週期期間很容易地對一個任務和下一個任務的結果進行比較。

Hadoop MapReduce使用了Java程式語言,有幾個優秀的Java程式設計開發環境,包括NetBeans和Eclipse,它們提供了訪問Hadoop叢集的外掛。Pig環境沒有自己的整合開發環境,不過可以使用Eclipse和其他編輯環境進行語法檢查。Eclipse的pigPen附加元件提供了對Hadoop叢集的訪問,這樣可以在Hadoop叢集上執行Pig程式和其他的開發功能。

資料庫功能

HPCC 平臺包括在分散式檔案系統上構建多個鍵、多個域(也就是複合)索引的功能。這些索引可以用來提高效能,並且提供了Thor系統上批處理任務的關鍵字訪問,或者用來支援部署到Roxie系統上的查詢的開發。ECL語言直接支援資料的關鍵字訪問。

基本的Hadoop的MapReduce不提供任何根據關鍵字訪問索引資料庫的功能。Hadoop附加的名字為HBase的系統提供了面向列關鍵字訪問的資料庫功能。定製指令碼語言和Java介面也提供了。Pig環境不直接支援對HBase的訪問,它需要使用者定義的函式或者各自的MapReduce過程。

線上查詢和資料倉儲功能

HPCC平臺上的Roxie系統配置特別設計用來為結構化查詢和資料分析應用提供資料倉儲的功能。Roxie是一個高效能的平臺,它能支援數千使用者,並且提供取決於應用的亞秒響應時間。

基本的Hadoop的MapReduce系統不提供任何資料倉儲功能。Hadoop的一個附加系統Hive提供資料倉儲功能,並且允許裝在HDFS到表裡,然後使用類SQL的語言訪問。Pig環境不直接支援對Hive的訪問,它需要使用者定義的函式或者各自的MapReduce過程。

擴充套件性

HPCC:一個到幾千個節點。實際上,HPCC配置需要非常少的節點就可以提供Hadoop叢集相同的處理效能。不過叢集的大小可能取決於分散式檔案系統的整體儲存需求。

Hadoop:一個到數千個節點。

效能

已經證明HPCC平臺在高效能的400個節點系統上102秒內對1TB的資料完成排序。在最近一次對執行在另外400個節點系統上的Hadoop進行了實力相當的基準測試,HPCC效能是6分27秒,而Hadoop的效能是25分鐘28秒,同樣的硬體配置的結果表明HPCC的基準測試比Hadoop快3.95倍。

Hadoop:當前唯一可用的標準效能基準測試是由http://sorbenchmark.org所贊助的排序基準測試。雅虎已經證明在1460個節點上排序1TB資料是62秒,3450個節點排序100TB的資料是173分鐘,3658個節點排序1PB資料是975分鐘。

培訓

HPCC:每月在幾個地方都提供ECL程式設計的基礎培訓和高階培訓的課程,或者由客戶確定基礎和高階課程的指導。 http://learn.lexisnexis.com/hpcc上的課程仍然可線上觀看。系統管理員課程也根據需要提供和調整。可在單獨的PC或者膝上型電腦的具有完整HPCC和ECL學習環境的免費的HPCC VM映像也可用。

Hadoop培訓是由第三方提供的。入門級和高階的課程都有提供。高階課程包括Hadoop附加的元件HBase和Pig。另外一個第三方還提供了可用在標準的膝上型電腦或者PC上的VMWare基礎學習環境。線上教程也可以使用。
HPCC 和 Hadoop 的詳細比較原文請看這裡

推薦文章