從數據到大數據,數據技術&工具的演變

0 評論 7716 瀏覽 38 收藏 22 分鐘

編輯導語:大數據近些年來是一個十分火熱的話題,關于大數據的文章也是數不勝數。本文作者通過梳理自己看過的大數據相關的資料和書籍,為我們介紹了從“小數據”演化為“大數據”的過程是怎樣的?并且分享了一些數據技術以及工具。

對于大數據,叮當一直都很感興趣,最近正好在看數據相關的書和資料,就把這些東西梳理了一下。本文將用4張邏輯圖為主線,簡單介紹一個產品從“小數據”演化為“大數據”的過程,及可能用到的工具。

本文核心邏輯:

一、一個簡陋版互聯技術架構

假設我們要搭建一個小網站,在不使用成熟SaaS產品的前提下,我們的產品里面最少要有以下兩個部分:

1. 客戶端

可以是APP,小程序,甚至是一個Web網站,作為入口給我們的用戶訪問。

2. 服務端

服務端包括應用服務器和數據庫,應用服務器用來部署應用端程序,處理前端請求,并進行服務響應;數據庫用來存儲數據,服務器通過專門與數據庫交互的程序對數據庫進行讀寫操作(如:SQL)。

1. 我們是如何與技術系統交互的?

假設一個場景:張三打開了一個小網站,打開后出現了登錄界面,張三輸入自己的賬號和密碼之后點擊“登錄”,這時客戶端會發送給服務端一個請求,查詢一下數據庫里有沒有張三的賬號信息。

如果數據庫有的話張三就能登錄成功,可以使用小網站了;如果數據庫沒有張三的賬號信息,可能就會引導張三先進行注冊,注冊成功后數據庫中的用戶表中就會新增一條張三的信息,張三就能愉快的使用小網站了。

我們通過客戶端入口與這個系統交互,我們通過操作客戶端界面,對服務端進行請求拉取服務器&數據庫中的信息,給予我們反饋。

2. 服務器與數據庫有什么區別?

一般我們常稱為“服務器”的全稱叫“應用服務器”,數據庫全稱叫“數據庫服務器”,它們都是服務器,只是由于應用環境的不同,需要的性能不同做了區分。

數據庫服務器的處理器性能要求比較高,因為其要進行頻繁的操作,內存要求大,加快數據存取速度,應用服務器相對而言要求低一些。

3. 常用數據庫有哪些?

常用數據庫主要有“關系型數據庫”和“非關系型數據庫”:

1)關系型數據庫

折射現實中的實體關系,將現實中的實體關系拆分維度,通過關系模型表達出來(表及表與表之間的關系),常用的有MySQL(開源數據庫)、SQL Server(微軟家的)、Oracle(甲骨文家的,有完善的數據管理功能可以實現數據倉庫操作)。

2)非關系型數據庫

一種相對松散且可以不按嚴格結構規范進行存儲的數據庫,一邊叫NoSQL(常用的有mongoDB、 CouchDB,在MongoDB中使用鍵值對的方式表示和存儲數據,鍵值類似關系型數據庫表中的字段名對應的值,在MngoDB中,使用JSON格式的數據進行數據表示和存儲)。

二、隨著用戶增長技術架構的升級

小網站的用戶逐漸越來越多,小網站變成了大網站,單個服務器的負載很快就到了極限,這時就需要增加多臺服務器,組成服務器組,同時引入負載均衡服務器,對流量進行動態分配。

由于數據是互聯網產品的核心資產,為了保證系統數據的安全性,還需要增加數據備份服務器,多臺數據庫服務器同時運行,這樣哪怕一個數據庫出問題了,也不會影響業務正常運轉。

三、數據倉庫的誕生

隨著產品用戶量越來越大,市場競爭也更加激烈,迫切需要更加準確的戰略決策信息,數據庫中的數據雖然對于產品的運營非常有用,但由于結構復雜,數據臟亂,難以理解,缺少歷史,大規模查詢等問題對商業決策和目標制定的作用甚微。

在更好的發揮數據價值,1990數據倉庫之父比爾·恩門(Bill Inmon)提出了“數據倉庫”的概念,構建一種對歷史數據進行存儲和分析的數據系統,支撐企業的商業分析與戰略決策。

1. 數據倉庫的實現原理是什么?

數據倉庫的數據來源通常是歷史業務數據(訂單數據、商品數據、用戶數據、操作日志、行為數據……),這些數據統一匯總存儲至企業數據倉庫,通過對倉庫里的綜合數據進行有目的的分析支撐業務決策。

2. 數據庫與數據倉庫有什么區別?

數據庫是對實時數據進行存儲和事務性處理的系統,而數據倉庫則是為了分析而設計。

3. 數據倉庫與大數據倉庫有什么區別?

數據倉庫與大數據倉庫的區別:大數據=海量數據+處理技術+平臺工具+場景應用,數據倉庫是一個數據開發過程,其區別主要體現在:商業價值、處理對象、生產工具三個方面。

1)商業價值

都是業務驅動的,有明確的業務場景需求,通過海量數據分析為業務提供決策依據,“傳統數倉”出現更早,場景單一保守(報表,BI);而大數據技術更成熟成本更低,應用場景更多(用戶畫像、推薦、風控、搜索……)

2)處理對象

都是對數據進行獲取、加工、管理、治理、應用處理,但大數據處理數據類型更多樣化,傳統數倉基本只擅長處理結構化和半結構化的數據。

3)生產工具

“傳統數倉”一般采購國外知名廠商成熟方案,價格昂貴可拓展性差,“大數據”則有成套的開源技術。

建設方法:大數據技術沿用了“傳統數倉的數據建設理論,但由于在處理技術上新增了非結構化數據,生產工具上新增了流式計算(比實時計算要稍微遲鈍些,但比離線計算又實時的多)。

四、大數據技術架構

1. 什么是大數據?

一種規模大到在獲取、存儲、管理、分析方面大大超出了傳統數據庫軟件工具能力范圍的數據集合,具有海量的數據規模(一般以TB為起始單位)、快速的數據流轉、多樣的數據類型和價值密度低四大特征——麥肯錫全球研究

根據“海量的數據規?!?、“快速的數據流轉”、“多樣的數據類型”、“價值密度低”去看,符合這些特點的大都是平臺型公司,有海量用戶產生內容。

Facebook基礎設施工程副總裁杰·帕里克(Jay Parikh)曾透露,Facebook每天處理的數據量多達500TB(1TB=1000GB)。

2. 什么是分布式計算?

看完上面,你可能會想,像Facebook每天500TB的數據量要用什么樣的技術才能處理呢?

這就要引入“分布式計算”了,既然單個數據庫的計算能力有限,那我們就把大量的數據分割成多個小塊,由多臺計算機分工完成,然后將結果匯總,這些執行分布式計算的計算機叫做集群。

如果還不理解的話我們舉個栗子:假期要結束了張三還有有10份作業沒寫,他找了5個同學,每個同學寫2份,最后匯總給張三。

大數據時代存儲計算的經典模型,Apache基金會名下的Hadhoop系統,核心就是采用的分布式計算架構,也是Yahoo、IBM、Facebook、亞馬遜、阿里巴巴、華為、百度、騰訊等公司,都采用技術架構(下方邏輯圖中黃框部分都是Hadoop生態的成員)。

3. 大數據架構與模塊主要有哪些?

大數據架構主要可以分為:數據采集,數據存儲,計算查詢,數據服務,數據應用5個環節。

1)數據采集

通過采集工具把結構化數據進行采集、分發、校驗、清洗轉換;非結構化數據通過爬取,分詞,信息抽取,文本分類,存入數據倉庫中。

2)數據存儲

一般分3層,最底層的式ODS(操作數據)層,直接存放業務系統抽取過來的數據,將不同業務系統中的數據匯聚在一起;中間是DW(數據倉庫)層,存放按照主題建立的各種數據模型;最上層是DM(數據集市)層,基于DW層上的基礎數據整合匯總成分析某一個主題域的報表數據。

3)計算查詢

根據具體的需求選擇對應的解決方案:離線、非實時、靜態數據的可以用批處理方案;非離線、實時、動態數據、低延遲的場景可用流處理方案。

4)數據服務

通過API把數倉中海量的數據高效便捷的開放出去支撐業務,發揮數據價值。

5)數據應用

基于數據倉庫中結構清晰的數據高效的構建BI系統支撐業務決策;根據海量的數據構建以標簽樹為核心的用戶畫像系統,為個性化推薦、搜索等業務模塊提供支撐。

4. 大數據采集模塊

一般應用于公司日志平臺,將數據緩存在某個地方,供后續的計算流程進行使用 針對不同數據源(APP,服務器,日志,業務表,各種API接口,數據文件……)有各自的采集方式。

目前市面上針對日志采集的有 Flume、Logstash、Kafka……

1)Flume

是一款 Cloudera 開發的實時采集日志引擎,主打高并發、高速度、分布式海量日志采集,支持在日志系統中定制各類數據發送,支持對數據簡單處理并寫給各種數據接受方,主要特點:

  • 側重數據傳輸,有內部機制確保不會丟數據,用于重要日志場景;
  • 由java開發,沒有豐富的插件,主要靠二次開發;
  • 配置繁瑣,對外暴露監控端口有數據。最初定位是把數據傳入HDFS中,跟側重于數據傳輸和安全,需要更多二次開發配置。

2)Logstash

是 Elastic旗下的一個開源數據收集引擎,可動態的統一不同的數據源的數據至目的地,搭配 ElasticSearch 進行分析,Kibana 進行頁面展示,主要特點:

  • 內部沒有一個persist queue(存留隊列),異常情況可能會丟失部分數據;
  • 由ruby編寫,需要ruby環境,插件很多;
  • 配置簡單,偏重數據前期處理,分析方便?側重對日志數據進行預處理為后續解析做鋪墊,搭配ELK技術棧使用簡單。

3)Kafka

最初是由領英開發,2012 年開源由Apache Incubato孵化出站。以為處理實時數據提供一個統一、高吞吐、低延遲的平臺,適合作為企業級基礎設施來處理流式數據?(本質是:按照分布式事務日志架構的大規模發布/訂閱消息隊列)。

4)Sqoop

與上面的日志采集工具不同,Sqoop的主要功能是為 Hadoop 提供了方便的 RDBMS(關系型數據庫)數據導入功能,使得傳統數據庫數據向 HBase 中遷移變的非常方便。

5. 大數據存儲&資源管理模塊

在數據量小的時候一般用單機數據庫(如:MySQL) 但當數據量大到一定程度就必須采用分布式系統了,Apache基金會名下的Hadhoop系統是大數據時代存儲計算的經典模型。

1)HDFS

是 Hadoop里的分布式文件系統,為HBase 和 Hive提供了高可靠性的底層存儲支持。

2)HBase

是Hadoop數據庫,作為基于非關系型數據庫運行在HDFS上,具備HDFS缺乏的隨機讀寫能力,比較適合實時分析。

3)Yarn

是一種新的 Hadoop 資源管理器,它是一個通用資源管理系統,可為上層應用提供統一的資源管理和調度,它的引入為集群在利用率、資源統一管理和數據共享等方面帶來了巨大好處。

6. 大數據計算查詢模塊

這里首先要介紹一下批處理和流處理的區別:

  • 批計算:離線場景、靜態數據、非實時、高延遲(場景:數據分析,離線報表……)
  • 流計算:實時場景,動態數據,實時,低延遲(場景:實時推薦,業務監控……)

大數據常用的計算查詢引擎主要有:Hive、Spark、Presto、Presto、Kylin、Druid……

1)Hive

是基于Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,并提供完整的sql查詢功能,可以將sql語句轉換為MapReduce任務進行運行,其優點是學習成本低。

2)Spark

Spark是加州大學伯克利分校AMP實驗室所開源的專門用于大數據量下的迭代式計算,是為了跟?Hadoop 配合:

  • 批處理模式下的類Hadoop MapReduce的通用并行框架,Spark 與 MapReduce 不同,它將數據處理工作全部在內存中進行,提高計算性能;
  • 流處理模式下,Spark 主要通過 Spark Streaming 實現了一種叫做微批(Micro-batch)的概念可以將數據流視作一系列非常小的“批”,借此即可通過批處理引擎的原生語義進行處理;
  • Spark適合多樣化工作負載處理任務的場景,在批處理方面適合眾數吞吐率而非延遲的工作負載,SparkSQL兼容可以把Hive作為數據源spark作為計算引擎。

3)Presto

由 Facebook 開源,是一個分布式數據查詢框架,原生集成了 Hive、Hbase 和關系型數據庫。但背后的執行模式跟Spark類似,所有的處理都在內存中完成,大部分場景下要比 Hive 快一個數量級。

4)Kylin

Cube 預計算技術是其核心,基本思路是預先對數據作多維索引,查詢時只掃描索引而不訪問原始數據從而提速。劣勢在于每次增減維度必須對 Cube 進行歷史數據重算追溯,非常消耗時間。

5)Druid

由 MetaMarket 開源,是一個分布式、面向列式存儲的準實時分析數據存儲系統,延遲性最細顆粒度可到 5 分鐘。它能夠在高并發環境下,保證海量數據查詢分析性能,同時又提供海量實時數據的查詢、分析與可視化功能。

7.? 數據可視化模塊

1)可視化框架

開源可視化框架:業界比較有名的式Superset和Metabase

Superset的方案更加完善,支持聚合不同數據源形成對應的指標,再通過豐富的圖表類型進行可視化,在時間序列分析上比較出色,與Druid深度集成,可快速解析大規模數據集;但不支持分組管理和圖表下鉆及聯動功能,權限管理不友好。

Metabase比較重視非技術人員的使用體驗,界面更加美觀,權限管理上做的比較完善,無需賬號也可以對外共享圖表和數據內容;但在時間序列分析上 不支持不同日期對比,還需要自動逸SQL實現,每次查詢只能針對一個數據庫,操作比較繁瑣。

2)可視化軟件

商用軟件主流的主要有:PowerBI 、Tableau、FineBI

Tableau:操作簡單,可視化,基本所有的功能都可以拖拽實現,但價格貴,且數據清洗功能一般,需要有較好的數據倉庫支持?;

FineBI:操作簡單,與Tableau類似,但數據清洗能力比Tableau要好,付費方式采用按功能模塊收費,永久買斷;

PowerBI?:可以做復雜報表,篩選、計算邏輯清晰,可自定義,但很多功能要用DAX編程序,托拉拽能實現的功能很有限,不易入門。

【參考書籍】

《產品經理必懂的技術那點事》:主要是關于產品經理需要了解的技術知識的科普,無論是為了減少撕*,還是提高自己寫需求的專業能力,這本書都值得產品經理一讀。

《大數據架構商業之路》:主要是關于大數據技術的介紹,和常用大數據技術的優缺點,可以當作詞典使用。

【參考文章】

《深入淺出大數據:到底什么是Hadoop?》

《數據人必須了解的大數據中臺技術架構》

 

作者:小叮當,公眾號:叮當的成長地圖;

本文由 @小叮當 原創發布于人人都是產品經理。未經許可,禁止轉載。

題圖來自Unsplash,基于CC0協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發揮!