大數據掃盲

語言: 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非常相似,它們之間最大的區別是前者只處理最近的數據,後者則要處理所有的數據。

參考文檔

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