離線計算就是在計算開始前已知所有輸入數據,輸入數據不會產生變化,且在解決一個問題後就要立即得出結果的前提下進行的計算。在大數據中屬於數據的計算部分,在該部分中與離線計算對應的則是實時計算。
基本介紹
- 中文名:離線計算
- 外文名:Offline calculation
- 基本釋義:在計算前已知全部輸入數據的計算
- 歸屬學科:大數據計算
- 常用計算框架:MapReduce
- 常用基礎架構:Hadoop
離線計算特點,區別,離線計算框架,MapReduce,HDFS,
在離線計算中,使用 Hdfs存儲數據,使用 MapReduce 做批量計算,計算完成的數據如需數據倉庫的存儲,直接存入Hive , 然後從Hive進行展現。
離線計算特點
1) 數據量巨大且保存時間長;
2)在大量數據上進行複雜的批量運算;
3)數據在計算之前已經完全到位,不會發生變化;
4)能夠方便的查詢批量計算的結果;
區別
在實時計算中,輸入數據是可以以序列化的方式一個個輸入並進行處理的,也就是說在開始的時候並不需要知道所有的輸入數據。而對於離線計算,在開始之前就必須知道所有的輸入數據。例如:當用戶請求傳送過來後進行處理或輸出結果的是實時計算,但在用戶請求之前就將數據計算好的是離線計算。由於實時計算不能在整體上把握輸入數據,所以得出的結果可能不是最優解。
同時,離線計算多用於模型的訓練和數據的預處理,最經典的就是Hadoop的MapReduce方式;而實時計算框架是要求立即返回計算結果的,快速回響請求,多用於簡單的累加計算和基於訓練好的模型進行分類等操作。
離線計算框架
Hadoop
Hadoop,是由Yahoo工程師,Apache基金會發起的,MapReduce分散式計算框架+HDFS分散式檔案系統(GFS)+HBase數據存儲系統(BigTable)。數據分散式存儲在磁碟各個節點,計算時各個節點讀取存儲在自己節點的數據進行處理。
優點:
- 高可靠性。Hadoop按位存儲和處理數據的能力值得人們信賴。
- 高擴展性。Hadoop是在可用的計算機集簇間分配數據並完成計算任務的,這些集簇可以方便地擴展到數以千計的節點中。
- 高效性。Hadoop能夠在節點之間動態地移動數據,並保證各個節點的動態平衡,因此處理速度非常快。
- 高容錯性。Hadoop能夠自動保存數據的多個副本,並且能夠自動將失敗的任務重新分配。
- 低成本。與一體機、商用數據倉庫以及QlikView、Yonghong Z-Suite等數據集市相比,hadoop是開源的,項目的軟體成本因此會大大降低。
適用場景:離線大批量數據處理;不需要多次疊代
Spark
由UC Berkley AMP Lab,Apache基金會發起,專為大規模數據處理而設計的快速通用的計算引擎。它基於記憶體計算的並行計算框架,使用記憶體來存儲數據,RDD(彈性分散式數據集),用戶可以指定存儲策略,當記憶體不夠的時候可以放到磁碟上。
特點:
首先,高級 API 剝離了對集群本身的關注,Spark 套用開發者可以專注於套用所要做的計算本身。
其次,Spark 很快,支持互動式計算和複雜算法。
最後,Spark 是一個通用引擎,可用它來完成各種各樣的運算,包括 SQL 查詢、文本處理、機器學習等,而在 Spark 出現之前,我們一般需要學習各種各樣的引擎來分別處理這些需求。
適用場景:離線快速的處理,不能用於處理需要長期保存的數據;適用於多次疊代的計算模型(機器學習模型)
MapReduce
MapReduce 的編程模型,它適用於大規模數據集的並行運算。其基本思想是將問題分解成 Map ( 映射) 和 Reduce ( 化簡) ,Map 程式將數據分割獨立區塊,利用計算機群實現分散式處理,最後通過Reduce 程式將結果匯總整合輸出。MapReduce 的作業流程是任務的分解與集合的匯總。
HDFS
Hadoop分散式檔案系統(HDFS)被設計成適合運行在通用硬體(commodity hardware)上的分散式檔案系統。它和現有的分散式檔案系統有很多共同點。但同時,它和其他的分散式檔案系統的區別也是很明顯的。HDFS是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的數據訪問,非常適合大規模數據集上的套用。HDFS放寬了一部分POSIX約束,來實現流式讀取檔案系統數據的目的。HDFS在最開始是作為Apache Nutch搜尋引擎項目的基礎架構而開發的。HDFS是Apache Hadoop Core項目的一部分。
HDFS有著高容錯性(fault-tolerant)的特點,並且設計用來部署在低廉的(low-cost)硬體上。而且它提供高吞吐量(high throughput)來訪問應用程式的數據,適合那些有著超大數據集(large data set)的應用程式。HDFS放寬了(relax)POSIX的要求(requirements)這樣可以實現流的形式訪問(streaming access)檔案系統中的數據。