本文首發於 泊浮目的簡書: https://www.jianshu.com/u/204...
版本 | 日期 | 備註 |
---|---|---|
1.0 | 2021.5.9 | 文章首發 |
這是個人學習筆記,大量摘抄網上、書本里的內容,將我本身認爲關聯度較高的內容呈現上來。數據庫
大數據從數據源開始,通過分析、挖掘到最終得到價值通常須要通過6個主要環節,包括數據收集、數據存儲、資源管理與服務協調、計算引擎、數據分析和數據可視化,技術體系如圖所示。每一個環節都面臨不一樣程度的技術挑戰。後端
數據收集層由直接跟數據源對接的模塊構成,負責將數據源中的數據近實時或實時收集到一塊兒。數據源具備分佈式、異構性、多樣化及流式產生等特色:
❑ 分佈式:數據源一般分佈在不一樣機器或設備上,並經過網絡鏈接在一塊兒。
❑ 異構性:任何可以產生數據的系統都可以稱爲數據源,好比Web服務器、數據庫、傳感器、手環、視頻攝像頭等。
❑ 多樣化:數據的格式是多種多種多樣的,既有像用戶基本信息這樣的關係型數據,也有如圖片、音頻和視頻等非關係型數據。
❑ 流式產生:數據源如同「水龍頭」同樣,會源源不斷地產生「流水」(數據),而數據收集系統應實時或近實時地將數據發送到後端,以便及時對數據進行分析。服務器
❑ 主要由關係型與非關係型數據收集組件,分佈式消息隊列構成。
❑ Sqoop/Canal:關係型數據收集和導入工具,是鏈接關係型數據庫(好比MySQL)和Hadoop(好比HDFS)的橋樑,Sqoop可將關係型數據庫中的數據全量導入Hadoop,反之亦可,而Canal則可用於實現數據的增量導入。
❑ Flume:非關係型數據收集工具,主要是流式日誌數據,可近實時收集,通過濾,彙集後加載到HDFS等存儲系統。
❑ Kafka:分佈式消息隊列,通常做爲數據總線使用,它容許多個數據消費者訂閱並獲取感興趣的數據。相比於其餘消息隊列,它採用分佈式高容錯設計,更適合大數據應用場景。網絡
在大數據時代,因爲數據收集系統會將各種數據源源不斷地發到中央化存儲系統中,這對數據存儲層的擴展性、容錯性及存儲模型等有較高要求,總結以下:
❑ 擴展性:在實際應用中,數據量會不斷增長,現有集羣的存儲能力很快將達到上限,此時須要增長新的機器擴充存儲能力,這要求存儲系統自己具有很是好的線性擴展能力。
❑ 容錯性:考慮到成本等因素,大數據系統從最初就假設構建在廉價機器上,這就要求系統自己就有良好的容錯機制確保在機器出現故障時不會致使數據丟失。
❑ 存儲模型:因爲數據具備多樣性,數據存儲層應支持多種數據模型,確保結構化和非結構化的數據可以很容易保存下來。框架
典型的應用:運維
主要是爲了解決:分佈式
Iaas、K8S、Omega都屬於這一層。工具
計算引擎層是大數據技術中最活躍的一層,直到今天,仍不斷有新的計算引擎被提出。 整體上講,可按照對時間性能的要求,將計算引擎分爲三類:oop
❑ 批處理:該類計算引擎對時間要求最低,通常處理時間爲分鐘到小時級別,甚至天級別,它追求的是高吞吐率,即單位時間內處理的數據量儘量大,典型的應用有搜索引擎構建索引、批量數據分析等。
❑ 交互式處理:該類計算引擎對時間要求比較高,通常要求處理時間爲秒級別,這類系統須要跟人進行交互,所以會提供類SQL的語言便於用戶使用,典型的應用有數據查詢、參數化報表生成等。
❑ 實時處理:該類計算引擎對時間要求最高,通常處理延遲在秒級之內,典型的應用有廣告系統、輿情監測等。性能
數據分析層直接跟用戶應用程序對接,爲其提供易用的數據處理工具。爲了讓用戶分析數據更加容易,計算引擎會提供多樣化的工具,包括應用程序API、類SQL查詢語言、數據挖掘SDK等。
在解決實際問題時,數據科學家每每需根據應用的特色,從數據分析層選擇合適的工具,大部分狀況下,可能會結合使用多種工具,典型的使用模式是:首先使用批處理框架對原始海量數據進行分析,產生較小規模的數據集,在此基礎上,再使用交互式處理工具對該數據集進行快速查詢,獲取最終結果。
數據可視化層是直接面向用戶展現結果的一層,因爲該層直接對接用戶,是展現大數據價值的「門戶」,所以數據可視化是極具意義的。考慮到大數據具備容量大、結構複雜和維度多等特色,對大數據進行可視化是極具挑戰性的。