1. 程式人生 > >萬億資料下Hadoop的核心競爭力

萬億資料下Hadoop的核心競爭力

1.前言

在大資料時代,Hadoop有著得天獨厚的優勢。然而,每個企業的技術儲備和需求特點不同,他們希望從海量的客戶資料中挖掘真正的商業價值,像Google、Facebook、Twitter等這樣的企業更是Hadoop的最早獲益者。那麼,今天我們就來聊一聊,萬億資料下Hadoop的核心競爭力。

2.什麼是Hadoop?

在瞭解Hadoop之前,不得不說的一個名詞——“大資料”。大資料是時代發展和技術進步的產物,大資料的特徵如下:

  • 龐大的資料容量;
  • 結構化、半結構化、非結構化的資料型別;
  • 高效的處理速度
  • 高質量的資料

Hadoop由Apache基金會孵化並開源的分散式系統,使用者可以在不瞭解分散式底層設計的情況下,開發分散式應用程式,充分利用叢集的優勢來進行高速的運算和儲存。自從Hadoop作為Apache基金會開源專案釋出以來,它一直備受青睞,這得益於Hadoop的可擴充套件性、低成本、靈活的處理模式等特點。

3.萬億資料下的難點?

資料量達到萬億規模,這已經是一個很龐大的資料量了。這裡難點我們可以分為兩種情況,一種是原理上不知道怎麼處理,沒有具體的實施方案,這個屬於技術難題。另一種,雖然有具體的實施方案,也明白其中的原理,但是資料規模太過龐大,這個屬於工程上的難點。

資料規模龐大帶來的難點主要體現在分散式的要求,因為單個節點不足以在有效的成本和規定的時間內處理完所有的資料。簡而言之:

  • 並行化問題:處理資料的應用程式要改造成適合並行的方式;
  • 資源分配管理問題:如何有效的管理提交任務的資源,記憶體、網路、磁碟等;
  • 容錯問題:隨著機器數量的增加,可靠性如何保證,例如部分機器硬體出錯導致不可用,最終結果的完整性和正確性如何保證。

4.Hadoop的組成部分有哪些?能做什麼?

截止至本篇文章,Hadoop社群釋出了Hadoop-3.2.0版本,其核心組成部分包含:基礎公共庫(Common)、分散式檔案儲存系統(HDFS)、分散式計算框架(MapReduce)、分散式資源排程與管理系統(YARN)、分散式物件儲存框架(OZone)、機器學習引擎(Submarine)。

4.1 Hadoop Common

Hadoop Common屬於基礎公共庫,它是Hadoop最底層的一個模組,為Hadoop各個子專案提供各種工具,例如配置檔案、操作日誌等。

4.2 Hadoop Distributed File System

Hadoop Distributed File System簡稱HDFS,它是Hadoop的一個分散式檔案系統,類似於Amazon的S3系統,Google的GFS系統。

HDFS可以處理分佈在叢集中的大檔案,它通過將檔案分成資料塊來完成此操作。同時,我們可以並行訪問分散式資料(例如,在進行資料處理時),各個資料節點進行資料互動形成資料塊的副本。

 

4.3 Hadoop YARN

YARN是Hadoop的一個分散式資源管理框架,可以為上層應用提供統一的資源管理與排程。通過引入YARN,Hadoop叢集在資源利用率、資源統一管理、資料共享等方面帶來了巨大的好處。

Client應用提交任務到YARN,流程如下:

  1. Client傳送請求給RM
  2. ResourceManager(簡稱RM)返回ApplicationId給Client
  3. Client傳送ApplicationId、QueueName、使用者等資訊給RM
  4. RM尋找合適的Container,並將Client提交的資訊給NodeManager(簡稱NM)
  5. 然後在NM中啟動AM,RM給AM分配最大最小資源
  6. AM從RM那裡獲取的可使用資源來申請一些Container
  7. Job在Container中執行,由AM返回任務進度,任務執行完成後,AM向RM傳送結束任務資訊然後退出

4.4 Hadoop MapReduce

MapReduce是Hadoop的一個分散式計算框架,用來處理海量資料。同時,還可以使用MapReduce框架來實現一些演算法,例如統計單詞頻率、資料去重、排序、分組等。

4.5 Hadoop OZone

Ozone是Hadoop的可擴充套件、冗餘和分散式物件儲存。除了擴充套件到數十億不同大小的物件外,OZone還能在Kubernetes和YARN等容器環境中有效發揮作用。

  • 可擴充套件性:OZone設計之初能夠擴充套件到數百億個檔案和資料塊,並且在將來會擴充套件到更多;
  • 一致性:OZone是一個強一致性物件儲存,它所使用的協議是類似於RAFT來實現的;
  • 雲集成:OZone設計之初能夠與YARN和Kubernetes整合使用;
  • 安全性:OZone能夠與Kerberos整合,用於控制訪問許可權,並支援TDE和線上加密;
  • 多協議支援:OZone能夠支援不同的協議,例如S3、HDFS;
  • 高可用:OZone是一個多副本系統,用於保證資料高可用性。

4.6 Hadoop Submarine

Submarine是一個允許基礎設施工程師/資料科學家在資源管理平臺(如YARN)上執行深度學習應用程式(Tensorflow,Pytorch等)的專案。

  • 在已有叢集執行:Submarine支援在YARN、Kubernetes或者其他類似的排程框架中使用;
  • 支援多種框架:Submarine支援多種機器學習框架,例如TensorFlow、Pytorch、MxNet等;
  • 覆蓋整個ML:Submarine不僅僅是一個機器學習引擎,它涵蓋了整個機器學習過程,例如演算法開發、模型批量訓練、模型增量訓練、模型線上服務和模型管理。

5.Hadoop的核心競爭力在哪?

Hadoop如此受人喜歡,很大程度上取決於使用者對大資料儲存、管理和分析需求的迫切。大資料是目前很多企業面臨的一個挑戰,由於資料量的龐大、資料型別的複雜 ,特別是非結構化或者半結構化的資料遠遠多於結構化的資料,一些傳統的基於關係型資料庫的儲存和分析難以滿足時,且關係型資料庫巨大成本壓力也是很多企業考慮的問題,而Hadoop給人們提供瞭解決大資料問題的技術手段。

大資料時代需要Hadoop,那麼Hadoop的核心競爭力在哪呢?

5.1 降低大資料成本

Hadoop使企業可以高效的管理資料,以降低資料成本,其中包含業務成本、硬體成本、人工成本、儲存成本等。通過易用性、權威性、時效性等特性,Hadoop還可以幫助使用者增加資料價值。目前Hadoop社群的支援,以及各大Hadoop廠商的支援,使得Hadoop從一個單獨的開源軟體逐步演變成一個具有一定規模的生態系統,這些廠商包含Cloudera、MapR、Hortonworks等,他們在這一生態系統中扮演著不同的角色,例如有系統廠商、監控服務商、資料分析商等。

而使用者可以從這些廠商中提供的系統來簡化Hadoop的學習成本,快速構建符合自身要求的大資料平臺,同時合理利用廠商提供的附屬元件來開發出高效、易用的的大資料應用。

5.2 成熟的Hadoop生態圈

Hadoop不是一個“孤島”系統,它擁有成熟的Hadoop生態圈。

利用Hadoop生態圈設計滿足自身需求的方案,需要考慮一些關鍵要素:

  1. 從需求的最終結果開始分析,而不是從可用的工具開始。例如,可用性、一致性等;
  2. 對資料處理時效性的評估,例如離線任務(MapReduce、Hive)、實時任務(Flink、Spark Streaming);
  3. 儘可能使用成熟的方案。

1.案例一:獲取最後一小時的熱門連結

將熱門連結集中收集,使用Flume將連結傳送到Kafka,然後使用Flink或者Spark Streaming計算引擎在1小時的視窗內分析資料,最後將計算後的結果寫入到HBase進行儲存。

2.案例二:為使用者推薦電影

這是一個實時場景,使用者喜歡電影,那麼使用者應立即看到相關電影。

解決思路:每次使用者給出評級時,計算建議都是包含權重的,因此我們應該定期根據現有使用者行為計算建議。根據對使用者行為的理解,可以為給定使用者預測所有電影的推薦,然後對其進行排序,並過濾使用者已經開過的內容。

元件選取:資料庫可以使用NoSQL資料庫,例如HBase。來儲存使用者評級。計算引擎方面可以選擇Flink或者Spark ML通過Oozie定時排程來重新計算使用者電影推薦。然後,使用Flume和Spark Streaming用於流式傳輸和處理實時使用者行為。

工作流程:Web伺服器將使用者評級傳送給Flume,後者將其傳遞給Spark Streaming,然後將結果儲存到HBase中。接著,使用Oozie定時排程執行Spark ML應用來重新計算電影推薦並將結果儲存到HBase中。

6.是否一定要選擇Hadoop?

與傳統資料庫系統相比較,開源的Hadoop有自己的優勢。尤其是Hadoop既能處理關係型資料庫中的結構化資料,也能處理視訊、音訊、圖片等非結構化資料。並且Hadoop還能夠根據資料的規模和問題的複雜度輕鬆的擴充套件。那是不是一定要用Hadoop?

每個企業都有自己的特殊需求,都有自己的技能棧,如果已經購買了成熟的資料庫產品,沒有必要捨棄這些產品,要確保對Hadoop足夠的瞭解,不要盲目的“跟風”。

然而,Hadoop是解決大資料的一種技術手段,這個是一個趨勢,例如Hadoop與AI、IoT等領域的結合使用。瞭解和掌握Hadoop是有所必要的,可以從一些小的專案嘗試積累更多經驗。

7.結束語

這篇部落格就和大家分享到這裡,如果大家在研究學習的過程當中有什麼問題,可以加群進行討論或傳送郵件給我,我會盡我所能為您解答,與君共勉!

另外,博主出書了《Kafka並不難學》和《Hadoop大資料探勘從入門到進階實戰》,喜歡的朋友或同學, 可以在公告欄那裡點選購買連結購買博主的書進行學習,在此感謝大家的支援。關注下面公眾號,根據提示,可免費獲取書籍的教學視訊。