Nikita Shamgunov先生一生都在不斷地建立各種各樣的數(shù)據(jù)庫,8年時間在Facebook公司等建立了很多的數(shù)據(jù)庫,現(xiàn)在他在舊金山建立了一個下一代的分析的數(shù)據(jù)庫叫MemSQL。

他表示對于數(shù)據(jù)分析師來說現(xiàn)在的時代是一個很有意思的時代,首先Moore時代已經(jīng)結(jié)束了,我們看到很多的速度是放緩了,但是摩爾定律依然可使用于大數(shù)據(jù),數(shù)據(jù)每18個月翻一番,而且需要更多的技術(shù)允許我們來操作這么多的數(shù)據(jù)。Hadoop就是一個很好的技術(shù)幫助我們操作海量的數(shù)據(jù)。另外一個所發(fā)生的情況是十年前談到大數(shù)據(jù)的時候讓人非常地乏味?,F(xiàn)在有各種各樣的數(shù)據(jù),有存儲數(shù)據(jù)、形象數(shù)據(jù)、JS數(shù)據(jù)和結(jié)構(gòu)的數(shù)據(jù)。

關(guān)系型數(shù)據(jù)庫經(jīng)常會出現(xiàn)問題。同時數(shù)據(jù)是成功的關(guān)鍵,如果我們看一下世界上最成功的公司比如說谷歌、Facebook、亞馬遜所有的這些公司都非常癡迷于數(shù)據(jù),無論現(xiàn)在做什么,每個人五年之后可能都不再那么具有競爭性和競爭力了?他談及了數(shù)據(jù)的時效性,即是最近所搜集的數(shù)據(jù)會比一年前所搜集的數(shù)據(jù)更具有價值。Nikita在Facebook公司的時候也創(chuàng)造了很大的集群,當(dāng)設(shè)置的時間是19天,19天之后人們所搜集的Hadoop的數(shù)據(jù)就沒有了,因為再沒有可用性了。所以Facebook很快改變了代碼,因為老的數(shù)據(jù)沒有用了,失去了相關(guān)性。所以這取決于你所處理的是哪種類型的數(shù)據(jù)。

實際上你所獲得的價值速度是很快的。我今天談的是半衰期很短的數(shù)據(jù)。處理這些數(shù)據(jù)的情境、實時的數(shù)據(jù)是什么樣的情境?也就是變化很快的數(shù)據(jù)。這可能會有一些業(yè)績上的評估。這是Facebook做的,每周二是重要的一天,我們會做這個工作,然后想捕獲所有關(guān)鍵的標(biāo)準(zhǔn),在Facebook的網(wǎng)站上、潛在的趨勢,我們把整個Facebook的網(wǎng)站分成不同的功能,之后我們會測量每個功能所帶來的消耗量,可以很好地想象到Facebook是很知名的網(wǎng)站。所以把這些數(shù)據(jù)放入數(shù)據(jù)庫的時候是需要非常大的數(shù)據(jù)庫的。因此我們有一個數(shù)據(jù)庫可以把所有的數(shù)據(jù)都容納起來。

可是如果不管哪個地方發(fā)生變化你都是希望了解到的,比如說你有一個bug的話,整個的數(shù)據(jù)庫都會出現(xiàn)問題,這樣的情況下Facebook就會損失和 虧損。所以如果出現(xiàn)問題一定要快速的解決,同時找到哪個地方發(fā)生了問題。像ZYNGA這樣的公司有很多的網(wǎng)游他們會對數(shù)據(jù)進行實時追蹤,還有AB測試。比 如說你想運行各種各樣的測試看一下自己的網(wǎng)絡(luò)以及網(wǎng)絡(luò)上的廣告到底做得怎么樣,是不是有一些廣告比其他的廣告效果要好。這樣可以根據(jù)點擊率來進行計算。越 早發(fā)現(xiàn)哪個廣告表現(xiàn)越好,這樣你的錢就可以從廣告中得到更多的錢,因為不會浪費時間。但有一點很有趣,如果有實時的高效率系統(tǒng),在CPU的應(yīng)用上會很快地 用起來,因為機器是有學(xué)習(xí)能,所以你會很快地培訓(xùn)機器的模型。所以說如果你的數(shù)據(jù)量比較小的話,可以把它放到一個比較小的領(lǐng)域,如果說是大數(shù)據(jù)的話可能這 個時候需要用Hadoop來進行處理了。所以得需要集群的方式來做數(shù)據(jù)處理。 有的時候用了Hadoop之后的速度會提到幾千倍或者是更快,因此你的速度會更快了。

再看一下,有越來越多的數(shù)據(jù)密集型實時的情況越來越多。比如說航空的飛機票和酒店的費用,如果你想到一個網(wǎng)站上購買機票,每次做搜索的時候只花5秒 鐘的時間就可以找到搜索的結(jié)果。如果要是給出一個更低的時間更減少的話效益就更高了,但這需要不斷的培訓(xùn)或者說加強改善優(yōu)化。比如說在股票交易上可以了解 之后進行追蹤看核心的數(shù)據(jù)和核心的衡量機制以及數(shù)據(jù)的遷移。有的時候數(shù)據(jù)量是非常大的,尤其是在股票交易上,有時候達到每秒6億運行,在紐交所有這樣的 量。所以我們都希望我們的速度更快,這一點是大家都希望的,尤其是當(dāng)你有大數(shù)據(jù)技術(shù)來處理技術(shù)的時候,你希望它的處理會更快。

我們談到Latency的時候有兩種,一種是搜索或者是查詢Latency,你查詢了以后再回來這叫查詢的,但對數(shù)據(jù)Latency指的是時間差, 產(chǎn)出時間之后把它放入大數(shù)據(jù)系統(tǒng)中我們稱之為數(shù)據(jù)上的Latency。數(shù)據(jù)Latency只能在24小時之內(nèi)處理。所以,上傳數(shù)據(jù)的時候等你喝咖啡回來之 后數(shù)據(jù)還沒有上來,再喝咖啡,之后等到了以后就可以分析數(shù)據(jù)了。對查詢的Latency來說要花很長的時間才能運行。所以說解決方案是什么呢?我們有大量 的研究來解決這個問題,尤其是在Hadoop的平臺上。所以有一個Storm,這個技術(shù)非常好,可以把這個數(shù)據(jù)通過節(jié)點來計算,這個數(shù)據(jù)在進入系統(tǒng)中的時 候就開始計算了。Storm有時候不會存儲數(shù)據(jù)只是計算數(shù)據(jù),所以可以把它放到Hadoop。

另外還有Cloudera Impala,這是以前的系統(tǒng)允許你可以實時地處理Hadoop數(shù)據(jù)和HPC數(shù)據(jù)。另外他還提到了MemSQL,一個分布式的in-memory的數(shù)據(jù)庫,可以在成千上萬的節(jié)點上運行。

實際上它是能夠處理并分析全球最具有挑戰(zhàn)性的工作量的,主要是處理兩件事,第一是數(shù)據(jù)的Latency,它可以直接地用SQL來處理,同時我們也可 以進行任何時候的查詢,利用所有的核和處理器以及集群中的所有的節(jié)點來處理。所以怎么來處理數(shù)據(jù)上出現(xiàn)的Latency我們可以提供超快速的數(shù)據(jù)負(fù)荷,可 以把數(shù)據(jù)上載到系統(tǒng)中通過多個電腦、多個終端、多個節(jié)點,這樣在集群里面可以把數(shù)據(jù)完全地引入系統(tǒng)中。同時它也可以使你能實時地插入數(shù)據(jù),不需要有一個特 殊的批上載,可以任何時候可以把數(shù)據(jù)直接地放入系統(tǒng)中。

另外對查詢的Latency來說我們有優(yōu)化器,也就是說大家如果處理NPP系統(tǒng),一旦查詢出現(xiàn)在系統(tǒng)中就可以看一下把它分解成次查詢,之后在這個階 段集群的節(jié)點中處理最后給你一個最終的答案。我我對工程師或者是在座的特別喜歡技術(shù)的我會告訴你它是怎么做的,我們有一個Lock-free data,一個電腦上有很多核,可以允許我讀寫但不對數(shù)據(jù)鎖定。所以如果一方面需要上載數(shù)據(jù),另外一方面也需要上載查詢的話,這樣的結(jié)構(gòu)可以很好地處理數(shù) 據(jù)。另外這個系統(tǒng)是分布的架構(gòu),這個架構(gòu)是由集群器等的,這是存儲數(shù)據(jù)的地方,這個集存器有一個電腦的節(jié)點,用戶可以訪問集群器中間的部 分,Aggregator可以共享信息,比如說數(shù)據(jù)是怎樣分析的。可以只能地沿著節(jié)點來分布。另外可以通過節(jié)點來復(fù)制,之后處理之后再把信息反饋給用戶。 看起來就像一個數(shù)據(jù)庫一樣,有耐用性同時也可以復(fù)制。你可以關(guān)掉并且開放之后數(shù)據(jù)還是在數(shù)據(jù)庫里面。

再看一下復(fù)制性,高獲取性是非常重要,因此我們有兩個中心來進行復(fù)制。第二,在一個數(shù)據(jù)中心里也有安全性的數(shù)據(jù)的復(fù)制,所以你可以有各種各樣的數(shù) 據(jù),有的時候有一些節(jié)點出現(xiàn)了問題這時候會有復(fù)制和副本出現(xiàn),這樣不會出現(xiàn)數(shù)據(jù)的損失。還有是Facebook對我們產(chǎn)生很大的影響,就是SQL到C++ 編碼的生成,使得執(zhí)行起來的速度非常快。我們把SQL的聲明轉(zhuǎn)變成C++的編碼。如果在做的時候要考慮到例子,我們把它拿出來之后加上就可以形成SQL到 C++的編碼轉(zhuǎn)換。當(dāng)然在進入不同的系統(tǒng)的時候可以在很短的時間進行實施和執(zhí)行,這樣會使我們同時來進行很多的數(shù)據(jù)處理或者是查詢處理。

接下來我給大家做一個展示,因為DEMO總會讓大家看到真實的東西。每次做DEMO的時候有一些意外的情況還是比較有趣的。在這個DEMO中我給大 家看一下這32個節(jié)點還有8個Aggregator,之后我們把整個的程序從8個節(jié)點中泵入。這個集群是半個小時之前啟動的,也就是我進入這個會議廳之前 的半個小時,所以在系統(tǒng)中應(yīng)該有一些數(shù)據(jù)了,之后會發(fā)出一些非常復(fù)雜的查詢之后看一下它是怎么表現(xiàn)的。接下來再看一下,這應(yīng)該是48個集群,我是在亞馬遜 EC2上部署的,由于有公共云所以計算起來很簡單,你只需要編程之后點擊輸入,現(xiàn)在84個集群就可以開始運行了。這個集群的總內(nèi)存是2.7TB,所以可以 把2.7TB的數(shù)據(jù)泵入,在系統(tǒng)中任何的記錄都會在很短的時間里處理完。好,接下來我們看一下。這是一個終端的窗口,這有一些數(shù)據(jù)我們看系統(tǒng)中是怎樣的, 在這兒有數(shù)據(jù)庫的協(xié)議,在做發(fā)言之前我們已經(jīng)做了,已經(jīng)有幾個表格了,看起來還不錯運行正常。所以,這里面都有很多的記錄。這有一個表格,這個表中間顯示 一下數(shù)字,把數(shù)據(jù)插入,在兩個查詢之間有這么一個數(shù)據(jù)輸入了。這實際上是占用CPU的,在集群的每個節(jié)點上都是占用CPU的。集群上的每個節(jié)點、每個核都 在工作。所以目前還沒有什么意外,我們最終看到有26億的記錄。因此可以看到速度是非常快而且量是非常大的。所以可以把東西進行修改和修訂。

我們有一個客戶,每天要輸入10億個記錄,而且同時還可以對數(shù)據(jù)進行匯總監(jiān)測一下網(wǎng)站怎么樣。但是雖說它是非常簡單的查詢都可以,比如說用一些簡單 的索引或者說把數(shù)據(jù)存儲在某些地方我在這里還有其他的幾個查詢,這是其他的一些查詢。這里有一個匯總,有一點是必須有趣的,也就是你有一種直覺,可以看到 數(shù)據(jù)在整個的集群中布置的話是可以復(fù)制的,你選擇了之后就可以對它進行復(fù)制。在這兒我就把數(shù)據(jù)推到客戶這邊,所以數(shù)據(jù)運行得非常快。最后看到這兒可以運行 一些非常復(fù)雜的東西,這些就是查詢的例子,基本上是數(shù)據(jù)庫的查詢,這是一個很大的查詢,我可以運行查詢程度一個客戶,有各種各樣的節(jié)點。但基本的一點是, 它是一個生態(tài)系統(tǒng),可以表達復(fù)雜的東西,可以表達復(fù)雜的集合,大量的數(shù)據(jù)中可以有很重要的變化,這是一個重要的視角。

給大家一個信息是每個工作都需要的工具,如果你需要進行分析目前市場上可用的最好的技術(shù)就是這個。但是在大數(shù)據(jù)中有很多的情境,有非常不多的數(shù)據(jù)運 行的特點可能我覺得工程師需要像拿一個瑞士軍刀這樣的組合,對每個工具選擇適合的工具,SQL就是這樣的一個工具,對高速度的工具進行很好的處理,因為可 以大大地提高運行的效率,對數(shù)據(jù)的快速變化來說有很好的處理。

分享到

huanghui

相關(guān)推薦