收藏!一張圖幫你快速創建大數據知識體系

簡介: 對海量數據進行存儲、計算、分析、挖掘處理須要依賴一系列的大數據技術,而大數據技術又涉及了分佈式計算、高併發處理、高可用處理、集羣、實時性計算等,能夠說是聚集了當前 IT 領域熱門流行的 IT 技術。本文對大數據技術知識體系進行劃分,共分爲基礎技術、數據採集、數據傳輸、數據組織集成、數據應用、數據治理,進行相關的闡述說明,並列出目前業界主流的相關框架、系統、數據庫、工具等。(文末福利:下載大數據知識體系圖)程序員

image.png

前言

最先提出「大數據」時代到來的是全球知名諮詢公司麥肯錫,麥肯錫稱:「數據,已經滲透到當今每個行業和業務職能領域,成爲重要的生產因素。人們對於海量數據的挖掘和運用,預示着新一波生產率增加和消費者盈餘浪潮的到來。」數據,讓一切有跡可循,讓一切有源可溯。咱們天天都在產生數據,創造大數據和使用大數據,只是,你,仍然渾然不知。算法

企業組織利用相關數據和分析能夠幫助它們下降成本、提升效率、開發新產品、作出更明智的業務決策等等。大數據的價值,遠遠不止於此,大數據對各行各業的滲透,大大推進了社會生產和生活,將來必將產生重大而深遠的影響。數據庫

image.png

具體展開圖(點擊「閱讀原文」可下載),詳細內容請看下文:編程

image.png

一 大數據基礎技術

數據分片路由

在大數據的背景下,數據規模已經由 GP 跨越大屏 PB 的級別,單機明顯已經沒法存儲與處理如此規模的數據量,只能依靠大規模集羣來對這些數據進行存儲和處理。對於海量的數據,經過數據分片(Shard/Partition)來將數據進行切分到不一樣機器中去,分片之後,如何可以找到某一條記錄。這就是數據的分片和路由。瀏覽器

數據複製 & 一致性

在大數據的存儲系統中,爲了增長系統的可靠性,每每會將同一份數據存儲多個副本。數據是如何複製?以及數據複製後帶來的一致性問題如何的解決?緩存

image.png

大數據經常使用算法與數據結構

對於大數據或者大規模的分佈式系統來講,如何可以高效快速地進行海量數據的處理很是關鍵,而採用合適的數據結構和算法對於達成此目標相當重要。安全

二 數據採集

大數據的採集處於大數據生命週期的第一個環節,從數據採集的類型看不只僅要涵蓋基礎的結構化數據,半結構化數據,以及非結構化數據音頻、視頻、圖像等。常見的數據採集方式包括系統日誌採集、網絡數據採集、設備數據採集。服務器

系統日誌採集

系統日誌採集主要是對數據庫、系統、服務器等運行狀態,行爲事件等數據抓取。網絡

  • 埋點:瀏覽器(PC)打點、無線客戶端、服務端打點。
  • 數據採集框架:Chukwa、Splunk Forwarder、Flume、Fluentd、Logstash、Scribe。

網絡數據採集

網絡數據採集是指經過爬蟲或者公開 API 等方式從網站獲取數據。數據的內容能夠是文本、視屏、圖片數據等。數據結構

爬蟲技術:Nutch、Heritrix、Scrapy、WebCollector。

設備數據採集

設備數據採集主要是指針對一些物理設備的數據採集,常見的如傳感器,探針。

三 數據傳輸

通過採集的數據經過數據通道被傳輸存儲。集中存儲的數據源的數據發生變化也能經過數據通道盡快地通知對數據敏感的相應應用或者系統構建,使得它們可以儘快的捕獲數據的變化。

數據傳輸包含以下相關技術:消息隊列、數據同步、數據訂閱、序列化。

消息隊列

消息隊列是涉及大規模分佈式系統時候常用的中間件產品,主要解決日誌蒐集,應用耦合,異步消息,流量削鋒等問題實現高性能,高可用,可伸縮和最終一致性架構。

數據同步

在數據倉庫建模中,未經任何加工處理的原始業務層數據,咱們稱之爲 ODS (Operational Data Store) 數據。在互聯網企業中,常見的 ODS 數據有業務日誌數據(Log)和業務 DB 數據(DB)兩類。對於業務 DB 數據來講,從 MySQL 等關係型數據庫的業務數據進行採集,而後導入到數據倉庫中,是進一個重要環節。如何準確、高效地把 MySQL 數據同步到數據倉庫中?通常經常使用的解決方案是批量取數並 Load。數據同步解決各個數據源之間穩定高效的數據同步功能。

數據訂閱

數據訂閱功能旨在幫助用戶獲取實時增量數據,用戶可以根據自身業務需求自由消費增量數據,例如實現緩存更新策略、業務異步解耦、異構數據源數據實時同步及含複雜 ETL 的數據實時同 步等多種業務場景。

序列化

序列化 (Serialization)是將對象的狀態信息轉換爲能夠存儲或傳輸的形式的過程。數據序列化用於模塊通信時,將對象序列化爲通訊流,高效的傳輸到另外一個模塊,並提供反序列化還原數據。對於大數據傳輸場景下序列化的性能、大小也直接影響了數據傳輸的性能。

四 數據組織集成

數據存儲

大數據存儲面向海量、異構、大規模結構化非結構化等數據提供高性能高可靠的存儲以及訪問能力,經過優化存儲優化存儲基礎設施、提供高性能。高吞吐率、大容量的數據存儲方案,解決巨大數據量的存儲問題,同時爲大規模數據分析、計算、加工提供支撐。
image.png

物理存儲

隨着主機、磁盤、網絡等技術的發展,數據存儲的方式和架構也在一直不停改變。

根據服務器類型,咱們將存儲的分類分爲:

  • 封閉系統的存儲(封閉系統主要指大型機)
  • 開放系統的存儲(開放系統指基於 Windows、UNIX、Linux 等操做系統的服務器)

開放系統的存儲分爲:

  • 內置存儲
  • 外掛存儲

外掛存儲根據鏈接的方式分爲:

  • 直連式存儲(Direct-Attached Storage,簡稱 DAS)
  • 網絡化存儲(Fabric-Attached Storage,簡稱 FAS)

網絡化存儲根據傳輸協議又分爲:

  • 網絡接入存儲(Network-Attached Storage,簡稱 NAS)
  • 存儲區域網絡(Storage Area Network,簡稱 SAN)

針對不一樣的應用場景,選擇的分佈式存儲方案也會不一樣,所以有了對象存儲、塊存儲、文件系統存儲。

image.png

分佈式文件/對象存儲系統

分佈式存儲系統面向海量數據的存儲訪問與共享需求,提供基於多存儲節點的高性能,高可靠和可伸縮性的數據存儲和訪問能力,實現分佈式存儲節點上多用戶的訪問共享。

目前業界比較流行的分佈式存儲系統以下:HDFS、OpenStack Swift、Ceph、GlusterFS、Lustre、AFS、OSS。

分佈式關係型數據庫

隨着傳統的數據庫技術日趨成熟、計算機網絡技術的飛速發展和應用範圍的擴大,以分佈式爲主要特徵的數據庫系統的研究與開發受到人們的注意。關係型數據庫也是創建在關係模型基礎上的數據庫,藉助於集合代數等數學概念和方法來處理數據庫中的數據。因爲集中式關係型數據庫系統的不足(性能、擴展性),分佈式關係型數據庫目前愈來愈多。

目前業界比較流行的分佈式關係型數據庫以下:DRDS、TiDB、GreenPlum、Cobar、Aurora、Mycat。

分析型數據庫

分析數據庫是面向分析應用的數據庫,與傳統的數據庫不一樣,它能夠對數據進行在線統計、數據在 線分析、隨即查詢等發掘信息數據價值的工做,是數據庫產品一個重要的分支。

目前業界比較流行的分析型數據庫以下:Kylin、AnalyticDB、Druid、Clickhouse、Vertica、MonetDB、InfiniDB、LucidDB。

搜索引擎

大數據時代,如何幫助用戶從海量信息中快速準確搜索到目標內容,就須要搜索引擎。大數據搜索引擎是一個提供分佈式,高性能、高可用、可伸縮的搜索和分析系統。

目前常見的搜索引擎技術以下:Elasticsearch、Solr、OpenSearch。

圖數據庫

圖數據庫源起歐拉和圖理論,也可稱爲面向/基於圖的數據庫,對應的英文是 Graph Database。圖形數據庫是 NoSQL 數據庫的一種類型,它應用圖形理論存儲實體之間的關係信息。圖形數據庫是一種非關係型數據庫,它應用圖形理論存儲實體之間的關係信息。最多見例子就是社會網絡中人與人之間的關係。圖數據庫的基本含義是以「圖」這種數據結構存儲和查詢數據,而不是存儲圖片的數據庫。它的數據模型主要是以節點和關係(邊)來體現,也可處理鍵值對。它的優勢是快速解決複雜的關係問題。

目前業界比較流行的圖數據庫以下:Titan、Neo4J、ArangoDB、OrientDB、MapGraph、ALLEGROGRAPH。

列存儲數據庫

列式數據庫是以列相關存儲架構進行數據存儲的數據庫,主要適合於批量數據處理和即時查詢。相對應的是行式數據庫,數據以行相關的存儲體系架構進行空間分配,主要適合於大批量的數據處理,經常使用於聯機事務型數據處理。

目前業界比較流行的列存儲數據庫以下:Phoenix、Cassandra、Hbase、Kudu、Hypertable。

文檔數據庫

文檔型數據庫是 NoSQL 中很是重要的一個分支,它主要用來存儲、索引並管理面向文檔的數據或者相似的半結構化數據。

目前業界比較流行的文檔型數據庫以下:MongoDb、CouchDB、OrientDB、MarkLogic。

鍵值存儲數據庫

目前業界比較流行的鍵值存儲數據庫以下:Redis、Memcached、Tair。

數據計算

大數據計算主要完成海量數據並行處理、分析挖掘等面向業務需求。大數據計算經過將海量的數據分片,多個計算節點並行化執行,實現高性能、高可靠的數據處理,同時提供分佈式任務管理和調度的支撐。針對不一樣的數據處理需求,主要有大規模批量處理、流式計算、圖計算、即席分析等多種計算。
image.png

流式計算(Streaming compute)

流式計算:利用分佈式的思想和方法,對海量「流」式數據進行實時處理。流式計算更增強調計算數據流和低時延。這邊所謂的流數據( streaming data)是一種不斷增加的,無限的數據集。

流式計算是否等於實時計算?習慣上實時和流式等價,但其實這種觀點並不徹底正確。數據的發生的時間和處理時間有多是不一致的,只能說流式計算是一種低延遲的計算方式。

注意:本文將微批處理和流處理混在一塊兒。

業界常見的流式計算框架:Storm、Flink、Yahoo S四、Kafka Stream、Twitter Heron、Apache Samza、Spark Streaming。

大規模批量計算(batch compute)

大規模批量計算是對存儲的靜態數據進行大規模並行批處理的計算。批量計算是一種批量、高時延、主動發起的計算。習慣上咱們認爲離線和批量等價,但實際上是不許確的。離線計算通常是指數據處理的延遲。這裏有兩方面的含義第一就是數據是有延遲的,第二是是時間處理是延遲。在數據是實時的狀況下,假設一種狀況:當咱們擁有一個很是強大的硬件系統,能夠毫秒級的處理 Gb 級別的數據,那麼批量計算也能夠毫秒級獲得統計結果。

業界常見的大規模批量計算框架:Tez、MapReduce、Hive、Spark、Pig、大數據的編程模型 Apache Beam。

即席查詢分析 (ad-hoc query)

大數據進行即席查詢分析近兩年日益成爲關注領域。即席查詢(Ad Hoc)是用戶根據本身的需求,靈活的選擇查詢條件,系統可以根據條件快速的進行查詢分析返回結果。即席查詢和分析的計算模式兼具了良好的時效性與靈活性,是對批處理,流計算兩大計算模式有力補充。大規模批量計算解決了大數據量批處理的問題,而即席查詢分析則解決了適合商業智能分析人員的便捷交互式分析的問題。

業界常見的框架:Impala、Hawq、Dremel、Drill、Phoenix、Tajo、Presto、Hortonworks Stinger。

全量計算 & 增量計算

不少大數據的任務中,數據是一個增量收集和更新的過程,這時候對於數據的處理可使是全量加上增量計算的方式。增量計算只對部分新增數據進行計算來極大提高計算過程的效率,可應用到數據增量或週期性更新的場合。典型例子就是搜索引擎的週期性索引更新。

相關基礎知識:Lambda 架構、Kappa 架構、IOTA 架構。

業界常見框架:Microsoft Kineograph、Galaxy、Google Percolator、Druid。

圖計算

圖計算是一類在實際應用中很是常見的計算類型。許多大數據都是以大規模圖或網絡的形式呈現,如社交網絡、傳染病傳播途徑、交通事故對路網的影響許多非圖結構的大數據,也經常會被轉換爲圖模型後進行分析。圖數據結構很好地表達了數據之間的關聯性。要處理規模巨大的圖數據,傳統的單機處理方式已經無力處理,必須採用大規模機器集羣構成的並行數據庫。

相關基礎知識:GAS 編程模型、BSP 模型、節點爲中心編程模型、計算範型。

業界常見框架:Pregel、GraphChi、Spark GraphX、PowerGrah、Apache Giraph、Apache Hama。

分佈式協調系統

大規模分佈式系統中須要解決各類類型的協調需求,例如噹噹系統中加入一個進程或者物理機,如何自動獲取參數和配置,當進程和物理機發生改變如何通知其餘進程;單主控服務發生癱瘓,如何可以從備份中選取新的主控服務。分佈式協調系統適用於大型的分佈式系統,能夠提供 統一命名服務、狀態同步服務、集羣管理、分佈式應用配置項的管理等服務。

業界常見框架:Chubby、阿里 Diamond、阿里 ConfigServer、zookeeper、Eureka、Consul。

集羣資源管理和調度

資源管理調度的本質是集羣、數據中心級別的資源統一管理和分配,以提升效率。其中,多租戶、彈性計算、動態分配是資源管理系統要核心解決問題。

管理調度框架:Omega、Brog、Mesos、Corona、Yarn、Torca。

管理和監控工具:Ambari、Chukwa、Hue。

工做流管理引擎

隨着企業的發展,他們的工做流程變得更加複雜,愈來愈多的有着錯綜複雜依賴關係的工做流須要增長監控,故障排除。若是沒有明確的血緣關係。就可能出現問責問題,對元數據的操做也可能丟失。這就是有向無環圖(DAG),數據管道和工做流管理器發揮做用的地方。

複雜的工做流程能夠經過 DAG 來表示。DAG 是一種圖結構。信息必須沿特定方向在頂點間傳遞,但信息沒法經過循環返回起點。DAG 的構建是數據管道,或者是一個進程的輸入成爲下一個進程的輸入的順序進程。

構建這些管道可能會很棘手,但幸運的是,有幾個開源的工做流管理器可用於解決這個問題,容許程序員專一於單個任務和依賴關係。

業界常見框架:Oozie、Azkaban、Luigi、Airflow。

數據倉庫

隨着數據庫技術和管理系統的不斷髮展和普及,人們已再也不知足於通常的業務處理。同時隨着數據量的不斷增大,如何可以更好地利用數據,將數據轉化成商業價值,已經成爲人們愈來愈關心的問題。

舉例來講,數據庫系統能夠很好地解決事務處理,實現對數據的「增刪改查」等功能,可是卻不能提供很好的決策分析支持。由於事務處理首先考慮響應的及時性,多數狀況都是在處理當前數據,而決策分析須要考慮的是數據的集成性和歷史性,可能對分析處理的時效性要求不高。因此爲了提升決策分析的有效性和完整性,人們逐漸將一部分或者大部分數據從聯機事物處理系統中剝離出來,造成今天的數據倉庫系統。

image.png

數據挖掘

分析挖掘是經過算法從大數據紅提煉出具備價值的信息和知識的過程。以機器和算法爲主導,充分發揮機器在數據分析挖掘中的效率和可靠性的優點,提供對結構化數據以及文本、圖像、視頻和語言等非結構數據分析挖掘。數據分析挖掘包括一些通用的數據挖掘方法,也包括深度學習,機器學習,統計分析等。
image.png

數據測試

image.png

五 數據應用

大數據應用是整個大數據生命週期中最重要的一個環節之一。隨着大數據應用愈來愈普遍,應用的行業也愈來愈低,天天均可以看到大數據的一些新奇的應用,從而幫助人們從中獲取到真正有用的價值。下面和你們介紹下大數據應用方面相關技術。

基本概念

image.png

數據服務

image.png

數據可視化

人類的眼睛是一對高帶寬巨量視覺信號輸入的並行處理器,擁有超強模式識別能力,配合超過 50% 功能用於視覺感知相關處理的大腦,使得人類經過視覺獲取數據比任何其餘形式的獲取方式更好,大量視覺信息在潛意識階段就被處理完成,人類對圖像的處理速度比文本快 6 萬倍。

數據可視化正是利用人類天生技能來加強數據處理和組織效率。

image.png

數據共享

image.png

數據預警

image.png

應用部署

image.png

六 數據治理

過去的十年,咱們經歷了數據量高速膨脹的時期,這些海量的、分散在不一樣角落的異構數據致使了數據資源的價值低、應用難度大等問題。如何將海量數據應用於決策、營銷和產品創新?如何利用大數據平臺優化產品、流程和服務?如何利用大數據更科學地制定公共政策、實現社會治理?全部這一切,都離不開大數據治理。能夠說,在大數據戰略從頂層設計到底層實現的「落地」過程當中,治理是基礎,技術是承載,分析是手段,應用是目的。這個時候數據治理體系建設可能不是一個選擇,而是惟一的出路。

image.png

數據治理相關概念

image.png

元數據管理

元數據 MetaData 狹義的解釋是用來描述數據的數據,廣義的來看,除了業務邏輯直接讀寫處理的那些業務數據,全部其它用來維持整個系統運轉所需的信息/數據均可以叫做元數據。好比數據表格的 Schema 信息,任務的血緣關係,用戶和腳本/任務的權限映射關係信息等等。

管理這些附加 MetaData 信息的目的,一方面是爲了讓用戶可以更高效的挖掘和使用數據,另外一方面是爲了讓平臺管理人員能更加有效的作好系統的維護管理工做。
image.png

數據質量

image.png

數據安全

沒有安全作保障,一切大數據應用都是空談。數據業務將來最大的挑戰就是如何安全落地。特別是隨着一些列數據安全的問題發生,對大數據的保護成爲全球關注的熱點。各個企業特別是掌握了海量用戶信息的大型企業,有責任也有義務去保護數據的安全。

image.png

點擊文末「閱讀原文」,可下載完整大數據知識體系圖。

相關文章
相關標籤/搜索