不知道大家有沒有過在百度搜尋旅遊的關鍵字,不久就可能收到機票的推銷的經驗。如今是巨量資料的時代,資料的價值越來越重要。資料即資產,想必大家都聽說過。最近公司的專案中也用到了一些巨量資料的技術,本文對巨量資料相關的知識體系做了一個整體的梳理。
巨量資料,你可能就簡單理解為資料量大,那是多大才算巨量資料呢?如果只有資料量大是不是太片面單一了,實際上如果你說是從事巨量資料開發, 那麼起碼要滿足下面的5大特徵。
1.資料量大
2.資料種類、來源多樣化
3.低價值密度
4.速度快
5.資料的質量
針對海量資料的分析,針對不同的業務場景,大致可以分為3個方向,離線分析,實時分析和預測分析。
離線分析,也就是所謂的批次處理,主要分析過去的歷史資料,可以每週(T+7)或者每天(T+1)的方式分析歷史的資料,找出隱藏在資料背後的深層次原因,從而做出調整優化。比如說分析過去一個月的使用者運算元據等。
這種分析方式一般資料量非常大,通常採用Hadoop
生態技術體系解決,比如HDFS
、Yarn
、Hbase
等技術。
實時分析,也叫流計算,主要是面向當下,實時處理分析資料,你可以想象成流水一樣,源源不斷的處理資料,對時效性要求比較高,可到秒級甚至毫秒級。比如說在金融領域中,你發起一筆交易,可以通過實時分析判斷當前筆交易是否存在欺詐風險,從而保護資金安全。
目前Storm
、Flink
、SparkStreaming
都是比較流行的流式處理框架。
預測分析,實際就是通過機器學習的手段,基於歷史資料和當下產生的實時資料預測未來發生的事情。更側重於數學演演算法的運用,如分類、聚類、關聯、預測,但是也離開不了資料,需要通過歷史的資料進行訓練,得出可預測的模型,比較典型的應用比如說電商領域"猜你喜歡"。
我們都知道資料的重要性,那資料分析的整個生命週期是怎麼樣的呢?什麼時候來,要做什麼處理,都有什麼步驟呢?
前面講解了巨量資料分析的整個過程,需要涉及到很多步驟,每個步驟都需要一些工具和方法支援,作為開發人員,我們可能更加關注用到的一些主流技術棧,目前最主流的還是基於Hadoop生態。
Flume一個分散式、可靠的、高可用的用於資料採集、聚合和傳輸的系統,常用於紀錄檔採集系統中。
ELK中的一員,也常用於資料採集。
Sqoop主要通過一組命令進行資料匯入匯出的工具,主要用於Hadoop(如HDFS、Hive、HBase)和RDBMS(如mysql、oracle)之間的資料匯入匯出。
高效能的的訊息佇列,主要應用在資料緩衝、非同步通訊、彙集資料、系統解耦等方面。
分散式檔案儲存系統,HDFS非常適合大規模資料集上的應用,提供高吞吐量的資料存取,可部署在廉價的機器上。
是一款基於HDFS的資料庫,是一種NoSQL資料庫,主要適用於海量明細資料(十億、百億)的隨機實時查詢,如紀錄檔明細、交易清單、軌跡行為等。
HBase可以認為是HDFS的一個包裝。他的本質是資料儲存,是個NoSql資料庫;HBase部署於HDFS之上,並且克服了HDFS不能隨機讀寫的問題。
介於HDFS和HBase之間的基於列式儲存的分散式資料庫。兼具了HBase的實時性、HDFS的高吞吐,以及傳統資料庫的sql支援。
分散式運算程式的程式設計框架,適用於離線資料處理場景。
Yarn是一個資源排程平臺,負責為運算程式分配資源和排程,不參與使用者程式內部工作。
Hive是基於Hadoop的一個資料倉儲工具,可以將結構化的資料檔案對映為一張資料庫表,並提供HQL語句(類SQL語言)查詢功能,儲存依賴於HDFS。本質上是把好寫的hive的sql轉換為複雜難寫的map-reduce程式。
Spark是一個快速、通用、可延伸、可容錯的、記憶體迭代式計算的巨量資料分析引擎。目前生態體系主要包括用於批資料處理的SparkRDD
、SparkSQL
,用於流資料處理的SparkStreaming
,用於機器學習的Spark MLLib
,用於圖計算的Graphx
以及用於統計分析的SparkR
。
Flink是一個分散式的實時計算引擎,可以對有限資料流和無限資料流進行有狀態的計算。
Storm是一個沒有批次處理能力的資料流處理計算引擎,是由Twitter開源後歸於Apache管理的分散式實時計算系統。
構建在HBase之上的一個SQL層,能讓我們通過標準的JDBC API操作HBase中的資料。
小結:
巨量資料生態元件眾多,上面只是列出了其中一部分,目前一般會通過CDH等平臺統一進行安裝管理,如下圖所示:
本文講解了從上帝視角看巨量資料分析,瞭解了資料分析的方向和步驟,同時整理了目前市面上常見的一些巨量資料元件,希望對大家入門巨量資料學習有一個初步的認識。
如果本文對你有幫助的話,請留下一個贊吧
更多技術幹活和學習資料盡在個人公眾號——JAVA旭陽
本文來自部落格園,作者:JAVA旭陽,轉載請註明原文連結:https://www.cnblogs.com/alvinscript/p/16962492.html