大數據解決的是單機無法處理的數據。無論是存儲數據還是計算數據都變得困難無比,大數據框架的出現就是為了解決這個問題,讓使用者可以像使用本地主機一樣使用多個計算機的處理器,像使用一個本地磁盤一樣使用一個大規模的存儲集群。
離線計算和實時計算離線計算多用于模型的訓練和數據預處理,最經典的就是|Hadoop和MapReduce;
實時計算框架是要求立即返回計算結果的,快速響應請求,如Strom、Spark Streaming等框架,多用于簡單的累積計數和基于訓練好的模型進行分類等操作。
Hadoop 核心框架
(1)Hadoop Common
Hadoop的核心功能,對其他的Hadoop模塊做支撐,包含了大量的對底層文件、網絡的訪問,對數據類型的支持,以及對象的序列化、反序列化的操作支持等。
(2)Hadoop Distributed File System(HDFS)
Hadoop 分布式文件系統,用來存儲大量的數據。
(3)Hadoop YARN
一個任務調度和資源管理的框架。
(4)Hadoop MapReduce
基于YARN的并行大數據處理組件。
一般把Hadoop Common、HDFS、YARN、MapReduce這四部分統稱為Hadoop 框架,而在Hadoop 生态環境中,還有進行SQL 化管理HDFS的Hive 組件,支持OLTP業務的NoSQL 分布式數據庫HBase組件,進行圖形界面管理的Ambari組件等。
MapReduce原理MapReduce是解決并行任務的一種模型,将一個可拆解的任務分散到多個計算節點進行計算,最後合并計算結果。
MapReduce背後的思想很簡單,就是把一些數據通過map來歸類,通過reducer來把同一類的數據進行處理。
Map階段:首先是讀數據,數據來源可能是文本文件,表格,MySQL數據庫。這些數據通常是成千上萬的文件(叫做shards),這些shards被當做一個邏輯輸入源。然後Map階段調用用戶實現的函數,叫做Mapper,獨立且并行的處理每個shard。對于每個shard,Mapper返回多個鍵值對,這是Map階段的輸出。
Shuffle階段:把鍵值對進行歸類,也就是把所有相同的鍵的鍵值對歸為一類。這個步驟的輸出是不同的鍵和該鍵的對應的值的數據流。
Reduce階段: 輸入當然是shuffle的輸出。然後Reduce階段調用用戶實現的函數,叫做Reducer,對每個不同的鍵和該鍵的對應的值的數據流進行獨立、并行的處理。每個reducer遍曆鍵對應的值,然後對值進行“置換”。這些置換通常指的的是值的聚合或者什麼也不處理,然後把鍵值對寫入數據庫、表格或者文件中。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!