1. 程式人生 > >一篇文章讀懂什麼是大資料

一篇文章讀懂什麼是大資料

大資料概述

如果說,作為目前IT行業最火熱、薪資最具有發展前景的兩個方向——大資料和人工智慧。現在甚至火熱到凡是一個公司,都在說自己做大資料相關的業務,那麼作為當前時代的程式設計師,我們應當瞭解,什麼是大資料?

通俗的來講,大資料就是基於海量的資料,提取其中具有借鑑意義,具有商業價值的東西,最終呈現給使用者的這麼一個過程,就叫大資料。

大資料技術體系

從概念上講,上面所說的東西,都是比較籠統的概念,而大資料作為目前已經發展的比較成熟的階段,已經形成了自己的一整套體系。

總的來說,大資料技術等於“資料”到“使用者”這麼一個過程。從低到高,共分為六層。

第一層:資料採集。

所謂資料採集,就是我首先要有資料分析的素材,我們需要得到這些資料,才能進行有價值的分析對比。比如百度的搜尋記錄的資料。阿里的使用者購物的資料。騰訊的使用者聊天資料。都是很好的資料素材。

第二層:資料儲存

產生了資料,我們的資料到底該放在哪裡?以什麼樣的方式進行儲存?因為這些資料只有儲存下來,才能進行有價值的分析,提取,最終得到我們想要的東西。所以資料儲存是非常重要的一環。

第三層:資源管理層

有了海量的資料,我們要對資料進行存放,那我們如何保證存放資料能夠快速的讀取?如何針對不同的業務做不同的分析?為了有效的排程各類資源,我們大資料中,就專門有了資源管理層。

第四層:計算引擎層

我們知道了如何做資源排程,那麼就要開始對最原始的資料開始處理,處理方式有實時處理、互動式處理、批處理等等。

實時處理,就是我希望得到使用者實時的訪問記錄、活躍度、實時網頁瀏覽等資訊,採集到這樣的東西,我們進行生成實時的統計、報表等資訊。

互動式分析,就是使用者和系統之間進行互動的部分,一般使用類SQL語言便於資料的查詢和分析等。

批處理,對時間及時性要求低,一般進行批量資料分析,資料清洗等操作。

第五層:資料分析層

一般是和應用程式對接,把經過批量處理,或者加工過的資料,通過SQL、API等方式暴露出去的過程,就是資料分析。

第六層:資料視覺化

為了讓使用者更加清晰的感知到資料的情況,一般使用視覺化的東西呈現到使用者面前,可以呈現的是網頁、圖表、報表等資訊。

大資料技術分析

如果把大資料分解成我上面展示的六層結構,那每一層都有對應的處理工具、或者是解決方案,具體如下:

資料收集層:一般採用Flume、Kafka、Sqoop等進行資料的採集。
如果把資料這麼劃分:非關係型資料、關係型資料、互動式資料。那Flume一般處理的就是非關係型的資料,而Sqoop主要針對類似傳統的SQL型別的資料,Kafka處理的是分散式的訊息資料。

資料儲存層:一般使用HDFS、HBase。
HDFS,是一種分散式檔案系統的資料儲存方案。可以把資料儲存到一個個的廉價伺服器上。
HBase,儲存一種結構化、半結構化的資料。

資源管理層:YARN
負責叢集的資源管理和排程、使得多個計算框架都能執行在一個叢集中。

計算框架層:一般使用MapReduce、Hive、Spark、Presto、Spark Streaming等。
MapReduce,適合Pb級別以上的資料離線處理。
Hive:定義了一種類SQL的語言。便於離線資料的分析。

資料分析層:Mahout、MLlib、DataFrame、SQL、R等。

資料展示層:前端網頁、Echarts、D3.js、SVG、Canvas等等。
這一層,主要負責資料的展示、提供給使用者的有效資訊等等。