大數據平臺架構技術選型與場景運用

內容來源:2017年5月6日,大眼科技CTO張逸在「魅族技術開放日第八期——數據洞察」進行《大數據平臺架構技術選型與場景運用》演講分享。IT大咖說做爲獨家視頻合做方,經主辦方和講者審閱受權發佈。
閱讀字數 1819 | 4分鐘閱讀


摘要

本次分享將結合多個大數據項目與產品研發的經驗,探討如何基於不一樣的需求場景搭建通用的大數據平臺。內容涵蓋數據採集、存儲與分析處理等多方面的主流技術、架構決策與技術選型的經驗教訓。html

嘉賓演講視頻和PPT地址:t.cn/R9xaSOB數據庫

大數據平臺內容

數據源每每是在業務系統上,大多數作數據分析的時候,不會直接對業務的數據源進行處理,這時就須要數據採集。編程

採集到數據以後,基於數據源的特色把這些數據存儲下來。網絡

最後根據存儲的位置作數據分析和處理。架構

整個大的生態圈的核心就是數據採集、數據存儲和數據分析。運維

數據源的特色

數據源的特色決定了數據採集與數據存儲的技術選型。數據源的特色主要有來源、結構、可變性和數據量四大類。機器學習

來源有內部數據和外部數據,它們的處理方式是不同的。分佈式

結構型數據和非結構型數據的選型也是不一樣的。oop

第三個特色是數據是否具備可變性,分爲不變可添加和能夠修改刪除兩種類型。性能

數據量則有大數據量和小數據量之分。

內部數據

內部數據來自企業系統內部,能夠採用主動寫入技術,從而保證變動數據及時被採用。

外部數據

外部數據分爲API調用和網絡爬蟲。

若是要取到的數據自己提供了API,能夠經過調用API來得到數據。

另外一種狀況是沒有提供API,經過爬蟲去把數據「爬」過來。

非結構化數據&結構化數據

非結構化數據和結構化數據在存儲的時候選型徹底不一樣。非結構化數據更多會選擇NoSQL的數據庫,而結構化數據考慮到數據的一致性和查詢在某些方面作join時的快速性,則會更偏向於選擇傳統的關係型數據庫,或是像TERADATA這樣非開源的專業數據庫,以及PostgreSQL這種支持分佈式的數據庫。

不變可添加

若是數據源的數據是不變的,或者只容許添加,則採集會變得很是容易,同步時只須要考慮最簡單的增量同步策略,維持數據的一致性也變得相對容易。

可修改可刪除

數據源的數據有些可能會修改或刪除,尤爲是許多維表常常須要變更。要對這樣的數據進行分析處理,最簡單的辦法就是採用直連形式。若是要進行數據採集,就要考慮同步問題。

大數據量


利用時間來處理大數據量並非一個實時的處理方式。要作到實時的處理方式,應該採用流式處理。要將兩種方式結合起來,就要用到大數據的lambda架構。

Lambda架構分爲了三層,最下層是speed layer,要求速度快,也就是實時。

最上層是batch layer,也就是批處理。

經過中間層serving layer,按期或不按期地把batch views和speed views去作merged,會產生一個結合了batch的數據。它既知足了必定的實時性,又能知足必定的大數據量。這是目前比較流行的一種大數據的處理方式。

一個典型的數據加載架構


數據存儲的技術選型

取決於數據源的類型與數據的採集方式。

取決於採集後數據的格式與規模。

取決於分析數據的應用場景。

大數據平臺的特徵就是,相同的業務數據會以多種不一樣的表現形式,存儲在不一樣類型的數據庫中,造成一種poly-db的數據冗餘生態。

場景一:輿情分析

針對某手機品牌的輿情分析。客戶提出的需求是可以對輿情數據進行全文本搜索。輿情數據最高可能達到70億條,而全文本搜索的性能指標要求響應時間控制在10s之內。


爬蟲爬到kafka裏面,進行流處理去蟲去噪,再作語義分析,語義分析完以後將輿情數據寫入ES,全量數據寫入HDFS。

場景二:商業智能產品


聚合運算把數據源採集存儲的時候,是基於列的運算,而傳統數據庫是行式存儲。行式存儲針對於列的運算須要全表才能拿到,這時選擇用parquet。由於parquet是以列式方式作存儲,因此作統計分析很快。但parquet執行查詢會很慢,沒有優點。

場景三:Airbnb的大數據平臺


Airbnb的數據一部分來自於自己的業務數據在MySQL,還有一部分是大量的事件。數據源不一樣,處理的方式也不同。

基於日誌,就用事件寫入kafka;若是是針對MySQL,就用Sqoop,寫入HDFS裏,並創建Hive的集羣。還存了一份數據放入亞馬遜的S3。

有一部分業務就是對數據合併後放入HDFS作大量的業務查詢和業務統計。這時但願用SQL的方式進行查詢,會有不少選項,它選擇的是Presto。

還有一些流式處理或機器學習要用到Spark,選型就會不一樣。

數據處理的分類

從業務角度來看,能夠分爲查詢檢索、數據挖掘、統計分析和深度分析。

從技術角度分爲五類,batch MapReduce、SQL、流式處理、Machine Learning和DeepLearning。

編程模型有離線編程模型、內存編程模型和實時編程模型。


基於數據源的特色、分類,採集的方式,以及存儲的選型,到數據分析和處理的分類,可得出一個相對整體的大數據平臺架構。

我今天的分享就到這裏,謝謝你們!

相關文章
相關標籤/搜索