數據產品指北(三)— 數據平臺

“其實只是對自己的學習和經驗做個總結,儘量言簡意賅。指的不好,還請包涵。”

數據平臺其實是個概括的詞,泛指企業中的數據環境、數據形態和數據架構等內容。

數據環境與數據形態

數據環境指的是數據存儲、處理、轉換所處的物理環境,例如生產環境、分析環境和測試環境等生產環境是生產應用和系統實時運行所處的環境,其中的數據是會實時變化的。分析環境是與生產環境解耦的一個數據環境,在數據環境中對數據進行分析,不會影響生產環境的正常運行。分析環境中的數據來源於生產環境中的“快照”,因此本質上是離線的數據。

爲保證分析環境的作業不對生產環境造成影響,我們應該避免數據直連的方式,即將原始數據直接從生產系統導入分析系統的緊耦合方式。這種方式在數據量較小時可能不會出現問題,但當數據量增大後,數據直連的弊端便會逐漸展現。主要體現在雙方環境的互相影響、安全上的隱患、平臺擴展性差等方面。因此更合理的辦法是在生產環境和分析環境之間設置數據緩衝區,作爲中轉從各個系統接收原始數據並暫存,經過ETL後導入分析環境。

至此,根據數據所處環境,可將數據定義爲3種基本形態:生產數據、原始數據和分析數據。數據和其所處環境之間的聯繫如下圖所示。

1. 生產數據

生產數據是動態的,會隨着業務的變化而變化,例如用戶訂單狀態會因爲用戶、商戶、物流等相關方的行爲而發生變化。數據分析工作通常不會直接接觸生產數據,相反,分析數據可能會轉化成生產數據。例如用戶標籤數據,是通過分析數據構建的,但可能會形成畫像、推薦等應用,從而轉化爲生產數據爲業務提供服務。

2. 原始數據

原始數據由生產系統中的數據解耦而得到。解耦過程通常包括了數據脫敏、篩選、批量導出等。原始數據的存放應獨立於生產環境和分析環境,以避免不同環境間的互相影響,也就是前面提到的數據緩衝區。

3. 分析數據

分析數據由原始數據經過ETL後得到。ETL(Extract-Transform-Load)是抽取-轉換-加載的縮寫,該過程會對原始數據進行清洗、轉換,按照統一的標準將數據存儲在分析環境中。例如去掉一些無效字段,對空值、異常值進行插補,對日期格式進行統一等操作,都會在ETL過程中完成。ETL過程還可能包含對數據的優化存儲,以提升存儲和讀取效率,比如創建索引、分區、分表等。

對分析數據的存儲、使用,需要依賴於數據平臺,數據平臺的性能對處理分析數據有決定性的影響。不同規模、類型的分析數據,也可能適用於不同的數據平臺。

具體的數據流轉方式可參考下圖,數據緩衝區作爲中轉,一端連接了生產環境中的各類應用系統,另一端連接了分析環境中的各類數據平臺。

數據平臺

數據平臺是存放分析數據的平臺,也是支持數據分析和挖掘的底層平臺。數據平臺包括了我們最爲熟悉的傳統數據倉庫,以及一些“現代化”的多種數據庫產品。簡化的數據平臺架構圖如下。

現代的數據平臺融合了傳統的數據倉庫、大數據平臺、MPP數據庫、NoSQL數據庫等多種數據產品。

從平臺架構視角來看,數據緩衝區屬於原始數據層,也叫ODS(Operational Data Store)層或貼源層。ODS層的數據粒度更細,能從微觀反映細節的關鍵數據,例如用戶訂單交易數據。在數據倉庫(Data Warehouse,DW)中又分爲基礎層、主題層和數據集市層。

1. 基礎層

也有稱DWD(Data Warehouse Detail)層,基礎層對ODS層數據進行了清洗、轉換(即前面提到的ETL過程),和輕度彙總。產出爲數據明細、維度表、事實表等基礎數據。例如訂單表、商品列表以及一些日誌表等。

2. 主題層

也有稱DWS(Data Warehouse Service)層,主題層對數據按照一定維度或業務邏輯進行高度聚合,生成不同主題下的表。主題層一般已不存在具體的明細數據,所有數據按照主題進行了歸集。例如零售行業,可能會根據業務分成用戶主題、商品主題、銷售主題等。

3. 數據集市

數據集市(Data Mart)也有稱ADS(Application Data Store),數據集市將主題層和基礎層的數據按照各業務的實際需求進行聚合,形成寬表或數據立方體(Cube),可直接供業務部門和數據分析團隊使用。數據集市中主要存在的是事實表(fact)和維度表(dimension)。事實表中存放着業務的詳細數據,例如訂單、銷售等業務數據。維度表是圍繞事實表建立的,存放着一些維度屬性,定義了可以從哪些角度分析事實表,例如時間、地域、操作系統等維度。數據集市中的數據結構一般有星型結構(star)和雪花結構(snow),星型結構由一個事實表和一組維表組成,每個維表都有一個維作爲主鍵,所有這些維的主鍵組合成事實表的主鍵。使得事實表與每個維度表產生關聯,事實表位於中央,維度表圍繞在事實表周圍。雪花結構是在星型結構上的擴展,對一些維度表進一步層次化,將維度表擴展爲事實表,並建立下一層的維度表。雪花結構更加符合數據庫範式,減少數據冗餘,但在數據分析時,操作也可能更復雜。下方是星型結構和雪花結構的對比。

不同資料,以及不同企業內可能對上述內容的名稱、縮寫等有不同的定義,這個不用糾結,關鍵是理解每層所代表的具體含義和作用。

Hadoop掃盲

Hadoop作爲目前被廣泛應用於大數據平臺開發的基礎架構,有必要單獨瞭解。Hadoop本身是用於大數據存儲、計算、分析的分佈式存儲系統和分佈式計算框架。下圖是其核心組件架構。

Hadoop的核心模塊提供的是離線、批量的計算,本身並不適合強實時環境。實時計算需要結合相關組件,如Spark、Storm等,擴展後的Hadoop平臺具備一定的實時處理能力。下面簡單介紹下相關核心組件。

1. HDFS

HDFS(Hadoop Distributed File System)是一套分佈式的文件系統,是Hadoop平臺的文件基礎。HDFS適合存儲大批量的數據(PB級),但不適合低延遲場景,也不適合存儲大量小文件。HDFS主要解決的是文件實際存儲的問題。

2. MapReduce

MapReduce是Hadoop平臺的分佈式計算框架,其採用“分而治之”的思想,將一個可拆解的任務分發給多個計算節點進行計算,最後合併計算結果。因此MapReduce中包含了兩個部分:Map階段Reduce階段(整個過程還可能包括Split、Shuffle等階段)。參考下圖,以經典的單詞統計任務爲例。可以看出Map階段主要完成具體的分工和簡單的計數,Reduce階段完成最終的計算任務,即單詞數累加。

MapReduce主要用於離線的海量數據(PB級以上)計算工作。

3. HBase

HBase是基於HDFS的列式存儲、非關係型(NoSQL)、分佈式數據庫,HBase具有高可用、高性能、列存儲、實時讀寫等特點。NoSQL被解釋爲Not Only SQL,不僅僅是SQL,非關係型數據庫不以SQL作爲主要訪問語言。其較關係型數據庫主要在成本、查詢速度、存儲格式、擴展性等方面的優勢。列式存儲是非關係型數據庫中的一類,傳統的關係型數據庫按照行進行存儲,而列式存儲數據庫按照每一列單獨存儲,僅查詢所需的列,因此查詢速度大幅提高。此類預備知識,在此就不做過多延伸了。

利用HBase的特性,可以在廉價的服務器上搭建一套大規模的存儲集羣。

HDFS、MapReduce和HBase被稱爲Hadoop的三駕馬車,是其最主要的構成。最後在簡單介紹下其他常用組件,作爲補充瞭解。包括了數據採集傳輸、數據存儲、數據計算、數據分析表達和系統管理幾個方面。

1. 數據採集傳輸類

1)Flume:針對非結構化的海量日誌的採集工具,主要用於收集數據到HDFS。

2)Sqoop:針對在Hadoop和結構化數據存儲(如關係型數據庫)之間高效傳輸大批量數據的工具。主要用於從關係型數據庫管理系統(如Oracle、MySQL)向Hadoop中(HDFS、Hive)導入數據,或從Hadoop中導入關係型數據庫。

3)Kafka:可持久化的分佈式消息隊列,用於發佈訂閱消息的系統。可與流式框架(如Storm)組合使用,完成實時數據的傳輸處理。

2. 數據存儲類

1)Hive:Hadoop的數據倉庫框架,基於MapReduce封裝。其將存儲在HDFS的文件映射成我們熟悉的數據表,並提供類SQL(Hive SQL/HQL)語句進行數據表操作。是使用Hadoop平臺數據倉庫的必備技能。

2)Memcached:基於Key-Value的、高性能、分佈式內存對象緩存系統,解決了大數據量緩存的問題,可在內存中緩存數據查詢結果。

3)Redis:基於Key-Value的、可持久化的日誌型內存數據庫。Redis與Memcached類似,但支持更多的存儲類型。另外,Redis可以將內存中的數據寫入硬盤中,做持久化的保存。也可以設置key的過期時間,過期自動刪除緩存。

3. 數據計算類

1)Spark:不以MapReduce爲執行引擎、基於內存計算的數據處理框架,用於大數據分析處理的集羣計算系統。相比於MapReduce主要處理離線數據,Spark可以進行實時流式數據的分析處理。同時,其在內存中存儲工作數據集的特點使其性能領先於MapReduce,對內存的消耗自然也較大。當任務對實時性要求較高時,可考慮選擇Spark。

2)Storm:全內存計算的流式計算框架,定位是分佈式實時計算系統。可處理源源不斷流入的數據,來一條數據處理一條,是真正的純實時。

3)Flink:針對流數據+批數據的計算框架。把批數據看作流數據的一種特例,延遲性較低(毫秒級),且能夠保證消息傳輸不丟失不重複。

4. 數據分析及可視化

1)Zeppelin:數據分析工具,包含了大數據分析和可視化功能,可以通過Web頁面新建Notebook來完成數據的查詢、分析和導出。

2)ELK:是ElasticSearch, Logstash, Kibana的統稱,其是一套實時數據收集,存儲,索引,檢索,統計分析及可視化的解決方案。ElasticSearch是一個分佈式存儲及檢索引擎,可快速實時地存儲和查詢數據,常用於快速檢索內容。Logstash是一個收集實時流式數據(例如日誌)的數據收集引擎,可用於接收、處理和轉發日誌。Kibana是一個數據分析和可視化的平臺。可對ElasticSearch索引中存儲的數據進行搜索和查詢,並實現高級數據分析和可視化功能。最新版本已經改名爲Elastic Stack,並加入了採集數據的Beats項目

5. 系統管理

1)Zookeeper:是一個分佈式協調服務,爲應用提供統一命名、配置維護、域名服務、分佈式同步等一致性服務。

2)YARN:是Hadoop的集羣資源管理系統。可作爲框架管理器,對計算框架進行管理和資源調度,例如MapReduce、Spark、Storm和Flink等。

數據平臺篇對於非技術出身的產品及相關人員,閱讀起來會感覺非常枯燥,學習和理解也確實有一定難度。但如果能對相關知識進行充分了解,將在未來的數據工作中起到很大幫助,在與技術同學溝通時也會更加順暢。所以還是建議硬着頭皮啃下來的。

數據平臺篇到此結束。

參考文獻

陳春寶,闕子揚,鍾飛. 《大數據與機器學習:實踐方法與行業案例》. 2017.01.

鄧傑. 《Hadoop大數據挖掘從入門到進階實戰》. 2018.06.

溫春永,畢潔馨. 《從零開始學Hadoop大數據分析》. 2019.02.

梁旭鵬. 《數據產品經理修煉手冊》. 2019.03.



羅老師別這樣

歡迎關注公衆號:羅老師別這樣;感受一個產品人的成長與反思;

公衆號將持續更新深度學習筆記及個人心得,不輕易更新,但更新一定保證價值,望你和作者共同進步

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章