1. 程式人生 > >淺談大資料處理

淺談大資料處理

剛接觸大資料處理,將大資料處理的框架記錄下來,之後深入的研究。

大資料處理的必要性

目前網際網路中資料的數量正在飛速的增長,首先是G為單位,然後是T級別、P級別、E級別。資料雖然很多,但是我們往往只慣性我們感興趣的那一部分,因此我們需要對海量資料進行處理獲取有價值的資訊來為我們所用。比如做資料分析來做定向營銷、以及為客戶提供個性化的服務。除此之外我們還可以對海量資料進行前期預處理,然後訓練一些模型,我們可以用這些訓練好的模型來對未來的事情進行預測。

大資料處理方式

如果原始的資料集很小,我們可以對資料進行單機處理分析,獲取有價值的資訊。但是如今為了獲得更準確或者更有價值的資訊,我們不得不對海量的原始資料進行處理。因此便出現了想hadoop、spark這樣的分散式處理框架。在這些平臺上面處理可以加快資料分析的速度。因為它們的主要思想是在一個主節點master上將打的計算任務分給其他的子節點來並行運算,然後彙總結果。

hadoop:hadoop的核心元件是HDFS和MapReduce,HDPF是分散式儲存系統,它可以將海量資料儲存在不同的子節點上,但是使用者對此並不會感覺到。MapReduce是hadoop的核心計算框架,主要負責任務的分配以及結果的彙總。MapReduce由於會將中間結果寫入HDFS,因此速度相對來說比較慢,實時性不夠高,適合離線大資料處理,早期的資料處理主要是用這種框架。隨著大資料處理的發展,對資料處理的實時性有了更高的需求,也就是需要滿足流處理的平臺。spark提供實時的流處理,當然還有其他的流處理框架。

spark:spark的核心元件是分散式儲存系統和RDD以及上層業務層,業務層包括spark sql,spark streaming,mllib,graph x四大元件,可以滿足許多場景的使用。

spark的分散式儲存系統可以用hadoop的HDFS,並且目前主要也是這麼用的,但是也可以用其他的,它並不依賴與hadoop。RDD是spark所特有的資料結構,可以說對spark的操作都是最rdd的操作。rdd操作分為兩種,一種是transform,它可以生成一個新的rdd,常用的有map、filter等,另一種是action,它產生實際的rdd運算,常用的有collect、take等。rdd操作屬於惰性呼叫,也就是說transform的時候它並沒有執行,而是等到action的時候才會執行並且產生結果。

spark的業務層包括spark sql,它適用於互動式的查詢、搜尋等場景。spark streamin 流處理,實時處理領域用的多。mllib 機器學習庫,裡面提供了很多機器學習的模型,比如邏輯迴歸,隨機森林等。graph x 圖計算,用於處理多變多節點的圖,比如社交網路圖。

spark主要通過scala進行操作,但是它的外圍也提供了多種其他語言的介面,比如python。但是對於大資料的實時處理,python的效率並沒有Scala的效率高。

後續深入學習再繼續更新.........