數據挖掘的大規模計算
商品硬件問題
挑戰:
- 您如何分配計算?
- 我們怎樣才能使分佈式的編寫變得容易程式?
- 機器故障:
- 一臺服務器可以使用3年(1,000天)
- 如果您有1,000臺服務器,則預計每天1臺存在問題
- 使用1M機器,每天有1000臺機器發生故障!
問題和解決方案
問題:通過網絡複製數據需要時間
理念:
- 將計算帶入數據
- 多次存儲文件以提高可靠性
Spark / Hadoop解決了這些問題
- 存儲基礎架構–文件系統
- Google:GFS。 Hadoop:HDFS
- 編程模型
- MapReduce
- Spark
存儲基礎架構
問題:
如果節點發生故障,如何持久存儲數據?
答:
- 分佈式文件系統
- 提供全局文件名稱空間 Provides global file namespace
典型用法:
- 巨大的文件(GB到TB的100s)
- 數據很少到位更新
- 閱讀和追加很常見
分佈式文件系統
塊服務器
- 文件分爲連續的塊
- 通常每個塊是16-64MB
- 複製的每個塊(通常爲2x或3x)
- 嘗試將副本保存在不同的機架中
主節點
- 亦稱Hadoop HDFS中的名稱節點
- 存儲有關文件存儲位置的元數據
- 可能被複制
用於文件訪問的客戶端庫
- 與主對話以查找塊服務器
- 直接連接到塊服務器以訪問數據
- 可靠的分佈式文件系統
- 數據以“塊”形式分佈在計算機之間
- 每個塊都在不同的計算機上覆制
- 從磁盤或計算機故障中無縫恢復
MapReduce是一種編程風格
設計用於:
- 簡單的並行編程
- 硬件和軟件的無形管理
失敗
- 輕鬆管理超大規模數據
它有幾種實現,包括Hadoop,Spark(在此類中使用),Flink和最初的Google實現只稱爲“ MapReduce”
3 steps of MapReduce
- Map
- Group by key
- Reduce:
MapReduce範式
並行
模式
Spark
是最流行的數據流系統 Data-Flow Systems
彈性分佈式數據集
Resilient Distributed Dataset (RDD)