1.大數據框架與平臺
工做:處理數據
磁盤文件中的數據
網絡中的數據流或數據包
數據庫中的結構化數據算法
1.大數據工做
處理數據數據庫
數據結構: 磁盤文件中的數據 網絡中的數據流或數據包 數據庫中的結構化數據
2.數據規模
TB
PB
3.分佈式環境中處理大數據
(1)分佈式環境,多臺計算機共同承擔計算任務
(2)存儲系統
(3)計算任務的分配
(4)計算負荷的分配
(5)計算機之間的數據遷移
(6)計算機或網絡發生故障時的數據安全安全
4.實例
問題:從銷售記錄中統計各類商品銷售額
解決方案:
(1)單機:
掃描全部信息記錄,對銷售額累加
若是存在關係數據庫中,一個SQL語句就行了
(2)加入:不少的銷售記錄
須要設計出由多態計算機來統計銷售額的方案,網絡
爲了保證計算的正確、可靠、高效及方便,須要考慮下列問題: (1)如何爲每臺計算機分配任務,是先按商品種類對銷售記錄進行分組,不一樣機器處理不一樣商品種類的記錄 隨機向每臺機器發送一部分銷售記錄進行統計,最後將各機器統計的結果,按照商品種類合併。 (2)那排序的時候,如何排序,用哪一種排序算法?在哪臺機器上執行排序過程? 每臺機器處理的數據,從哪裏來,到哪裏去?數據是主動發送,仍是接收方申請發送? 若是是主動發送,接收方處理不過來怎麼辦? 若是是申請發送,發送方應該保存多久數據。 (3)會不會任務分配不均,有的機器很快處理完了,有的機器,一直在忙?甚至,閒的機器須要等着忙的機器處理完成後才能開始執行。 若是增長一臺機器,能不能減輕其餘機器的負荷,從而縮短任務執行時間。 若是一臺機器掛了,它沒有完成的任務,應該交給誰,會不會遺漏統計或者重複統計。 統計過程當中,機器之間如何協調,是否須要專門的一臺機器指揮調度其餘機器?若是這臺機器掛了呢。 (4)若是銷售記錄,還在源源不斷的增長,統計尚未執行完,新紀錄又來了,如何保證統計結果的準備性?能不能保證結果是實時更新的》?再次統計能不能避免大量 重複計算。 (5)能不能讓用戶執行一句SQL就能夠獲得結果 上述問題,除了第一個,其餘的分佈式計算也會遇到,並且解決起來也至關棘手,便是第一個的分組,統計,在不少數據處理場合,也會遇到,只是,體現方式不一樣。若是把這些問題 能封裝到一個計算框架中,能夠大大簡化,這類應用程序的開發。 2004年,Google前後發表了三篇我呢論來介紹分佈式GFS,並行計算模型MapReduce ,非關係數據存儲系統BigTable .第一次提出了針對大數據分佈式處理的可重用方案/ Hadoop .數十種,應用於分佈式環境的大數據計算框架。 若是不涉及,第8,9 個問題,(統計過程當中,有新的記錄過來,保證統計的實時性)屬於批處理。
5.大數據框架
批處理
批處理框架重點關心數據處理的吞吐量,又可分爲非迭代式和迭代式兩類。
迭代式包括DAG(有向無環圖)。圖計算等模型。
流處理
針對第8個問題提出的對應方案,分兩種狀況:
若是重點關注是實時性,屬於流計算框架
若是側重避免重複計算:屬於增量計算框架。
若是是第9個問題(保證明時性,同時避免重複計算) 數據交互式分析框架。
下面討論 批處理、流處理、交互式分析的三種類別的框架,要介紹大數據框架的一些發展趨勢。數據結構
大數據框架 批處理 Map/Reduce Hadoop DAG Dryad. Tez,Spark,Fink DataSet API 圖計算 Pregel Giraph Hama PowerGraph 流處理 實時 MillWheel,S4,Storm,Samaz ,Heron,Grepump ,Flink ,Apex 小批量 Storm Trident , Spark Streaming . 交互式分析 Dremel ,Hive ,Presto ,Implala ,Stinger,Tajo 增量計算 Percolator,Kineograph,Galaxy
(1) Hadoop
最初,Hadoop= HDFS+MapReduce .是從Nuth中獨立出來的項目。
在2.0 中,把資源管理和任務調度功能,從MapReduce 中剝離,造成YARN .
使其餘框架也能夠像MapReduce那樣,運行在Hadoop上。
與以前的分佈式計算框架相比,Hadoop隱藏了不少繁瑣的細節,如容錯,負載均衡等,便於使用。負載均衡
Hadoop 有很強的橫向擴展能裏,很容易把新的計算機,加入到計算機集羣中參與計算。 在開源社區支持下,Hadoop不斷完善,集成了如,非關係數據庫HBase,數據倉庫Hive,數據處理工具Sqoop,機器學習算法Mahout . 一致性服務軟件Zookeeper .管理工具Ambari等,造成了相對完整的生態圈和分佈式計算事實上的標準。 Hadoop = HDFS+MapReduce+ HBase+ Hive + Sqoop + Mahout +Zookeeper+ Ambari (管理工具)等。 引用程序主要負責設計map 和 reduce任務,其餘工做遊框架負責。在定義map任務輸出數據的方式時,鍵的選擇相當重要,也決定數據如何分組, 排序,傳輸,以及執行reduce任務的計算機如何分工。 可選擇商品種類爲鍵。MapReduce執行商品銷售統計的過程以下: (1)把銷售記錄分片,分配給多臺機器 (2)每條銷售記錄,被解析成鍵值對,其中值爲銷售記錄的內容,鍵可忽略 (3)MapReduce 把map任務生成的數據按商品種類排序 (4)待全部節點,都完成排序後,MapReduce啓動reduce任務,每一個商品種類對應一個reduce任務。 (5)執行reduce任務的進程經過網絡獲取指定商品種類的歌詞銷售額。 (6)MapReduce把同一種商品下的各類銷售額合併到表中 (7)執行reduce任務,累加各次銷售額,獲得該種商品的總銷售額。