天天看點

使用超大規模資料分析技術支援大資料預測

使用超大規模資料分析技術支援大資料預測

我給大家帶來的演講内容是關于“使用超大規模資料分析技術支援大資料預測”這方面的。首先介紹一下我自己,我叫韓卿,很多人叫我luke。我是kyligence公司的聯合創始人兼ceo,apache kylin開源項目的創始人,同時也是這個項目的項目管理委員會主席,以及apache軟體基金會會員。

一、超大規模資料分析的挑戰

hadoop

首先,我想和大家分享一下我們在大資料技術領域碰到的挑戰,這裡在座很多朋友都是從傳統的資料倉庫出來的,事實上以前是沒有hadoop的,是以資料并不是很大,我記得在07年、08年的時候,那時候說沃爾瑪是全球最大的資料倉庫,資料量是幾個pb。那麼如今又是怎樣的量級呢?我原來在ebay工作,今年年初的時候ebay的整個hadoop資料量已經超過幾百個pb了,但這還不是最大的。由此可以看出,在這短短幾年之間,資料的膨脹是相當大的。

hadoop平台今年正好是第十年,發展到今天,它非常擅長批量處理,這裡大部分的企業都用它做過批量的東西。那帶來的第一個問題是什麼呢?比如說,我的資料已經在hadoop上面了,那麼後面不管是報表分析、交叉分析還是預測分析,是不是也應該在平台上面直接去做?但現實告訴我們,由于各種各樣的挑戰,很多時候在hadoop上面把資料處理完又被扔回到資料倉庫裡面了。

使用超大規模資料分析技術支援大資料預測

傳統的資料倉庫非常擅長大型的互動式分析和複雜分析,但它面臨的問題是如此龐大的資料無法全部儲存在裡面,或者說如果存下如此大量的資料,它的成本是很恐怖的。我們在ebay的時候做過一個測算,在傳統資料倉庫上面每tb的存儲成本遠遠超過在hadoop上面每pb的存儲成本,這是基于我們投資成本算出來的。一個tb和一個pb相差1024倍,如果說我們将在hadoop上面的200多個pb的資料都放在傳統資料庫上面,那肯定是不現實的。至于我們該如何在hadoop大資料平台上将分析能力提供出來,是我們當時面臨的巨大挑戰。

資料挖掘與資料預測

另外,在資料挖掘、資料預測的時候,這個需求非常的旺盛。以前人們更多的是說要做一個報表,而這兩年人們傾向于建立一個系統,進行風控控制、資料預測、挖掘等。但這又引出了一個問題:這麼大的資料量我怎麼能夠在最快的時間内提供給你完整的分析結果,能夠滿足你在具備傳統資料倉庫經驗能力的情況下又能夠利用大資料的平台進行工作,我覺得這是我們今天面臨的巨大挑戰。

二、apache kylin快速分析解決方案

在ebay工作的時候,我們發現在hadoop上面如果直接進行分析是不可能的,因為我的分析師不可能花費很長時間去等一個分析結果。如果說我們把資料都放到dw裡面也不能現實,至少成本上面是不可接受的。是以導緻我們那時候探索了很多這方面的技術,無論是商業的技術,還是開源的技術,最終發現沒有一個技術能夠滿足我們的需求,這件事情發生在2013年9月份,是三年以前。

是以後來我們在上海的幾位同僚想要不自己試試看,我們的架構師真的蠻厲害的,在9月份做出的決定,國慶節回來就說跑通了,當然我們也花了很多的力氣去說服管理層、說服我們的客戶以及合作夥伴。

這裡面解釋一下,這個項目叫做apache kylin,也是我們目前活下來的唯一項目。apache kylin這個名字在apache軟體基金會裡面也是唯一一個中國來,我們覺得還是蠻驕傲的。

我們完全可以說在開源領域裡面我們是no.1的olap on hadoop的解決方案。這裡澄清一下,我們做的并不是sql,我們做的是olap on hadoop,叫做多元分析或者更大一點叫做資料集市。今天隻要搜尋這樣幾個關鍵字,不管在谷歌還是百度上面,基本上我們都是no.1。

整個社群發展是非常快的,我們這個社群活躍度非常好,以及有一百多家公司了。最重要的是這是唯一一個來自中國的頂級項目,這意味着我們的項目跟apache的hadoop是一個級别的,是中國開發者社群的代表。apache孵化器的副總裁,也是我們的導師,當時我們剛剛加入進去的時候,整個社群對我們并不看好,說歡迎中國人過來玩,但不覺得你們能畢業。

但當我們花了11個月畢業,并成為頂級項目的時候,整個社群對我們的認可度是非常高的。說我們代表了整個亞洲國家,特别是中國人在整個開源社群的貢獻、參與度。我想告訴大家的是,整個核心團隊并不多,其實就幾個人,大部分核心團隊現在都在我們公司,後來我們從ebay出來了,看到這樣一個機會,我們成立了一家創業公司,希望在社群能夠做更多的事情。

apache kylin的技術

那麼,我們用什麼樣的技術來解決問題呢?無論是并行計算、還是列式存儲,如今行業裡擁有許多不同的技術,而kylin則結合了這些技術的優點。

使用超大規模資料分析技術支援大資料預測

首先我們應用了并行計算。傳統的資料倉庫、bi的工具之類的以前都是很小的,不能夠支撐單個檔案超過2個g的,或者還有一些說不能超過多大的資料量。我們在ebay的時候曾經用了另外一個bi工具,單個不能超過20億的資料,因為把裡面的算法寫死掉了,沒有辦法改。而今天我們能夠大量地利用并行計算hadoop這樣的技術做并行的處理,是以相應的能力、計算的速度、效率那是指數級增長。

中間是空間換時間。這是最根本的設計理念,當你海量資料進來的時候,你的查詢相對來說是比較固定的,或者相對來說原始資料百分之七八十或者九十不會再動了,我有理由幫你做一些這方面的預計算。

列式存儲。另外一塊,即使算完了,如果還是放在磁盤上面是不夠的,因為磁盤效率很低,放記憶體,記憶體又很貴。而通過列式存儲的方式,就能大大解決這一問題。

技術核心

我們的技術核心其實非常簡單,叫做用空間換時間。因為你實時算這個東西的時候,實在是太慢了,我們當時碰到的給我們的資料級、測試資料級都是一百億以上的規模的,但今天我們能做到的資料是千億、萬億規模的。我經常舉一個例子,好比你中午吃飯,如果從買菜開始到菜買回來洗好,電鍋插上,吃好洗碗,兩小時肯定不夠。怎麼辦呢?前一天晚上把飯做好拿過來,今天微波爐一熱,就能大大節省了午飯時間,這就是預計算能夠帶給你的。

使用超大規模資料分析技術支援大資料預測

另一方面,我們非常care查詢階段。非常重要的數學,一旦進行預計算之後,這個地方的查詢複雜度是o(1),給定的條件之下,不管你資料級有多大,查詢都可以保證在一定的範圍内達到秒級别,資料再大也沒有關系。

使用超大規模資料分析技術支援大資料預測

但其他的一些并行計算也好、列式存儲也好,是一個分布式實時計算,不可避免帶來的算法複雜度是o(n)。我們通過預計算帶給大資料分析技術最核心的價值,跟你的資料量并沒有關系,并且滿足你在各個場景下的通路。

架構

使用超大規模資料分析技術支援大資料預測

簡單講一下架構,整個hadoop生态圈裡面,kylin用了hadoop元件,也可以做整個預計算。當整個計算結束之後,所有的分析應用、查詢應用、挖掘應用會像資料庫一樣,通過标準的sql通路,我們的系統會非常精準地知道你給我的查詢結果在哪裡,馬上可以把這個結果回報給你。當然我們也在做更深的研發支撐更多的條件,我們在上面支撐的是标準sql,是以就像資料倉庫一樣的,這也是我們的定位,希望未來做成一個資料倉庫hadoop的解決方案。

使用超大規模資料分析技術支援大資料預測

講一下細節,第一個怎樣利用并行計算,如果給一百億的資料靠一台電腦去計算,不知道要算到什麼時候,但如果有一百台、一千台機器就很快了,這是并行計算帶來的威力。我們的預計算的好處是,通過hadoop mapreduce來做并行計算,這個計算,第一很快,同時産生的成本并不高,這是利用并行計算。

使用超大規模資料分析技術支援大資料預測

算完之後存哪裡?轉化成列式存儲,把一個傳統的模型結構,充分利用hbase列式存儲的元件達到性能,是以說我們的資料最終在hbase每個節點上面是均勻分布的。最後已經沒有sql的問題了,而且已經全部轉成了kb value。今天基本上你給我一個sql,就可以給到你結果。

結果

給大家看我們做到的結果,我用了四個字:多、快、好、省。

——“多”,我們支撐的資料量非常大,在ebay單個cube已經超過千億規模。

—— “快”,是指達到的查詢性,90%的查詢性是在1.18秒内。包括百度的百度地圖、百度導航的資料都在上面。這裡分享一下,最大的來自廣東移動,廣東移動資料非常大,如今4g、移動網際網路非常火熱,相應的資料都在裡面,進來的資料每天增量超過一百億條,這個系統運作快一年了,基本上超過萬億規模,每個查詢都可以在秒級傳回。另外,美團整個外賣資料也都在上面,95%查詢在1秒以内。重要的是說,我們所使用的硬體成本是很低的,就是普通的機器。如果用記憶體機器或者傳統的資料倉庫、一體機等等,這個成本是呈指數的。

——“好”,這方面就不多說了,國内、國外有非常多的公司都在使用。

——“省”,大資料平台上面是一個開源的技術,最重要的是這還是一個國産技術。我們在唯品會的一些技術已經在遷移,把傳統的國外的這些資料倉庫的技術遷移到今天我們這樣一個國産自主的,在大資料的平台上的技術上面,而且成本将會大大降低,這對客戶的價值是非常大的。另外一個“省”的很重要的原因是,我們把模組化過程封裝的非常好,使用的時候對于開發人員、應用人員要求很低,懂資料庫、sql就夠了,不需要寫任何java的腳本,不需要寫任何的程式。我們希望我們在這方面做更多的工作來降低整個大資料的門檻,來快速的為客戶提供價值。

下面是不完全的全球使用者的簡介。ebay就不說了,微軟,包括來自德國的,來自美國的都有。最重要的是在中國有非常多的網際網路公司,包括京東、網易、美團、百度、唯品會等等,以及像oppo、魅族、樂視這些手機廠商,還有聯想、國泰君安、三大營運商,我們都有很好的案例,而且使用的規模都是非常大的。

我們說每個成功的開源項目後面都有一個創業公司,以往這些公司的故事都發生在美國,而我們這家公司在中國,在上海。

使用超大規模資料分析技術支援大資料預測

解釋一下這個公司名字的議程,我們的公司叫做kyligence,來自kylin+intelligence,我們希望把一個神獸帶到大資料生态圈裡面,整個大資料裡面都是動物,而我們希望我們的神獸變得更加智能一點。

三、對大資料預測技術的支援

有了這樣一個基礎以及資料技術之後,談一下對于大資料預測技術我們的想法,怎麼來支撐、怎麼讓我們使用者做一些應用?

使用超大規模資料分析技術支援大資料預測

首先我們看一下最重要的,我們在千億規模上面做到亞秒級的查詢延遲。不管做預測也好,做什麼也好,最重要的是要快速的擷取資料的能力,特别是預測,不斷地疊代,我們能夠支撐到不管你改變任何的查詢條件,我可以非常快的把這個查詢給你。很多時候做預測工作,其實是在不斷地換參數,但相對的下面的資料模型很多時候是固定的或者相對固定,我們能夠有這個能力,無論你給我幾個參數,或是換參數,馬上就給你結果級。上層應用,基于這個結果級進一步的通過算法做演算、調整。

另外一個很重要的是我們支援的是标準sql,很多時候現在的技術是要你自己寫程式的,這要求的入門門檻太高了,但是通過标準的sql,我們在傳統的資料庫裡面有非常多的模型與算法是可以使用的。

使用超大規模資料分析技術支援大資料預測

對于整個技術的支援來說,我們為上層資料應用、挖掘應用提供的接口是odbc、jdbc、rest api。是以跟你用一個傳統資料倉庫其實沒有任何差別。最重要的是,我們能夠在非常大的規模的資料上面直接把這個給到你,不管你原來的資料是一百億、一千億、一萬億,你要拿的東西往往是那麼一點點,拿到關鍵的幾個資料就夠了。

今天來說,對于未來我們看到大資料預測應用越來越多的變成線上應用。線上對這個底層資料倉庫帶來的最大壓力在于并發,傳統的資料倉庫在并發上面都是上不去的,都有很大的問題。今天可以做到網際網路級别的高并發應用了。我們有能力為這些分析應用、預測應用提供高并發的快速分析能力。

四、去哪兒案例分享

非常簡單的介紹一下去哪兒的案例,去哪兒在做機票訂單、酒店等等,跟攜程非常像。中間是訂單,有代理商、公司、各種各樣的資訊。它把資料都放到hadoop之上,中間一層是kylin,把下面的資料做了加工之後,處理好,按照資料模型建立起來。上層應用通過相應的資料挖掘界面,以及其他的一些sql的工具就可以通路背景了,通路中間一層可以看到不同的次元、不同的名額等等,千萬級的查詢速度。它的應用基于一個資料模型可以做各種各樣的分析,就能夠預測一下賣的好不好或者什麼地方有問題。

使用超大規模資料分析技術支援大資料預測

至于我們公司,我們在開源之上,并且還在持續的投入做開源社群,非常重要的是我們百分之八九十的工作還在發展開源的技術,提供一些企業級的産品。

使用超大規模資料分析技術支援大資料預測

後面介紹一下我們整個的生态系統,我們要做一家産品和技術公司,希望在中國為使用者提供純粹的産品技術。此外,我們希望跟大資料供應商、雲平台的供應商,上層供應商,以及每個行業的解決方案供應商一起壯大整個大資料生态。

本文作者:韓卿

來源:51cto