用于低延遲數(shù)據(jù)存取的數(shù)據(jù)流分割的制作方法
【專(zhuān)利說(shuō)明】用于低延遲數(shù)據(jù)存取的數(shù)據(jù)流分割
[0001]相關(guān)申請(qǐng)的交叉引用
[0002]本申請(qǐng)要求于2013年I月31日提交的美國(guó)專(zhuān)利申請(qǐng)?zhí)?3/756,340的優(yōu)先權(quán),通過(guò)引用將其全部?jī)?nèi)容結(jié)合于此。
技術(shù)領(lǐng)域
[0003]本發(fā)明總體涉及數(shù)據(jù)獲取和處理系統(tǒng),并且具體地涉及能夠?qū)?shù)據(jù)分割成多個(gè)數(shù)據(jù)流的數(shù)據(jù)獲取和處理系統(tǒng)。
【背景技術(shù)】
[0004]計(jì)算機(jī)和網(wǎng)絡(luò)計(jì)算的發(fā)展引起了需要大量數(shù)據(jù)存儲(chǔ)的應(yīng)用。例如,數(shù)千萬(wàn)用戶(hù)可以創(chuàng)建網(wǎng)頁(yè)并且將圖像和文本上傳到社交媒體網(wǎng)站中。因此,社交媒體網(wǎng)站每天可能累積大量數(shù)據(jù),因此,需要一種用于存儲(chǔ)和處理數(shù)據(jù)的高度可擴(kuò)展的系統(tǒng)(scalable system)。存在促進(jìn)這樣的大量數(shù)據(jù)存儲(chǔ)的多種工具。
[0005]這些社交媒體網(wǎng)站的前端集群監(jiān)測(cè)用戶(hù)活動(dòng)并且基于社交媒體用戶(hù)的活動(dòng)產(chǎn)生日志數(shù)據(jù)。前端集群將日志數(shù)據(jù)傳輸至集中存儲(chǔ)文件管理器或數(shù)據(jù)倉(cāng)庫(kù)。集中存儲(chǔ)文件管理器或數(shù)據(jù)倉(cāng)庫(kù)組織所接收的日志數(shù)據(jù)并且對(duì)來(lái)自數(shù)據(jù)處理應(yīng)用的請(qǐng)求作出響應(yīng)。為了容納大量的日志數(shù)據(jù),普遍使用大規(guī)模的數(shù)據(jù)倉(cāng)庫(kù)以存儲(chǔ)日志數(shù)據(jù)并且為來(lái)自數(shù)據(jù)處理應(yīng)用的數(shù)據(jù)密集查詢(xún)服務(wù)。
[0006]通過(guò)使應(yīng)用能夠與數(shù)以千計(jì)的計(jì)算機(jī)(也稱(chēng)作節(jié)點(diǎn))的集群和前兆字節(jié)的數(shù)據(jù)交互存在支持大規(guī)模數(shù)據(jù)密集的分布式應(yīng)用的框架。例如,被稱(chēng)為Hadoop的框架使用分布式、可擴(kuò)展的、便攜式文件系統(tǒng),稱(chēng)為Hadoop分布式文件系統(tǒng)(HDFS)以在Hadoop集群中的數(shù)據(jù)節(jié)點(diǎn)(也稱(chēng)為從節(jié)點(diǎn))之中分布大量數(shù)據(jù)。為了減小數(shù)據(jù)節(jié)點(diǎn)電源中斷或網(wǎng)絡(luò)故障(包括開(kāi)關(guān)故障)的不利影響,HDFS內(nèi)的數(shù)據(jù)通常被復(fù)制在不同的數(shù)據(jù)節(jié)點(diǎn)上。
[0007]開(kāi)發(fā)了 Hive用于在Hadoop集群的頂部上運(yùn)行,Hive是一種開(kāi)放源數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)。Hive支持用被稱(chēng)為HiveQL的類(lèi)似腳本查詢(xún)語(yǔ)言(SQL)的說(shuō)明性語(yǔ)言表示的數(shù)據(jù)查詢(xún)。然后Hive系統(tǒng)將用HiveQL表示的查詢(xún)編譯成可以有向無(wú)環(huán)圖的數(shù)學(xué)表達(dá)式在Hadoop集群上執(zhí)行的映射減少工作。HiveQL語(yǔ)言包括支持包含原始類(lèi)型、集合(例如,陣列和映射)以及嵌套布局類(lèi)型(nested composit1ns of types)的表格的類(lèi)型系統(tǒng)。此外,Hive系統(tǒng)包括被稱(chēng)為Hive-Metastore的系統(tǒng)類(lèi)目,包含方案和統(tǒng)計(jì),這對(duì)數(shù)據(jù)探索和查詢(xún)優(yōu)化有用。
[0008]與Hadoop集群耦合的Hive系統(tǒng)可以為社會(huì)網(wǎng)絡(luò)系統(tǒng)存儲(chǔ)和分析大量數(shù)據(jù)。例如,Hive系統(tǒng)可以分析在用戶(hù)之間的連接程度以對(duì)用戶(hù)在社會(huì)網(wǎng)絡(luò)系統(tǒng)上跟進(jìn)的故事進(jìn)行排列。Hive系統(tǒng)可以分析活動(dòng)日志以了解社會(huì)網(wǎng)絡(luò)系統(tǒng)的服務(wù)如何被用來(lái)幫助應(yīng)用開(kāi)發(fā)員、網(wǎng)頁(yè)管理員以及廣告人員做出開(kāi)發(fā)和業(yè)務(wù)決定。Hive系統(tǒng)可以運(yùn)行復(fù)雜的數(shù)據(jù)挖掘程序以?xún)?yōu)化向社會(huì)網(wǎng)絡(luò)系統(tǒng)的用戶(hù)示出的廣告。Hive系統(tǒng)可以進(jìn)一步分析使用日志以識(shí)別社會(huì)網(wǎng)絡(luò)系統(tǒng)的垃圾郵件和濫用。
[0009]Hive系統(tǒng)對(duì)于沒(méi)有創(chuàng)造并且執(zhí)行Hive查詢(xún)用于著作、調(diào)試并且調(diào)度復(fù)雜的數(shù)據(jù)管道并且基于存儲(chǔ)在Hive系統(tǒng)和如同MySQL和Oracle的其他關(guān)系數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)生成報(bào)告的能力的人包括基于網(wǎng)絡(luò)的工具。
[0010]然而,前端集群將捕獲的日志數(shù)據(jù)定期而不是實(shí)時(shí)地發(fā)送到集中數(shù)據(jù)倉(cāng)庫(kù)。此外,在數(shù)據(jù)倉(cāng)庫(kù)能夠?qū)@些日志數(shù)據(jù)的數(shù)據(jù)查詢(xún)做出響應(yīng)之前,數(shù)據(jù)倉(cāng)庫(kù)需要花費(fèi)時(shí)間組織所接收的日志數(shù)據(jù)。因此,在捕獲日志數(shù)據(jù)的時(shí)長(zhǎng)之后僅可用數(shù)據(jù)倉(cāng)庫(kù)中的日志數(shù)據(jù)。時(shí)長(zhǎng)可以是一小時(shí)甚至一天。數(shù)據(jù)處理和消耗應(yīng)用僅可訪(fǎng)問(wèn)具有明顯延遲的日志數(shù)據(jù)。
[0011]此外,集中數(shù)據(jù)倉(cāng)庫(kù)需要保持與前端服務(wù)器的連接來(lái)持續(xù)接收日志數(shù)據(jù)。在現(xiàn)代的社交網(wǎng)絡(luò)中,前端服務(wù)器的數(shù)目可以上千甚至更多。數(shù)據(jù)倉(cāng)庫(kù)承載保持連接的重大負(fù)荷。這種保持連接的負(fù)荷影響數(shù)據(jù)倉(cāng)庫(kù)的總性能。
【發(fā)明內(nèi)容】
[0012]本文中引進(jìn)的技術(shù)提供了低延遲地日志數(shù)據(jù)存取和處理的益處。具體地,本文中引進(jìn)的技術(shù)包括實(shí)時(shí)生成大量日志數(shù)據(jù)并且將日志數(shù)據(jù)傳送至聚合集群的前端集群。將聚合集群設(shè)計(jì)成聚合來(lái)自不同的前端服務(wù)器和集群的到來(lái)的日志數(shù)據(jù)流。聚合集群進(jìn)一步將日志數(shù)據(jù)分割成多個(gè)數(shù)據(jù)流以便數(shù)據(jù)流被并行發(fā)送至接收應(yīng)用。在一個(gè)實(shí)施方式中,聚合集群隨機(jī)分割日志數(shù)據(jù)以確保日志數(shù)據(jù)被均勻分布在分割數(shù)據(jù)流中。在另一個(gè)實(shí)施方式中,接收分割數(shù)據(jù)流的應(yīng)用確定如何分割日志數(shù)據(jù)。
[0013]根據(jù)本文中引進(jìn)的技術(shù),因此,提供了分割數(shù)據(jù)流的方法。該方法包括基于實(shí)時(shí)用戶(hù)活動(dòng)產(chǎn)生日志數(shù)據(jù)、將日志數(shù)據(jù)傳輸至聚合服務(wù)器、在聚合服務(wù)器聚合日志數(shù)據(jù)、將日志數(shù)據(jù)分割到多個(gè)日志數(shù)據(jù)流、以及將日志數(shù)據(jù)流并行饋送到至少一個(gè)后端服務(wù)器。
[0014]根據(jù)本文中引進(jìn)的技術(shù),因此,也提供了分割數(shù)據(jù)流的計(jì)算機(jī)實(shí)施系統(tǒng)。計(jì)算機(jī)實(shí)施系統(tǒng)包括多個(gè)前端服務(wù)器和至少一個(gè)聚合服務(wù)器。多個(gè)前端服務(wù)器配置成用于基于實(shí)時(shí)用戶(hù)活動(dòng)產(chǎn)生日志數(shù)據(jù)。聚合服務(wù)器配置成用于聚合從前端服務(wù)器中的至少一些接收的日志數(shù)據(jù)。聚合服務(wù)器經(jīng)由網(wǎng)絡(luò)與前端服務(wù)器中的至少一些相連。聚合服務(wù)器包括配置成用于暫存日志數(shù)據(jù)的數(shù)據(jù)暫存區(qū)。聚合服務(wù)器進(jìn)一步配置成用于將所述日志數(shù)據(jù)分割到多個(gè)日志數(shù)據(jù)流以便一個(gè)或多個(gè)后端服務(wù)器能夠并行檢索所述日志數(shù)據(jù)流。
[0015]根據(jù)本文中引進(jìn)的技術(shù),因此,也提供了分割日志數(shù)據(jù)的聚合服務(wù)器。聚合服務(wù)器包括處理器、網(wǎng)絡(luò)接口、數(shù)據(jù)存儲(chǔ)和存儲(chǔ)器。網(wǎng)絡(luò)接口耦接至處理器,所述聚合服務(wù)器通過(guò)所述網(wǎng)絡(luò)接口能夠與多個(gè)前端服務(wù)器通信。前端服務(wù)器基于實(shí)時(shí)用戶(hù)活動(dòng)產(chǎn)生日志數(shù)據(jù)。數(shù)據(jù)存儲(chǔ)包括數(shù)據(jù)暫存區(qū)。存儲(chǔ)器存儲(chǔ)當(dāng)由處理器執(zhí)行時(shí)使得聚合服務(wù)器執(zhí)行包括從前端服務(wù)器接收日志數(shù)據(jù)的過(guò)程的指令,其中,前端服務(wù)器基于實(shí)時(shí)用戶(hù)活動(dòng)產(chǎn)生日志數(shù)據(jù)、聚合日志數(shù)據(jù)、在數(shù)據(jù)暫存區(qū)暫存日志數(shù)據(jù)、以及將日志數(shù)據(jù)分割到多個(gè)日志數(shù)據(jù)流以便一個(gè)或多個(gè)后端服務(wù)器能夠并行檢索日志數(shù)據(jù)流。
[0016]在本發(fā)明的實(shí)施方式中,提供了一種用于對(duì)社交網(wǎng)絡(luò)系統(tǒng)或者第三方系統(tǒng)或者客戶(hù)端系統(tǒng)的用戶(hù)進(jìn)行認(rèn)證的方法,尤其是用于防止社交網(wǎng)絡(luò)系統(tǒng)或者社交網(wǎng)絡(luò)系統(tǒng)的部分或者第三方系統(tǒng)或者客戶(hù)端系統(tǒng)未經(jīng)批準(zhǔn)的使用,包括:
[0017]在本發(fā)明的實(shí)施方式中,方法包括:
[0018]基于實(shí)時(shí)用戶(hù)活動(dòng)在多個(gè)前端服務(wù)器處產(chǎn)生日志數(shù)據(jù);
[0019]將日志數(shù)據(jù)傳輸至聚合服務(wù)器;
[0020]在聚合服務(wù)器處聚合日志數(shù)據(jù);
[0021]將日志數(shù)據(jù)分割到多個(gè)日志數(shù)據(jù)流;并且
[0022]將日志數(shù)據(jù)流并行饋送到至少一個(gè)后端服務(wù)器。
[0023]分割步驟可以包括:
[0024]隨機(jī)分割日志數(shù)據(jù)使得日志數(shù)據(jù)被均勻分布至多個(gè)日志數(shù)據(jù)流。
[0025]該方法可以進(jìn)一步包括:
[0026]在數(shù)據(jù)暫存區(qū)暫存日志數(shù)據(jù)。
[0027]該方法可以進(jìn)一步包括:
[0028]從后端服務(wù)器接收關(guān)于如何將日志數(shù)據(jù)分割到多個(gè)日志數(shù)據(jù)流的指令。
[0029]日志數(shù)據(jù)可包括多個(gè)日志數(shù)據(jù)條目,每個(gè)日志數(shù)據(jù)條目包括應(yīng)用標(biāo)識(shí)和類(lèi)目字段。
[0030]該方法可以進(jìn)一步包括:
[0031]對(duì)于日志數(shù)據(jù)的每個(gè)條目,以總桶數(shù)為模通過(guò)應(yīng)用標(biāo)識(shí)和類(lèi)目字段的散列函數(shù)計(jì)算桶號(hào),其中,總桶數(shù)是多個(gè)日志數(shù)據(jù)流的總數(shù);并且
[0032]將日志數(shù)據(jù)的條目分配至通過(guò)桶號(hào)識(shí)別的日志數(shù)據(jù)流。
[0033]類(lèi)目字段可包括日志數(shù)據(jù)條目的預(yù)期目的地的高級(jí)描述。
[0034]應(yīng)用標(biāo)識(shí)能夠識(shí)別用于處理日志數(shù)據(jù)條目的數(shù)據(jù)消耗應(yīng)用。
[0035]日志數(shù)據(jù)可包括多個(gè)日志數(shù)據(jù)條目;并且
[0036]該方法可以進(jìn)一步包括:
[0037]對(duì)于每個(gè)日志數(shù)據(jù)條目,隨機(jī)生成從I至總桶數(shù)的整數(shù),其中,總桶數(shù)是多個(gè)日志數(shù)據(jù)流的總數(shù);并且
[0038]將該日志數(shù)據(jù)條目分配至通過(guò)桶號(hào)識(shí)別的日志數(shù)據(jù)流。
[0039]通過(guò)能用于接收日志數(shù)據(jù)流的后端服務(wù)器的數(shù)量和每個(gè)后端服務(wù)器能夠處理的連接數(shù)能夠確定總桶數(shù)。
[0040]可通過(guò)在至少一個(gè)后端服務(wù)器上運(yùn)行的數(shù)據(jù)消耗應(yīng)用指示總桶數(shù)。
[0041]當(dāng)后端服務(wù)器接收并且處理日志數(shù)據(jù)流時(shí)后端服務(wù)器是等載的。
[0042]該方法可以進(jìn)一步包括:
[0043]檢查日志數(shù)據(jù)的條目的前綴以確定被分配條目的日志數(shù)據(jù)流。
[0044]該方法可以進(jìn)一步包括:
[0045]將日志數(shù)據(jù)發(fā)送至數(shù)據(jù)倉(cāng)庫(kù);并且
[0046]處理在數(shù)據(jù)倉(cāng)庫(kù)處的日志數(shù)據(jù)使得數(shù)據(jù)倉(cāng)庫(kù)能夠基于處理日志數(shù)據(jù)對(duì)數(shù)據(jù)查詢(xún)做出響應(yīng)。
[0047]在也可要求保護(hù)的發(fā)明的實(shí)施例中,計(jì)算機(jī)實(shí)施系統(tǒng),包括:
[0048]多個(gè)前端服務(wù)器,配置成用于基于實(shí)時(shí)用戶(hù)活動(dòng)產(chǎn)生日志數(shù)據(jù);以及
[0049]至少一個(gè)聚合服務(wù)器,配置成用于聚合從所述前端服務(wù)器中的至少一些接收的日志數(shù)據(jù),聚合服務(wù)器經(jīng)由網(wǎng)絡(luò)與前端服務(wù)器中的至少一些相連;
[0050]其中,聚合服務(wù)器包括配置成用于暫存日志數(shù)據(jù)的數(shù)據(jù)暫存區(qū),并且聚合服務(wù)器被配置成用于將日志數(shù)據(jù)分割到多個(gè)日志數(shù)據(jù)流以便一個(gè)或多個(gè)后端服務(wù)器能夠并行檢索日志數(shù)據(jù)流。[0051 ]日志數(shù)據(jù)能夠包括多個(gè)日志數(shù)據(jù)條目,每個(gè)日志數(shù)據(jù)條目可包括應(yīng)用標(biāo)識(shí)和類(lèi)目字段;并且聚合服務(wù)器可進(jìn)一步配置成:
[0052]對(duì)于日志數(shù)據(jù)的每個(gè)條目,以總桶數(shù)為模通過(guò)應(yīng)用標(biāo)識(shí)和類(lèi)目字段的散列函數(shù)計(jì)算桶號(hào),其中,總桶數(shù)是多個(gè)日志數(shù)據(jù)流的總數(shù);并且
[0053]將日志數(shù)據(jù)的條目分配至通過(guò)桶號(hào)識(shí)別的日志數(shù)據(jù)流。
[0054]日志數(shù)據(jù)可包括多個(gè)日志數(shù)據(jù)條目;