最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

從大數(shù)據(jù)到圖計(jì)算-Graph On BigData

2023-07-04 17:48 作者:GeaFlow  | 我要投稿

GeaFlow(品牌名TuGraph-Analytics) 已正式開源,歡迎大家關(guān)注?。。g迎給我們 Star 哦!?Welcome to give us a Star!?

GitHub?? https://github.com/TuGraph-family/tugraph-analytics

更多精彩內(nèi)容,關(guān)注我們的博客 https://tugraph-analytics.github.io/



背景

自2003年Google的三篇大數(shù)據(jù)領(lǐng)域經(jīng)典論文GFS、MapReduce和BigTable發(fā)表以來,大數(shù)據(jù)領(lǐng)域取得了長(zhǎng)足的發(fā)展。尤其是開源大數(shù)據(jù)領(lǐng)域各種優(yōu)秀的開源大數(shù)據(jù)引擎層出不窮,先后出現(xiàn)了Hadoop、Hive、Storm、Spark、Flink以及Presto等多種優(yōu)秀的開源項(xiàng)目。從應(yīng)用場(chǎng)景上覆蓋了離線計(jì)算、流式計(jì)算、OLAP查詢以及流批一體等多種計(jì)算形態(tài),針對(duì)大數(shù)據(jù)的處理技術(shù)日益完善和多樣化。

這些大數(shù)據(jù)引擎主要處理的是表模型的數(shù)據(jù),即將要處理的數(shù)據(jù)以表模型來建模,然后進(jìn)行加工處理。表模型雖然相對(duì)簡(jiǎn)單,易于理解,然后也存在局限性,尤其是在處理復(fù)雜關(guān)系的運(yùn)算和表達(dá)上存在著比較大的困難。表模型主要通過Join的方式來處理表之間的關(guān)聯(lián)關(guān)系,Join的方式會(huì)帶來大量的shuffle,增加運(yùn)行資源。尤其是當(dāng)關(guān)聯(lián)度數(shù)比較高時(shí),Join方式的弊端會(huì)更加明顯。另外對(duì)于復(fù)雜關(guān)系的描述比如最短路徑、k-hop等通過表模型語(yǔ)言SQL也很難表達(dá)。

圖模型作為一種以點(diǎn)和邊作為基本單元定義的數(shù)據(jù)模型天然可以描述關(guān)聯(lián)關(guān)系。在圖模型里面以點(diǎn)代表實(shí)體,以邊代表關(guān)系。比如在人際關(guān)系圖里面,每一個(gè)人可以用一個(gè)點(diǎn)來表示,人和人之間的關(guān)系通過邊來表示,人與人之間可以存在各種各樣的復(fù)雜關(guān)系,這些關(guān)系都可以通過不同的邊來表示?;趫D模型一方面可以很好的描述復(fù)雜關(guān)系以及復(fù)雜關(guān)系的運(yùn)算,另外一方面圖的存儲(chǔ)模型天然存儲(chǔ)點(diǎn)邊關(guān)聯(lián)關(guān)系,在計(jì)算層面可以獲得更好的計(jì)算性能。


實(shí)時(shí)圖計(jì)算引擎-TuGraph-Analytics

在螞蟻金融風(fēng)控場(chǎng)景下存在大量復(fù)雜關(guān)系的處理,比如反套現(xiàn)系統(tǒng)里面需要查找多跳的轉(zhuǎn)賬關(guān)系來檢查是否存在環(huán)路,判斷用戶是否存在套現(xiàn)行為;日志歸因分析場(chǎng)景下需要分析用戶的行為路徑等。這些場(chǎng)景一方面關(guān)聯(lián)關(guān)系復(fù)雜,另外一方面計(jì)算時(shí)效性要求高,業(yè)務(wù)往往需要分鐘級(jí)甚至秒級(jí)延遲; 同時(shí)圖數(shù)據(jù)規(guī)模大,可以達(dá)到千億甚至萬(wàn)億點(diǎn)邊規(guī)模。傳統(tǒng)的大數(shù)據(jù)引擎無(wú)法滿足以上需求,比如Spark GraphX具備大規(guī)模圖數(shù)據(jù)處理的能力,但主要偏離線計(jì)算場(chǎng)景,無(wú)法滿足時(shí)效性要求;Flink具備強(qiáng)大的實(shí)時(shí)計(jì)算能力,但是很難處理多跳的實(shí)時(shí)Join關(guān)聯(lián)計(jì)算,尤其是數(shù)據(jù)規(guī)模大的場(chǎng)景。

面對(duì)這些問題和挑戰(zhàn),螞蟻圖計(jì)算團(tuán)隊(duì)從實(shí)際問題出發(fā),經(jīng)過多年探索和實(shí)踐,實(shí)現(xiàn)了一套分布式實(shí)時(shí)圖計(jì)算引擎GeaFlow(品牌名TuGraph-Analytics)。GeaFlow以圖模型作為基本的數(shù)據(jù)模型,在圖模型基礎(chǔ)之上定義了一套圖計(jì)算的編程接口,同時(shí)和流式處理能力相結(jié)合,實(shí)現(xiàn)了流式圖計(jì)算的能力。在DSL語(yǔ)言層面,GeaFlow將表處理語(yǔ)言SQL和圖查詢語(yǔ)言ISO/GQL相結(jié)合,實(shí)現(xiàn)了圖表一體的數(shù)據(jù)分析能力。通過GeaFlow流圖計(jì)算的能力,很好的解決了金融場(chǎng)景下面臨的大規(guī)模數(shù)據(jù)復(fù)雜關(guān)聯(lián)關(guān)系實(shí)時(shí)計(jì)算的問題。

GeaFlow整體架構(gòu)

GeaFlow整體架構(gòu)從上往下包含以下幾層:


* GeaFlow DSL GeaFlow對(duì)用戶提供圖表融合分析語(yǔ)言,采用SQL + ISO/GQL方式.用戶可以通過類似SQL編程的方式編寫實(shí)時(shí)圖計(jì)算任務(wù).
* GraphView API GeaFlow以GraphView為核心定義的一套圖計(jì)算的編程接口,包含圖構(gòu)建、圖計(jì)算以及Stream API接口.
* GeaFlow Runtime GeaFlow運(yùn)行時(shí),包含GeaFlow圖表算子、task調(diào)度、failover以及shuffle等核心功能.
* GeaFlow State GeaFlow的圖狀態(tài)存儲(chǔ),用于存儲(chǔ)圖的點(diǎn)邊數(shù)據(jù).同時(shí)流式計(jì)算的狀態(tài)如聚合狀態(tài)也存放在State中.
* K8S Deployment GeaFlow支持K8S的方式進(jìn)行部署運(yùn)行.
* GeaFlow Console GeaFlow的管控平臺(tái),包含作業(yè)管理、元數(shù)據(jù)管理等功能.

TuGraph-Analytics和大數(shù)據(jù)生態(tài)結(jié)合
圖計(jì)算系統(tǒng)不是一個(gè)孤立的系統(tǒng),必須和現(xiàn)有大數(shù)據(jù)生態(tài)結(jié)合,才能更好的解決大數(shù)據(jù)領(lǐng)域的問題。GeaFlow通過Connector插件的形式支持了和主流大數(shù)據(jù)生態(tài)的打通,比如Kafka/Hive/HDFS等。通過Connector插件,可以很容易將大數(shù)據(jù)生態(tài)的數(shù)據(jù)接入的到圖計(jì)算系統(tǒng)中來。下面我們將以Hive為例介紹如何將數(shù)倉(cāng)里的數(shù)據(jù)導(dǎo)入到GeaFlow圖存儲(chǔ)中,然后跑通一個(gè)圖算法。

圖定義

我們首先需要定義張圖,使用Create Graph語(yǔ)法定義如下:


這張圖定義包含點(diǎn)表person和邊表knows. 點(diǎn)表person定義了點(diǎn)的屬性信息和id字段,id字段唯一標(biāo)識(shí)圖里面的點(diǎn),為點(diǎn)表的主鍵,通過ID 關(guān)鍵字來定義。邊表knows里面定義好友關(guān)系,srcId為關(guān)系的起點(diǎn),通過SOURCE ID關(guān)鍵字定義;targetId為關(guān)系的目標(biāo)點(diǎn),通過DESTINATION ID關(guān)鍵字定義。weight字段則為邊的一個(gè)屬性字段。一張圖的點(diǎn)邊或者邊表可以包含零個(gè)或者多個(gè)屬性字段。

Hive表定義

首先我們需要定義一張Hive點(diǎn)表和Hive邊表, 表里面指定schema信息以及metastore uri等信息:

GeaFlow是一個(gè)流式圖計(jì)算引擎,數(shù)據(jù)源按照window size切分成一系列的window, 引擎會(huì)依次處理這些window的數(shù)據(jù)。如果window size設(shè)置為-1,則代表一個(gè)All Window,即一次全量處理所有數(shù)據(jù)。對(duì)于Hive這樣的批數(shù)據(jù)源接口,需要設(shè)置window size為-1來處理。

構(gòu)圖

構(gòu)圖是將外部數(shù)據(jù)表的數(shù)據(jù)寫入到圖里面,可以通過Insert語(yǔ)句來完成。如下語(yǔ)句,分布將hive表里面的數(shù)據(jù)寫入到friend圖的person表和knows表里面,完成圖數(shù)據(jù)的構(gòu)建。


圖計(jì)算

接下來是對(duì)構(gòu)建好的圖數(shù)據(jù)做圖算法計(jì)算,我們以SSSP(單源最短路徑)為例進(jìn)行介紹:


首先需要定義一個(gè)結(jié)果表result來存放計(jì)算結(jié)果,然后通過USE GRAPH命令來設(shè)置當(dāng)前計(jì)算用到的圖。最后通過CALL語(yǔ)句來執(zhí)行SSSP算法(其中SSSP算法的入?yún)槠鹗键c(diǎn)id), 并將計(jì)算結(jié)果寫入結(jié)果表。

總結(jié)

本文首先介紹了圖計(jì)算引擎GeaFlow產(chǎn)生的歷史背景,然后介紹了GeaFlow如何和大數(shù)據(jù)生態(tài)整合。并通過一個(gè)例子介紹了如何將Hive的數(shù)據(jù)轉(zhuǎn)換成圖并在圖上運(yùn)行一個(gè)SSSP算法。



GeaFlow(品牌名TuGraph-Analytics) 已正式開源,歡迎大家關(guān)注!?。?/p>

歡迎給我們 Star 哦!

Welcome to give us a Star!

GitHub?? https://github.com/TuGraph-family/tugraph-analytics

更多精彩內(nèi)容,關(guān)注我們的博客 https://tugraph-analytics.github.io/?

從大數(shù)據(jù)到圖計(jì)算-Graph On BigData的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
南部县| 宽城| 关岭| 仙游县| 罗山县| 大港区| 南城县| 黎平县| 韩城市| 清丰县| 呼和浩特市| 璧山县| 盐亭县| 邵武市| 延寿县| 汕尾市| 普格县| 新干县| 罗城| 龙口市| 建湖县| 凤山市| 句容市| 高青县| 灯塔市| 舟山市| 黑河市| 松溪县| 黄龙县| 巍山| 长汀县| 孟津县| 英吉沙县| 亳州市| 东台市| 凌云县| 百色市| 沙河市| 呼玛县| 大关县| 玛多县|