騰訊雲大資料實戰案例

NicolasLearner發表於2020-10-25

內容來源:2017年5月20日,騰訊高階軟體工程師吳友強在“中生代技術沙龍系列之網際網路大資料”進行《騰訊雲大資料實戰》演講分享。IT 大咖說作為獨家視訊合作方,經主辦方和講者審閱授權釋出。

閱讀字數:1954 | 3分鐘閱讀

嘉賓演講視訊回顧及PPT,請點選:http://t.cn/RgMHJEC

摘要

騰訊雲是騰訊公司傾力打造的面向廣大企業和個人的公有云平臺。騰訊高階軟體工程師吳友強將為我們分享大資料在騰訊雲的實踐。

一、TDF(資料工坊)簡介

TDF簡介

源於騰訊雲數智大資料套件的輕量雲上大資料產品,提供基於SQL的大資料計算框架。

適用於需要動態靈活獲取大資料計算能力進行批量計算、日誌處理或資料倉儲應用的場景。

因為公有云上的使用者需要簡單,所以要有一個視覺化的整合開發環境,在這環境中可以進行資料血緣管理、工程/工作流管理、使用者管理和告警/日誌。通過一些工具把資料匯入到資料儲存裡面,然後對資料進行處理,最終輸出資料。下層的任務和資源排程是用來排程使用者的任務在各個資源上執行起來。底層就是騰訊雲的基礎設施。

二、CDP(資料管道)實現詳解

CDP整體架構-設計

上圖是我們剛開始在開發之前做的設計。最左邊有很多客戶的資料點,比如log、DB Binlog、自建的Kafka以及自定義資料。我們會利用一些工具開發一個Flume外掛,幫助它把資料上雲。

資料到達中間部分,對資料進行校驗和處理。處理完成後根據使用者的需求通過外掛的方式實時匯入到TDF、COS或者其它儲存裡面。

CDP整體架構-目前

上圖是目前我們已經實施的工作。我們自己開發了一個Flume外掛,把資料實時傳送到騰訊公有云的資料接收器endpoint上。資料接收器會根據使用者的選擇來決定用Kafka還是CKafka。CKafka也是騰訊雲內部自行研發的一套相容轉換協議的訊息系統,基於C++開發,效能方面會比原生的提升很多。把資料匯入到Nifi裡進行二次開發,最終導到Hive中。

Flume簡介

FlumeNG是一個分散式、可靠、可用的系統。它能夠將不同資料來源的海量日誌進行高效收集、聚合、移動,最後儲存到一箇中心化資料儲存系統中。由原來的Flume OG到現在的Flume NG,進行了架構重構,並且現在NG版本完全不相容原來的OG版本。經過架構重構後,Flume NG更像是一個輕量級的小工具,非常簡單,容易適應各種方式日誌收集,並支援failover和負載均衡。

Flume的架構主要有一下幾個核心概念:

Event:一個資料單元,帶有一個可選的訊息頭。

Flow:Event從源點到達目的點的遷移的抽象。

Client:操作位於源點處的Event,將其傳送到Flume Agent。

Agent:一個獨立的Flume程式,包含元件Source、Channel、Sink。

Source:用來消費傳遞到該元件的Event。

Channel:中轉Event的一個臨時儲存,儲存有Source元件傳遞過來的Event。

Sink:從Channel中讀取並移除Event,將Event傳遞到Flow Pipeline中的下一個Agent(如果有的話)。

Flume外掛

Flume支援外掛開發,最簡單的方法就是直接拷貝已有外掛進行改造。

我們提供的endpoint需要許可權驗證,主要是基於騰訊雲的一些帳號,通過這個方式可以實時地在客戶端進行加密或格式化的儲存。

首先我們是多使用者的系統,其次要防止使用者資料量過大。通過資料大小限制能夠滿足90%以上的使用者需求,而對於資料大小的限制是根據自身配置來決定的。

在傳輸過程中我們採用了一些自定義的協議,這個協議基於avro進行格式化,主要是便於對資料進行序列化和反序列化。

Kafka客戶端改造支援CKafka

CKafka(Cloud Kafka)是一個分散式的、高吞吐量、高可擴充套件性的訊息系統,100%相容開源 Kafka API(0.9版本)。Ckafka 基於釋出/訂閱模式,通過訊息解耦,使生產者和消費者非同步互動,無需彼此等待。Ckafka 具有資料壓縮、同時支援離線和實時資料處理等優點,適用於日誌壓縮收集、監控資料聚合等場景。

CKafka主要開放給公有云上的部分VIP使用者使用,VIP只能繫結對應的虛擬機器,這樣保證了它的安全性。但我們是直接使用內網IP訪問的,所以我們需要調整客戶端的互動協議,通過某種手段把VIP替換成真實的IP,以保證資料的通暢。還有自定義的管理API和封裝Java SDK。

NiFi

ApacheNiFi 是一個易於使用、功能強大而且可靠的資料處理和分發系統。Apache NiFi 是為資料流設計。它支援強大且可高度配置的基於有向圖的資料路由、轉換和系統中介邏輯,支援從多種資料來源動態拉取資料。Apache NiFi原來是NSA的一個專案,現在開源出來,由Apache基金會進行管理。

主要特性:

基於web的使用者介面:無縫體驗設計、控制和監控。

高度可配置:資料丟失容錯和保證交付;低延遲和高吞吐量;動態優先順序;流可以在執行時修改;背壓(Back presure)。

資料來源:從始至終跟蹤資料流。

為擴充套件設計:構建自己資料處理器;支援快速開發和有效的測試。

安全:支援SSL、SSH、HTTPS加密內容等等;多租戶授權和內部授權/策略管理。

Hive外掛

獲取後設資料:獲取Hive表結構資訊,是否支援Streaming API寫入。

資料寫入:insert插入,支援多分割槽批量插入;支援streaming;可以直接寫hdfs。

CDP未來?

1、支援etl功能,對前端進行分組和做一些實時的計算。

2、支援實時的計算和分析。使用者需要可以直接拿到結構去在前端進行展示,而不是再到其它系統上去做計算和分析。

3、支援實時SQL。實時計算對部分使用者來說使用成本可能會更高,大部分做資料統計的人員對SQL的掌握度會更高。實時SQL是對資料進行SQL的查詢計算。

4、視覺化影像操作介面。使用者的需求越來越多樣化,騰訊雲上的很多產品都需要用到資料來做,我們希望以這種方式讓使用者可以自己選擇資料來源。

我今天的分享就到這裡,感謝聆聽!

相關文章