收藏!一張圖幫你快速建立大資料知識體系

阿里技術發表於2020-06-11

收藏!一張圖幫你快速建立大資料知識體系

阿里妹導讀:對海量資料進行儲存、計算、分析、挖掘處理需要依賴一系列的大資料技術,而大資料技術又涉及了分散式計算、高併發處理、高可用處理、叢集、實時性計算等,可以說是彙集了當前 IT 領域熱門流行的 IT 技術。本文對大資料技術知識體系進行劃分,共分為基礎技術、資料採集、資料傳輸、資料組織整合、資料應用、資料治理,進行相關的闡述說明,並列出目前業界主流的相關框架、系統、資料庫、工具等。


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

企業組織利用相關資料和分析可以幫助它們降低成本、提高效率、開發新產品、做出更明智的業務決策等等。大資料的價值,遠遠不止於此,大資料對各行各業的滲透,大大推動了社會生產和生活,未來必將產生重大而深遠的影響。

收藏!一張圖幫你快速建立大資料知識體系

具體展開圖(點選“閱讀原文”可下載),詳細內容請看下文:

收藏!一張圖幫你快速建立大資料知識體系


一  大資料基礎技術

資料分片路由

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

資料複製 & 一致性

在大資料的儲存系統中,為了增加系統的可靠性,往往會將同一份資料儲存多個副本。資料是如何複製?以及資料複製後帶來的一致性問題如何的解決?

收藏!一張圖幫你快速建立大資料知識體系

大資料常用演算法與資料結構

對於大資料或者大規模的分散式系統來說,如何能夠高效快速地進行海量資料的處理非常關鍵,而採用合適的資料結構和演算法對於達成此目標至關重要。

二  資料採集

大資料的採集處於大資料生命週期的第一個環節,從資料採集的型別看不僅僅要涵蓋基礎的結構化資料,半結構化資料,以及非結構化資料音訊、影片、影像等。常見的資料採集方式包括系統日誌採集、網路資料採集、裝置資料採集。

系統日誌採集

系統日誌採集主要是對資料庫、系統、伺服器等執行狀態,行為事件等資料抓取。

  • 埋點:瀏覽器(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)是將物件的狀態資訊轉換為可以儲存或傳輸的形式的過程。資料序列化用於模組通訊時,將物件序列化為通訊流,高效的傳輸到另一個模組,並提供反序列化還原資料。對於大資料傳輸場景下序列化的效能、大小也直接影響了資料傳輸的效能。

四  資料組織整合

資料儲存

大資料儲存面向海量、異構、大規模結構化非結構化等資料提供高效能高可靠的儲存以及訪問能力,透過最佳化儲存最佳化儲存基礎設施、提供高效能。高吞吐率、大容量的資料儲存方案,解決巨大資料量的儲存問題,同時為大規模資料分析、計算、加工提供支撐。

收藏!一張圖幫你快速建立大資料知識體系

物理儲存

隨著主機、磁碟、網路等技術的發展,資料儲存的方式和架構也在一直不停改變。

根據伺服器型別,我們將儲存的分類分為:

  • 封閉系統的儲存(封閉系統主要指大型機)

  • 開放系統的儲存(開放系統指基於 Windows、UNIX、Linux 等作業系統的伺服器)


開放系統的儲存分為:

  • 內建儲存

  • 外掛儲存


外掛儲存根據連線的方式分為:

  • 直連式儲存(Direct-Attached Storage,簡稱 DAS)

  • 網路化儲存(Fabric-Attached Storage,簡稱 FAS)


網路化儲存根據傳輸協議又分為:

  • 網路接入儲存(Network-Attached Storage,簡稱 NAS)

  • 儲存區域網路(Storage Area Network,簡稱 SAN)


針對不同的應用場景,選擇的分散式儲存方案也會不同,因此有了物件儲存、塊儲存、檔案系統儲存。

收藏!一張圖幫你快速建立大資料知識體系


分散式檔案/物件儲存系統

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

目前業界比較流行的分散式儲存系統如下: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。

資料計算

大資料計算主要完成海量資料並行處理、分析挖掘等面向業務需求。大資料計算透過將海量的資料分片,多個計算節點並行化執行,實現高效能、高可靠的資料處理,同時提供分散式任務管理和排程的支撐。針對不同的資料處理需求,主要有大規模批次處理、流式計算、圖計算、即席分析等多種計算。

收藏!一張圖幫你快速建立大資料知識體系

流式計算(Streaming compute)

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

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

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

業界常見的流式計算框架:Storm、Flink、Yahoo S4、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。

資料倉儲

隨著資料庫技術和管理系統的不斷髮展和普及,人們已不再滿足於一般的業務處理。同時隨著資料量的不斷增大,如何能夠更好地利用資料,將資料轉化成商業價值,已經成為人們越來越關心的問題。

舉例來說,資料庫系統可以很好地解決事務處理,實現對資料的“增刪改查”等功能,但是卻不能提供很好的決策分析支援。因為事務處理首先考慮響應的及時性,多數情況都是在處理當前資料,而決策分析需要考慮的是資料的整合性和歷史性,可能對分析處理的時效性要求不高。所以為了提高決策分析的有效性和完整性,人們逐漸將一部分或者大部分資料從聯機事物處理系統中剝離出來,形成今天的資料倉儲系統。

收藏!一張圖幫你快速建立大資料知識體系


資料探勘

分析挖掘是透過演算法從大資料紅提煉出具有價值的資訊和知識的過程。以機器和演算法為主導,充分發揮機器在資料分析挖掘中的效率和可靠性的優勢,提供對結構化資料以及文字、影像、影片和語言等非結構資料分析挖掘。資料分析挖掘包括一些通用的資料探勘方法,也包括深度學習機器學習,統計分析等。

收藏!一張圖幫你快速建立大資料知識體系

資料測試

收藏!一張圖幫你快速建立大資料知識體系

五  資料應用

大資料應用是整個大資料生命週期中最重要的一個環節之一。隨著大資料應用越來越廣泛,應用的行業也越來越低,每天都可以看到大資料的一些新奇的應用,從而幫助人們從中獲取到真正有用的價值。下面和大家介紹下大資料應用方面相關技術。

基本概念

收藏!一張圖幫你快速建立大資料知識體系

資料服務

收藏!一張圖幫你快速建立大資料知識體系

資料視覺化

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

資料視覺化正是利用人類天生技能來增強資料處理和組織效率。

收藏!一張圖幫你快速建立大資料知識體系

資料共享
收藏!一張圖幫你快速建立大資料知識體系

資料預警

收藏!一張圖幫你快速建立大資料知識體系

應用部署

收藏!一張圖幫你快速建立大資料知識體系

六  資料治理

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

收藏!一張圖幫你快速建立大資料知識體系

資料治理相關概念

收藏!一張圖幫你快速建立大資料知識體系

資料管理

後設資料 MetaData 狹義的解釋是用來描述資料的資料,廣義的來看,除了業務邏輯直接讀寫處理的那些業務資料,所有其它用來維持整個系統運轉所需的資訊/資料都可以叫作後設資料。比如資料表格的 Schema 資訊,任務的血緣關係,使用者和指令碼/任務的許可權對映關係資訊等等。

管理這些附加 MetaData 資訊的目的,一方面是為了讓使用者能夠更高效的挖掘和使用資料,另一方面是為了讓平臺管理人員能更加有效的做好系統的維護管理工作。

收藏!一張圖幫你快速建立大資料知識體系

資料質量

收藏!一張圖幫你快速建立大資料知識體系

資料安全

沒有安全做保障,一切大資料應用都是空談。資料業務未來最大的挑戰就是如何安全落地。特別是隨著一些列資料安全的問題發生,對大資料的保護成為全球關注的熱點。各個企業特別是掌握了海量使用者資訊的大型企業,有責任也有義務去保護資料的安全。

收藏!一張圖幫你快速建立大資料知識體系


相關文章