大数据技术原理与应用学习笔记(八)
大數據技術原理與應用學習筆記(八)
- 本系列歷史文章
- Hadoop再探討
- Hadoop的優化與發展
- Hadoop1.0到Hadoop2.0
- 不斷完善的Hadoop生態系統
- HDFS2.0新特性
- HDFS HA(高可用性)
- HDFS Federation
- YARN——新一代資源管理調度框架
- MapReduce1.0中的缺陷
- YARN設計思路
- YARN體系結構
- ResourceManager
- ApplicationMaster
- NodeManager
- YARN的工作流程
- 與MapReduce1.0的對比
- YARN的發展目標
- Hadoop生態系統中具有代表性的功能組件
- Pig
- Pig的概念與特點
- Pig的應用場景
- Tez
- Tez的概念與特點
- Spark和Kafka
- Spark
- Kafka
本系列歷史文章
大數據技術原理與應用學習筆記(一)
大數據技術原理與應用學習筆記(二)
大數據技術原理與應用學習筆記(三)
大數據技術原理與應用學習筆記(四)
大數據技術原理與應用學習筆記(五)
大數據技術原理與應用學習筆記(六)
大數據技術原理與應用學習筆記(七)
Hadoop再探討
Hadoop的優化與發展
在Hadoop1.0中仍存在很多不足:
- 抽象層次低,需人工編碼
- 表達能力有限
- 開發著自己管理Job間的依賴關系
- 難以看到程序的整體邏輯
- 執行迭代效率低
- 資源浪費
- 實時性差
采取的改進措施如下: - 改進自身的核心組件(MapReduce和HDFS)
- 其他組件的不斷豐富(Pig、Tez、Spark、Kafka)
Hadoop1.0到Hadoop2.0
Hadoop更新到2.0后,以下方面做出了很大更新:
HDFS:
- 由原來的單一名稱節點(存在單點失效問題),增添設計了HDFS HA,提供名稱節點熱備份機制;
- 由原來的單一命名空間(存在無法實現資源管理),增添設計了HDFS Federation來管理多個命名空間。
MapReduce: - 由原來的資源管理效率低,增添設計了管理框架YARN。
不斷完善的Hadoop生態系統
在Hadoop的優化和發展中,越來越多的組件被包含在Hadoop生態系統中,使得Hadoop平臺的性能提升許多。
| Pig | 處理大規模數據的腳本語言,用戶只需編寫幾條語句,系統會自動轉換為MapReduce作業(可用來解決需人工編碼的不足) |
| Spark | 基于內存的分布式并行編程框架,具有較高的實時性,并且較好的支持迭代計算(可用來解決迭代效率低的不足) |
| Oozie | 工作流和協作服務引擎,協調Hadoop上運行的不同任務(解決開發者自己管理Job間依賴關系的不足) |
| Tez | 支持DAG作業的計算,對作業的操作進行重新分解和組合,形成DAG作業,減少不必要的操作(解決重復操作的不足) |
| Kafka | 分布式發布訂閱消息系統,一般作為企業大數據分析平臺的數據交換樞紐,不同類型的分布式系統可以接入到Kafka,實現和Hadoop各組件之間不同類型數據的實時高效交換(解決了Hadoop組件和其他產品間缺乏統一、搞笑的數據交換中介) |
HDFS2.0新特性
HDFS HA(高可用性)
HDFS HA(High Availability)是為了解決單點故障問題。HA集群設置兩個名稱節點,“活躍(Active)”和“待命(Standby)”。兩種名稱節點的狀態同步,可以借助于一個共享存儲系統來實現。一旦活躍名稱節點出現故障,就可以立即切換到待命名稱節點。Zookeeper確保一個名稱節點在對外服務。名稱節點維護映射信息,數據節點同時向兩個名稱節點匯報信息。
HDFS Federation
在Hadoop1.0中,仍然存在以下問題:
- 不可水平擴展;
- 單點故障(由HDFS HA解決);
- 系統整體性能受單個名稱節點吞吐量限制;
- 單個名稱節點難以提供不同程序間隔離性。
由此設計出了HDFS Federation,其設計了多個相互獨立的名稱節點,使HDFS命名空間可以橫向擴展,不是真正的分布式設計,但遠低于分布式設計的復雜性等。
所有名稱節點共享底層數據節點的存儲資源,擁有多個獨立命名空間管理屬于自己的一組塊(塊池)。
采取客戶端掛載表訪問
比Hadoop1.0的優勢:
- HDFS集群可擴展性
- 系統整體性能高
- 良好的隔離性
YARN——新一代資源管理調度框架
MapReduce1.0中的缺陷
- 存在單點故障
- JobTracker“大包大攬”任務過重
- 容易出現內存溢出
- 資源劃分不合理
YARN設計思路
將原來的JobTracker拆分(原Master端)
- 資源管理→ResourceManager
- 任務調度→ApplicationMaster
- 任務監控→ApplicationMaster
YARN體系結構
ResourceManager
- 處理客戶端請求
- 啟動、監控ApplicationMaster
- 資源分配與調度
- 監控NodeManager
ApplicationMaster
- 為應用程序申請資源,并分配給內部任務
- 任務監控、調度與容錯
NodeManager
- 單個節點上的資源管理
- 處理來自ResourceManager的命令
- 處理來自ApplicationMaster的命令
YARN的工作流程
- 首先由用戶編寫客戶端應用程序,向YARN提交;
- YARN中,ResourceManager 負責接受和處理來自客戶端的請求,為其分配一個容器,并在其中啟動一個ApplicationMaster;
- 啟動后,向ResourceManager注冊;
- ApplicationMaster輪詢向ResourceManager申請資源;
- ResourceManager以“容器”形式向ApplicationMaster申請資源;
- 在容器中啟動任務(二次分配后)
- 各任務向ApplicationMaster匯報自己的狀態和進度;
- 運行完成后ApplicationMaster向ResourceManager的應用程序管理器注銷并關閉自己。
與MapReduce1.0的對比
優勢:
- YARN減少了中心服務功能ResourceManager的資源消耗
- YARN是純粹的資源調度管理框架
- YARN中的資源管理比MapReduce1.0更加高效
YARN的發展目標
實現 “一個集群,多個框架” 。
Hadoop生態系統中具有代表性的功能組件
Pig
Pig的概念與特點
- 提供了類似SQL的Pig Latin語言,允許用戶通過編寫簡單的腳本來實現復雜的數據分析,而不需要編寫復雜的MapReduce應用程序
- Pig會自動把用戶編寫的腳本轉換成MapReduce作業在Hadoop集群上運行,而且具備對生成的MapReduce程序進行自動優化的功能(用戶在編寫Pig程序的時候,不需要關心程序的運行效率,這就大大減少了用戶編程時間)
- 通過配合使用Pig和Hadoop,在處理海量數據時就可以實現事半功倍的效果,比使用Java、C++等語言編寫MapReduce程序的難度要小很多,并且用更少的代碼量實現了相同的數據處理分析功能
Pig的應用場景
- 數據查詢只面向相關技術人員
- 即時性的數據處理需求,這樣可以通過pig很快寫一個腳本開始運行處理,而不需要創建表等相關的事先準備工作
Tez
Tez的概念與特點
- Tez是Apache開源的支持DAG作業的計算框架,它直接源于MapReduce框架
- 核心思想是將Map和Reduce兩個操作進一步拆分(Map被拆分成Input、Processor、Sort、Merge和Output) Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等
- 分解后的元操作可以任意靈活組合,產生新的操作。這些操作經過一些控制程序組裝后,可形成一個大的DAG作業
- 通過DAG作業的方式運行MapReduce作業,提供了程序運行的整體處理邏輯,就可以去除工作流當中多余的Map階段,減少不必要的操作,提升數據處理的性能
Spark和Kafka
Spark
Spark最初誕生于伯克利大學的APM實驗室,是一個可應用于大規模數據處理的快速、通用引擎,如今是Apache軟件基金會下的頂級開源項目之一。Spark在借鑒Hadoop MapReduce優點的同時,很好地解決了MapReduce所面臨的問題。Spark最大的特點是內存計算,帶來了更高的迭代運算效率
其基于DAG的任務調度執行機制,優于MapReduce的迭代執行機制。所以當前,Spark正以其結構一體化、功能多元化的優勢,逐漸成為當今大數據領域最熱門的大數據計算平臺。關于Spark后面的學習筆記還會提到。
Kafka
Kafka是一種高吞吐量的分布式發布訂閱消息系統,用戶通過Kafka系統可以發布大量的消息,同時也能實時訂閱消費消息。Kafka可以同時滿足在線實時處理和批量離線處理。
總結
以上是生活随笔為你收集整理的大数据技术原理与应用学习笔记(八)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 提取字典的子集
- 下一篇: java 常见bug_java常见bug