大資料掃盲

語言: CN / TW / HK

什麼是大資料?

大資料就是任何超過了一臺計算機處理能力的龐大資料量。--JohnRauser。

大資料代表了更多的資訊,更多理解資訊的角度。

大資料,又稱巨量資料,指的是所涉及的資料資料量規模巨大到無法通過人腦甚至主流軟體工具,在合理時間內達到擷取、管理、處理、並整理成為幫助企業經營決策更積極目的的資訊。

大資料的分類

  • 結構化資料 ,簡單來說就是資料庫。也稱作行資料,是由二維表結構來邏輯表達和實現的資料,嚴格地遵循資料格式與長度規範,主要通過關係型資料庫進行儲存和管理。結構化資料標記,是一種能讓網站以更好的姿態展示在搜尋結果當中的方式,搜尋引擎都支援標準的結構化資料標記。 (員工的姓名,年齡等)

  • 非結構話資料 ,是與結構化資料相對的,不適於由資料庫二維表來表現,包括所有格式的辦公文件、XML、HTML、各類報表、圖片和咅頻、影片資訊等。支援非結構化資料的資料庫採用多值欄位、了欄位和變長欄位機制進行資料項的建立和管理,廣泛應用於全文檢索和各種多媒體資訊處理領域。 (員工的聲音,頭像等)

  • 半結構化資料 是一種適於資料庫整合的資料模型,也就是說,適於描述包含在兩個或多個數據庫(這些資料庫含有不同模式的相似資料)中的資料。 (員工的簡歷等)

大資料的特點

  1. 規模性(Volume) ,大資料的資料量是驚人的,隨著技術的發展,資料量開始爆發性增長,達到TB甚至PB級別。例如,淘寶網平常每天的商品交易資料約20TB(1TB=1024GB),全球最大設計平臺Facebook的使用者,每天產生的日誌資料超過了300TB(日誌資料是記錄使用者操作記錄的,並非發帖內容)。大資料如此龐大的資料量,是無法通過人工處理的。需要智慧的演算法、強大的資料處理平臺和新的資料處理技術來處理這些大資料。

  2. 多樣性(Varity) 大資料廣泛的資料來源,決定了大資料形式的多樣性。大資料大體上可以分為三類,分別是結構化資料、非結構化的資料、半結構化資料。結構化數的特點是資料間因果關係強,比如息管理系統資料、醫療系統資料等;非結構化的資料的特點是資料間沒有因果關係,比如音訊、圖片、影片等;半結構化資料的特點是資料間的因果關係弱。比如網頁資料、郵件記錄等。

  3. 高速性(Velocity) 大資料的交換和傳播是通過網際網路、雲端計算等方式實現的,遠比傳統媒介的資訊交換和傳播速度快捷。大資料與海量資料的重要區別,除了大資料的資料規模更大以外,大資料對處理資料的響應速度有更嚴格的要求。實時分析而非批量分析,資料輸入、處理與丟棄立刻見效,幾乎無延遲。資料的增長速度和處理速度是大資料高速性的重要體現。

  4. 價值性(Value) 價值性是大資料的核心特點。現實中大量的資料是無效或者低價值的,大資料最大的價值在於通過從大量不相關的各種型別的資料中,挖掘出對未來趨勢與模式預測分析有價值的資料。比如,某寶電商平臺每天產生的大量交易資料(大資料),通過一些演算法可以分析出具有某些特徵的人喜歡什麼型別的商品,然後根據客戶的特徵,給其推薦TA喜歡的商品。

軟體

  • Docker Compose 是一個用來幫助定義和分享多容器應用的工具。有了Compose,就能建立一個YAML檔案來定義服務,只需要一個命令,就能夠啟動所有東西,也能夠把所有東西銷燬掉。

  • Zeppelin 是一個基於Web的notebook,提供互動資料分析和視覺化。後臺支援接入多種資料處理引擎,如Spark,Hive等。支援多種語言:Scala(Apache Spark)、Python(Apache Spark)、SparkSQL、 Hive、 Markdown、Shell等。

  • Hadoop 是由java語言編寫的,在分散式伺服器叢集上儲存海量資料並執行分散式分析應用的開源框架,其核心部件是HDFS與MapReduce。HDFS為海量的資料提供了儲存,則MapReduce為海量的資料提供了計算。

  • Hive 是基於Hadoop的一個數據倉庫工具,用來進行資料提取、轉化、載入,可以儲存、查詢和分析儲存在Hadoop中的大規模資料的機制。

  • Hbase 其實是Hadoop database的簡稱,是一種NoSQL資料庫,主要適用於海量明細資料(十億、百億)的隨機實時查詢,如日誌明細、交易清單、軌跡行為等。

    tips

    : Hive適合用來對一段時間內的資料進行分析查詢。適合用來進行大資料的實時查詢

  • Spark 是一種基於記憶體的快速、通用、可擴充套件的大資料計算引擎。它集批處理、實時流處理、互動式查詢、圖計算與機器學習於一體。
    tips : Spark是那麼一個專門用來對那些分散式儲存的大資料進行處理的工具,它要藉助Hadoop HDFS的資料儲存。Hadoop的MapReduce是分步對資料進行處理的,存取磁碟的過程會影響處理速度。Spark從磁碟中讀取資料,把中間資料放到記憶體中,完成所有必須的分析處理,將結果寫回叢集,所以Spark更快。所以Hadoop + Spack結合起來用更好。

  • JupyterLab 是一個集 Jupyter Notebook、文字編輯器、終端以及各種個性化元件(有VScode內味了)於一體的全能IDE。

  • prestoDB 是一種開源的分散式 SQL 查詢引擎,從頭開始設計用於針對任何規模的資料進行快速分析查詢。它既可支援非關係資料來源,例如 Hadoop 分散式檔案系統 (HDFS)、Amazon S3、Cassandra、MongoDB 和 HBase,又可支援關係資料來源,例如 MySQL、PostgreSQL、Amazon Redshift、Microsoft SQL Server 和 Teradata。

  • TensorFlow 是一個端到端開源機器學習平臺。它擁有一個全面而靈活的生態系統,其中包含各種工具、庫和社群資源,可助力研究人員推動先進機器學習技術的發展,並使開發者能夠輕鬆地構建和部署由機器學習提供支援的應用。

主流的大資料架構Lambda

Lambda 架構是其根據多年進行分散式大資料系統的經驗總結提煉而成,目標是設計出一個能滿足實時大資料系統關鍵特性的架構,包括有:高容錯、低延時和可擴充套件等。Lambda架構整合離線計算和實時計算,融合不可變性(Immunability),讀寫分離和複雜性隔離等一系列架構原則,可整合Hadoop,Kafka,Storm,Spark,Hbase等各類大資料元件。

  • Batch View 預運算查詢函式,預先建立索引,支援隨機讀取,能很好的解決特別大級別的資料且還需要支援實時查詢,要消耗非常龐大的資源的問題。

  • Batch Layer 執行的是批量處理,例如Hadoop或者Spark支援的Map-Reduce方式。利用Batch Layer進行預運算的作用實際上就是將大資料變小,從而有效地利用資源,改善實時查詢的效能。

  • Serving Layer 是一個專用的分散式資料庫。Batch Layer通過對master dataset執行查詢獲得了batch view,而Serving Layer就要負責對batch view進行操作,從而為最終的實時查詢提供支撐。

  • Speed Layer 對更新到Serving layer帶來的高延遲的一種補充,它是一種增量的計算,而非重新運算。Speed layer與Batch layer非常相似,它們之間最大的區別是前者只處理最近的資料,後者則要處理所有的資料。

參考文件

  • https://zhuanlan.zhihu.com/p/20510974