大數據、Hadoop核心框架和MapReduce原理

大數據和大數據框架

大數據解決的是單機無法處理的數據。無論是存儲數據還是計算數據都變得困難無比,大數據框架的出現就是為了解決這個問題,讓使用者可以像使用本地主機一樣使用多個計算機的處理器,像使用一個本地磁盤一樣使用一個大規模的存儲集群。

離線計算和實時計算

離線計算多用於模型的訓練和數據預處理,最經典的就是|Hadoop和MapReduce;

實時計算框架是要求立即返回計算結果的,快速響應請求,如Strom、Spark Streaming等框架,多用於簡單的累積計數和基於訓練好的模型進行分類等操作。

Hadoop 核心框架

大數據、Hadoop核心框架和MapReduce原理

(1)Hadoop Common

Hadoop的核心功能,對其他的Hadoop模塊做支撐,包含了大量的對底層文件、網絡的訪問,對數據類型的支持,以及對象的序列化、反序列化的操作支持等。

(2)Hadoop Distributed File System(HDFS)

Hadoop 分佈式文件系統,用來存儲大量的數據。

(3)Hadoop YARN

一個任務調度和資源管理的框架。

(4)Hadoop MapReduce

基於YARN的並行大數據處理組件。

大數據、Hadoop核心框架和MapReduce原理

一般把Hadoop Common、HDFS、YARN、MapReduce這四部分統稱為Hadoop 框架,而在Hadoop 生態環境中,還有進行SQL 化管理HDFS的Hive 組件,支持OLTP業務的NoSQL 分佈式數據庫HBase組件,進行圖形界面管理的Ambari組件等。

MapReduce原理

MapReduce是解決並行任務的一種模型,將一個可拆解的任務分散到多個計算節點進行計算,最後合併計算結果。

MapReduce背後的思想很簡單,就是把一些數據通過map來歸類,通過reducer來把同一類的數據進行處理。

大數據、Hadoop核心框架和MapReduce原理

Map階段:首先是讀數據,數據來源可能是文本文件,表格,MySQL數據庫。這些數據通常是成千上萬的文件(叫做shards),這些shards被當做一個邏輯輸入源。然後Map階段調用用戶實現的函數,叫做Mapper,獨立且並行的處理每個shard。對於每個shard,Mapper返回多個鍵值對,這是Map階段的輸出。

Shuffle階段:把鍵值對進行歸類,也就是把所有相同的鍵的鍵值對歸為一類。這個步驟的輸出是不同的鍵和該鍵的對應的值的數據流。

Reduce階段: 輸入當然是shuffle的輸出。然後Reduce階段調用用戶實現的函數,叫做Reducer,對每個不同的鍵和該鍵的對應的值的數據流進行獨立、並行的處理。每個reducer遍歷鍵對應的值,然後對值進行“置換”。這些置換通常指的的是值的聚合或者什麼也不處理,然後把鍵值對寫入數據庫、表格或者文件中。


分享到:


相關文章: