99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀谷歌Dremel讓大數(shù)據(jù)變小_數(shù)據(jù)分析師
谷歌Dremel讓大數(shù)據(jù)變小_數(shù)據(jù)分析師
2014-11-24
收藏

谷歌Dremel讓大數(shù)據(jù)變小_數(shù)據(jù)分析師


邁克·奧爾森,Hadoop運動背后的首腦之一。

北京時間8月16日消息,《連線》雜志近日刊載文章稱,開源云計算軟件平臺Hadoop已經在整個網(wǎng)絡中得到了廣泛的運用,無論是在數(shù)據(jù)分析領域還是在其他各種數(shù)據(jù)運算任務中都是如此;但是,谷歌(微博)已經開發(fā)出了更新的技術Dremel,這是一種用來分析信息的方法,它可以在數(shù)以千計的服務器上運行,能以極快的速度處理網(wǎng)絡規(guī)模的海量數(shù)據(jù),從而讓“大數(shù)據(jù)”看起來變小。

以下是這篇文章的全文:

邁克·奧爾森(Mike Olson)運營著一家專業(yè)致力于全球最熱門軟件的公司,他是硅谷創(chuàng)業(yè)公司Cloudera的首席執(zhí)行官,這家公司在開源云計算軟件平臺Hadoop上經營自身業(yè)務,這個平臺以將谷歌變成網(wǎng)絡上最具主導性的力量的技術為基礎。

據(jù)預計,Hadoop將在2016年以前幫助創(chuàng)造一個8.13億美元的軟件市場。但甚至就連奧爾森都說,這已經是舊新聞了。

Hadoop來自于谷歌在2003年底和2004年發(fā)布的兩份研究報告,其中一份描述了谷歌文件系統(tǒng)(Google File System),這是在數(shù)以千計的低價電腦服務器上存儲海量數(shù)據(jù)的一種方式;另一份則詳細描述了MapReduce,這種技術能將所有那些服務器內部的處理能力整合起來,對所有數(shù)據(jù)進行運算,使其變成某種有用的東西。在8年以后,Hadoop在整個網(wǎng)絡中得到了廣泛的運用,無論是在數(shù)據(jù)分析領域還是在其他各種數(shù)據(jù)運算任務中都是如此。但是,谷歌卻已更進一步,開發(fā)出了更新的技術。

在2009年,這個網(wǎng)絡巨頭開始用新技術取代GFS和MapReduce。奧爾森會告訴你說,這些技術是整個世界正在走向的去處?!叭绻阆胍牢磥泶笠?guī)模的、高性能的數(shù)據(jù)處理基礎設施是什么樣子的,我的建議是你可以去看看谷歌現(xiàn)在將會發(fā)布的研究報告。”奧爾森在最近與《連線》雜志進行小組討論時說道。

Hadoop崛起以來,谷歌已經發(fā)布了三份特別有趣的研究報告,內容有關為其龐大的網(wǎng)絡業(yè)務提供支撐的基礎設施。其中一份文件詳細描述了Caffeine,這個軟件平臺為谷歌的網(wǎng)絡搜索引擎構建了指引;另一份則展示了Pregel,這是一個旨在映射大量在線信息之間關系的“圖表數(shù)據(jù)庫”。但最有趣的論文則描述了一種名為Dremel的工具。

“如果你曾事先告訴我Dremel聲稱其將可做些什么,那么我不會相信你能開發(fā)出這種工具?!奔永D醽喆髮W伯克利分校的計算機科學教授阿曼多·??怂梗ˋrmando Fox)說道,他專業(yè)致力于研究這種數(shù)據(jù)中心規(guī)模的軟件平臺。

Dremel是一種用來分析信息的方法,它可以在數(shù)以千計的服務器上運行,允許你“請求查詢”海量數(shù)據(jù),如網(wǎng)絡文件的集合或是數(shù)字圖書館等,甚至是描述成百上千萬條垃圾游戲信息的數(shù)據(jù)。這類似于分析一個使用SQ語言L的傳統(tǒng)數(shù)據(jù)庫,這種語言在過去數(shù)十年時間里廣泛應用于整個軟件世界。舉例來說,如果你擁有一個數(shù)字圖書的集合,那么就可以運行一個專設的查詢請求,然后就可獲得所有作者的名單——或是圖書內容覆蓋某個特定主題的作者名單。

“你擁有一種類似于SQL的語言,能讓制定專設的查詢請求變得非常簡單——而且,你不需要做任何編程工作,只需將查詢請求輸入到命令行里即可?!必撠煿芾砉雀杌A設施的Urs Holzle說道。

區(qū)別在于,Dremel能以極快的速度處理網(wǎng)絡規(guī)模的海量數(shù)據(jù)。據(jù)谷歌的研究報告顯示,你能以拍字節(jié)(petabyte,PB,1PB等于1024TB)的數(shù)量級來進行查詢,而且只需幾秒鐘時間就能完成。

Hadoop已經提供了在龐大的數(shù)據(jù)集合中運行SQL查詢請求的工具,Pig和Hive等姊妹項目也是為此而構建的,但使用Hadoop會有遲延時間。這是一個“批量處理”平臺,你可以交給它一個任務,然后它需要花費幾分鐘時間——或者是幾個小時——來運行這個任務,然后可以得到查詢結果。而與此相比,Dremel則是專門為瞬時查詢而設計的。

“Dremel能執(zhí)行許多查詢請求,而同樣的數(shù)據(jù)如果由MapReduce來處理,則通常會需要向后者給出一系列的任務,而且前者的執(zhí)行時間僅相當于后者很小的一部分。”谷歌的Dremel報告指出。Holzle稱,Dremel能在大約3秒鐘時間里運行1PB的數(shù)據(jù)查詢請求。

阿曼多·福克斯稱,這種處理能力是史無前例的。Hadoop是“大數(shù)據(jù)”運動的中心,這場運動旨在構建能夠分析海量信息的工具。但就今天的大數(shù)據(jù)工具而言,它們經常都會存在一種缺點。與傳統(tǒng)的數(shù)據(jù)分析或是“商務智能”工具相比,大數(shù)據(jù)工具的信息分析速度和精確度有所不及。但??怂怪赋?,如果使用Dremel,那么就能獲得很好的速度和精確度。

“他們成功地大規(guī)模的數(shù)據(jù)分析與真正深挖數(shù)據(jù)的能力結合到了一起,而且他們做到這一點的方式是我以前從未想到過有可能做到的?!彼f道?!皵?shù)據(jù)的規(guī)模以及挖掘數(shù)據(jù)的速度確實令人感到印象深刻。人們以前也曾做過大數(shù)據(jù)系統(tǒng),但在Dremel以前,沒人真的能做出一個如此龐大和如此迅速的系統(tǒng)?!彼M一步指出:“在通常情況下,你只能同時運行一個任務或是另一個任務;在一個任務方面做得越多,就越是不得不放棄另一個。但通過Dremel,你能同時進行兩個任務?!?/span>

據(jù)谷歌的研究報告顯示,這個平臺自2006年開始就已經在谷歌內部使用,有“數(shù)千名”谷歌員工使用這個系統(tǒng)來對所有信息進行分析,從軟件崩潰報告到谷歌的各種服務,再到谷歌數(shù)據(jù)中心內部的磁盤表現(xiàn)都可進行分析。有些時候,這種工具會在數(shù)十個服務器上使用,而有些時候則多達數(shù)千個。

雖然Hadoop已經取得了無可置疑的成功,但奧爾森則指出,構建這個平臺的公司和開發(fā)者慢了一拍。同樣的事情也發(fā)生在Dremel身上。谷歌在2010年就發(fā)布了有關Dremel的報告,但距離這個平臺能被第三方開發(fā)者模仿仍有很長一段路要走。以色列的一個團隊正在構建一個被稱為OpenDremel的克隆版平臺,但其中一位名叫大衛(wèi)·格魯茲曼(David Gruzman)的開發(fā)者告訴我們,在經過漫長的時間以后,這個平臺的編碼進程還只是處在開端階段。

華盛頓大學的粒子物理學副教授、創(chuàng)業(yè)公司Cloudant的首席科學家邁克·米勒(Mike Miller)感到吃驚,原因是我們并未看到某些大型的風險投資公司為一家致力于“逆向工程”Dremel的創(chuàng)業(yè)公司提供融資。在過去多年時間里,Cloudant曾處理過與谷歌所面臨的數(shù)據(jù)問題相同的許多問題。

今天你可以使用Dremel——即使你并非谷歌的工程師。谷歌現(xiàn)在提供一種被其稱為BigQuer的Dremel網(wǎng)路服務。你可以通過一個在線API(應用程序接口)來使用這個平臺?;旧蟻碚f,你可以把你的數(shù)據(jù)上傳到谷歌,然后谷歌會允許你在它的內部基礎設施中運行查詢請求。谷歌所提供的云服務數(shù)量正在增長,而這種服務也是其中一部分。在最早的時候,谷歌允許你使用一種名為Google App Engine的服務來在其基礎設施中托管所有應用;而時至今日,谷歌則提供其他多種能在同樣的基礎設施上運行的設施,包括BigQuery和Google Compute Engine等,能讓用戶瞬時接入虛擬服務器。

世界的其他部分可能落后于谷歌,而谷歌則正將自己帶給世界的其他部分。 CDA數(shù)據(jù)分析師培訓官網(wǎng)


數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師考試動態(tài)
數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調,回調的第一個參數(shù)驗證碼對象,之后可以使用它調用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }