什麼是圖計算及其應用場景?

時間 2021-05-09 07:35:56

1樓:普適極客

圖的儲存方式:

圖之所以複雜在於每個頂點的邏輯位置都是相對的,頂點之間的關聯依賴也是不確定的,所以無法以資料元素在記憶體中的物理位置來表示元素之間的關係,即無法用簡單的順序儲存結構來表示。所以將圖的頂點和邊分別使用兩種結構來儲存表示會相對容易。

圖的鄰接矩陣是一種常見的圖儲存結構,它將n個頂點儲存在一維陣列中,用n*n的矩陣來表示任意兩點之間的關係。則主對角線全是無用空間,頂點的行向與列向邊的數量之和分別表示它的出度和入度。顯然對於邊數量相對於頂點較少的稀疏矩陣會極大的浪費儲存空間。

鄰接表用乙個線性表儲存頂點,與之鄰接的頂點會另外構成乙個線性表,由於鄰接點的數量不確定,故常使用鍊錶儲存。

圖的切分方式:

正態分佈是我們最為熟悉的在自然界常見的一種資料分布形式,它具有中間多,兩頭少的特點,比如我們身高,大家的身高多集中在平均身高區域,極矮或極高的人屬於少數。

其實冪律分布(Power-law distribution)也同樣常見,它是乙個不斷下降的曲線,從最高的峰值開始極速下降,後面拖了乙個長長的尾巴,比如微博大V擁有百萬粉絲,而普通人的關注度則寥寥無幾。

為什麼要介紹冪律分布呢?因為在圖計算中資料傾斜的情況非常常見,乙個點與圖中大多數的點有聯絡,我們應該如何將這些點分開儲存在不同的節點上,是儘量減少跨分塊的邊,犧牲記憶體減少節點與節點這間的通訊開銷;還是減少記憶體消耗,轉而增加通訊開銷,都是乙個值得權衡思考的問題。

圖的切分方式有兩種,邊切分點切分

邊切分每個頂點都儲存一次,但有的邊會被打斷分到兩台機器上。這樣做的好處是節省儲存空間;壞處是對圖進行基於邊的計算時,對於一條兩個頂點被分到不同機器上的邊來說,要跨機器通訊傳輸資料,內網通訊流量大。

點切分每條邊只儲存一次,都只會出現在一台機器上。鄰居多的點會被複製到多台機器上,增加了儲存開銷,同時會引發資料同步問題。好處是可以大幅減少內網通訊量。

圖資料劃分:

圖資料劃分是指在分布式計算中,將資料分發到集群中不同節點上。盡量做到分發到各節點上的資料量大小均勻,避免大量資料傾斜在某些節點所導致的負載不均衡的現象出現。

負載不均衡會使得資料量少的節點CPU利用不飽和而資料量多的節點計算速度緩慢,如果我們使用整體同步平行計算模型(BSP),每一輪迭代都要等到上一輪超步全部執行完後才會進行,在負載不均衡的情況下,需要浪費大量時間等待資料傾斜節點完成本輪任務。

因此,圖資料劃分是分布式圖計算系統中的乙個核心內容。

這裡我們介紹一種較為簡單的普通雜湊劃分。

普通雜湊劃分是對每個點的hash結果取餘數,即Hash(Key)%M,假設對機器編號從0到N-1,按照自定義的 hash()演算法,對每個請求的hash()值按M取模,得到餘數i,然後將點分發到編號為i的機器上。這樣我們就可以把點均勻的分發到M個機器上了。

圖計算框架

1. 單機記憶體圖處理系統

此類圖計算系統單機執行,可直接將圖完全載入到記憶體中進行計算。但是單機的計算能力和記憶體空間總是有限,故只能解決較小規模的圖計算問題。

2. 單機核外圖處理系統

此類圖計算系統單機執行,但是將儲存層次由RAM拓展到外部儲存器如SSD,Flash,SAS,HDD等,使其所能處理的圖規模增大。但受限於單機計算能力和核外儲存系統的資料交換的頻寬限制也無法在可接受的情形下處理超大規模的圖資料。

3. 分布式記憶體圖處理系統

此類圖計算系統將圖資料全部載入到集群中的記憶體中計算,理論上隨著集群規模的增大其計算效能和記憶體容量都線性增大,能處理的圖資料也按線性擴大。圖分割的挑戰在分布式系統愈加明顯,再加上集群網路總頻寬的限制,所以整體效能和所能處理的圖規模也存在一定的缺陷。

4. 分布式核外圖處理系統

此類圖計算系統將單機核外圖處理系統拓展為集群,能夠處理邊數量級為trillion的圖。

總結

我們介紹了大規模圖計算的基礎,在現實應用中我們應該選擇哪一種切分方式,計算框架都需要根據實際資料特徵來定奪。

【參考】

2樓:javeme

圖計算應用場景包括:社交網路分析、網路攻擊分析、金融風控與反欺詐、知識圖譜等。舉兩個簡單的例子:

比如:根據【關注】關係找到哪些人是重量級人物(層層匯聚);或者根據IP之間的【attack】關係找到哪些是幕後主使;或者根據通話與轉賬關聯網判斷某個人的風險等級。

比如:需要對商品分類則可以構造商品分類圖譜:聯想拯救者->筆記本->電腦->3C,這樣只要給定乙個商品我就能根據圖推理進行抽象分類,也可以根據分類如電腦進行發雜湊舉具體商品。

個人對圖計算理解:

圖計算是以圖遍歷的形式來計算圖中頂點的重要性、或者計算頂點的相似性等,一般是基於整體資料進行全量掃瞄分析得出結果,類似關聯式資料庫中對錶進行統計(如統計使用者平均年齡),只是圖關注的不是表的維度,而是圖的維度:一層一層沿著關聯關係的方向走。圖計算的核心是以頂點之間的關聯關係為基礎的計算。

圖計算的難點是什麼?當圖很大的時候,乙個物理機器存不下,怎麼拆分圖是難點(比如需要10個機器來存,則需要把整個圖拆分為10部分)。查詢的時候,希望有關聯關係的頂點存在同乙個物理機上,這樣查詢速度快,因為這樣訪問乙個頂點的鄰居無需跨物理機通過網路去請求資料。

最理想的狀態是,針對任意乙個頂點V,V的一度鄰居都在本機,V一度鄰居的鄰居(即V的二度鄰居)也都在本機,V的三度鄰居也都在本機,類似的更多度鄰居... 但是矛盾的地方是,單機容量有限必須要拆分。從哪些地方拆分、拆完之後去哪台機器找某個頂點?

這是目前還無完美解決方法的世界難題。

3樓:雲鷹

圖計算及其認知技術在金融行業的應用

技術專欄 | 大規模圖計算應用研究

從目前的情況來看,金融業的反欺詐,徵信場景比較多的。

4樓:舍予丘山

圖計算目前被一些公司運用在微博使用者畫像上,微博的使用者關係巢狀複雜,呈多層關係,且使用者每天都在新增互動資料,用圖計算可以將海量的微博使用者進行關係建模。

5樓:IBM中國

圖計算中的圖英文是Graph,用英文完整的表達就是Graph Computing。

圖計算是研究客觀世界當中的任何事物和事物之間的關係,對其進行完整的刻劃、計算和分析的一門技術。

圖計算技術主要是由點和邊來組成的。舉例來說,點可以是坐在演播室裡的三個人,這三個人就是三個點,所謂的邊就是這三個人之間的關係。比如說,同事關係、親戚關係、夫妻關係等。

而且兩個人之間的關係不僅限於一種描述,還可能有一些其他的關係,比如說專案合作關係、投資關係等。原則上兩點之間的關係沒有上限,可以有很多的各種關係。

點越多,當然各點相互之間可能的關係也就越錯綜複雜。

圖計算技術有什麼樣的重要地位和意義呢?

可以簡單概括一下,就是,圖計算是人工智慧的乙個使能技術。

我們可以大致將人工智慧的基本能力分成三個部分,第一部分就是理解的能力,第二部分是推理的能力,第三部分就是學習的能力,簡稱URL(Understanding,Reasoning,Learning)。

而圖計算是與URL息息相關的。

舉例來說,要對整個現實世界有乙個客觀、完整、全面的認識,那就需要乙個理解的能力。圖計算技術能夠把任何事物之間的所有關係全部刻畫出來,完整地描述出來。

另外,在一些事物和事物之間,其關係並不是那麼顯性,需要通過一些推理才能夠推導出來,圖計算就能夠通過推理的方式在事物中找到隱藏的一些關係,這個對於我們也非常有幫助。

第三個就是圖計算為人工智慧提供的學習的能力,它能夠將第一步中提到的理解刻畫能力和第二步中的推理能力相結合,實現對任何乙個事物的乙個模式上的總結、演繹和描述。也就是說,圖計算能夠對事物進行抽象,這個抽象的過程就是人腦綜合能力的乙個重要體現。

Apache Camel 的應用場景是什麼?

basic13 Camel是乙個整合框架,旨在使專案整合更加高效。Camel專案於2007年初啟動,現在已經成長為了乙個成熟的開放原始碼專案,Camel使用Apache 2.0許可,具有健壯的社群。Camel框架的核心是路由引擎,或者更準確地說,是路由引擎構建器。它允許你定義自己的路由規則,從哪個資...

什麼是實時數倉?有哪些應用場景?

laiyonghao 這題吧,一看就是不願意搜尋的懶蟲或者是想開個題做廣告的傢伙問的。本來不想答的,但覺得答了這題相當於給自己做個小結,留著以後自己看也行,就答一下吧。先來看第一問。實時數倉,首先是個數倉。資料倉儲搞啥的?一般是通過分析分維度的業務資料來幫助制定計畫和支援決策的。可見它的層次是很高的...

NTFS 壓縮的應用場景是什麼

鄭羊羊 平板的sd卡,由於因特爾驅動的鍋,無論多好的卡,都有一定機率無法工作,換成舊版驅動可以解決這個問題,但是卡的速度被限制在10mb s 正好Onedrive限制了只能使用ntfs檔案系統,那就順便把壓縮開了,可以節省幾gb空間 並且親測Android系統也支援NTFS的壓縮 呃,NTFS壓縮是...