2014年3月13日,CSDN在線(xiàn)培訓(xùn)第一期“用SQL-on-Hadoop構(gòu)建互聯(lián)網(wǎng)數(shù)據(jù)倉(cāng)庫(kù)與商務(wù)智能系統(tǒng)”圓滿(mǎn)結(jié)束,本次培訓(xùn)講師是來(lái)自美團(tuán)網(wǎng)的梁堰波,在培訓(xùn)中梁堰波分享了目前在互聯(lián)網(wǎng)領(lǐng)域數(shù)據(jù)倉(cāng)庫(kù)和商務(wù)智能系統(tǒng)構(gòu)建的業(yè)務(wù)需求和解決方案,SQL-on-Hadoop產(chǎn)品的原理,使用場(chǎng)景,架構(gòu),優(yōu)缺點(diǎn),性能優(yōu)化等。
CSDN在線(xiàn)培訓(xùn)是專(zhuān)為廣大技術(shù)從業(yè)人員準(zhǔn)備的在線(xiàn)實(shí)時(shí)互動(dòng)技術(shù)培訓(xùn),邀請(qǐng)各個(gè)行業(yè)一線(xiàn)技術(shù)工程師分享他們工作中遇見(jiàn)的各種問(wèn)題以及解決方案,同時(shí)給大家?guī)?lái)一些新技術(shù)、思路、解決方案!
CSDN在線(xiàn)培訓(xùn)以“經(jīng)典性、實(shí)戰(zhàn)性、系統(tǒng)性、前瞻性、專(zhuān)業(yè)性”的特色課程為主,通過(guò)視頻授課、文檔共享、白板共享、屏幕共享、講師在線(xiàn)QA等多種形式的學(xué)習(xí)方法,幫助一線(xiàn)工程師們利用碎片化時(shí)間內(nèi)加強(qiáng)實(shí)戰(zhàn)能力,提升實(shí)踐水平,并實(shí)現(xiàn)與技術(shù)高手的溝通與互動(dòng)。
由于本次培訓(xùn)的時(shí)間有限,問(wèn)答環(huán)節(jié)有很多問(wèn)題講師沒(méi)有時(shí)間進(jìn)行回復(fù),CSDN特別準(zhǔn)備了本次培訓(xùn)QA總結(jié),幫助大家更好的復(fù)習(xí)和總結(jié)此次培訓(xùn)中學(xué)到的技術(shù)點(diǎn),讓各位學(xué)員更快的掌握相關(guān)技術(shù)要點(diǎn),少走彎路。以下是整理的一些QA,更多問(wèn)題可以到CSDN本次活動(dòng)討論帖進(jìn)行互動(dòng):http://bbs.csdn.net/topics/390731622
Q:在Impala上面寫(xiě)的是標(biāo)準(zhǔn)SQL嗎?
我們現(xiàn)在包括Hive,Impala等我們現(xiàn)在使用的SQL-on-Hadoop產(chǎn)品使用的都不是非常標(biāo)準(zhǔn)的SQL,我們都知道要一個(gè)分布式的計(jì)算環(huán)境中實(shí)現(xiàn)標(biāo)準(zhǔn)化SQL,就需要一個(gè)新的分布式的搜索引擎。這個(gè)我們知道像Greenplum、group by對(duì)標(biāo)準(zhǔn)SQL支持的挺好,像Impala對(duì)標(biāo)準(zhǔn)SQL的支持就不是很好。其實(shí)現(xiàn)在使用Impala的機(jī)構(gòu)主要是互聯(lián)網(wǎng),因?yàn)榛ヂ?lián)網(wǎng)企業(yè)會(huì)有很多IT部門(mén)的人員,他們會(huì)基于Impala做一些適合自己業(yè)務(wù)上的開(kāi)發(fā),此時(shí)他肯能不會(huì)用標(biāo)準(zhǔn)化的SQL,因?yàn)樗麄冏⒅氐氖切阅堋?br>Impala目前支持大部分ANSI SQL 92標(biāo)準(zhǔn),暫不支持subquery, exist和set operation等。不過(guò)這個(gè)已經(jīng)在Impala的roadmap里面了,預(yù)計(jì)會(huì)在Impala 2.0里面支持。像subquery這樣的需求可以通過(guò)把SQL改成用join重寫(xiě)來(lái)實(shí)現(xiàn)。
Q:在Hive和Impala同時(shí)使用的情況下,Impala好像不能實(shí)時(shí)得到Hive-Metasotre的更新。得重啟Impala-server才行,有其他解決方式嗎?
這個(gè)問(wèn)題在最新的Impala 1.2.3版本里面已經(jīng)修正了。以前需要refresh或者invalid metaData這樣的顯式命令去update metaData,新的版本里面已經(jīng)多了一個(gè)catalogd服務(wù)來(lái)負(fù)責(zé)把元數(shù)據(jù)的更新推送到每個(gè)節(jié)點(diǎn)。
Q:請(qǐng)教一個(gè)問(wèn)題,現(xiàn)在有大量的日志存放在了HDFS中,這些日志的解釋需要用到一些維度表,存放在MySQL中,請(qǐng)問(wèn)應(yīng)該如何寫(xiě)map reduce程序去做解析這些日志。
這個(gè)是一個(gè)典型的SQL on Hadoop使用場(chǎng)景,我在PPT里面也提到了解決方案。一般來(lái)說(shuō)就是通過(guò)Sqoop任務(wù)把MySQL里面的表格導(dǎo)入HDFS上,然后在HDFS上和log進(jìn)行各種查詢(xún)操作。可以使用mapreduce也可以使用Hive,推薦使用Hive,因?yàn)槟銖腗ySQL里面導(dǎo)入的數(shù)據(jù)是結(jié)構(gòu)化的。
Q:在實(shí)際環(huán)境中,一般公司對(duì)于大量的歷史數(shù)據(jù)會(huì)繼續(xù)存留在HDFS中,還是會(huì)選擇其他底成本的存檔方式
據(jù)我目前的了解,目前很多歷史數(shù)據(jù)還是存儲(chǔ)在HDFS中的,也有公司采用磁帶存儲(chǔ)作為備份。HDFS跟EMC或者NetApp的備份存儲(chǔ)產(chǎn)品相比就是比較低廉的。由于HDFS我們一般把數(shù)據(jù)存儲(chǔ)成三個(gè)replica,所以對(duì)于備份存儲(chǔ)會(huì)有些資源浪費(fèi)。可以考慮的措施有HDFS arcHive或者使用類(lèi)似Erasure Code的思路來(lái)節(jié)約存儲(chǔ)資源。在Facebook和淘寶都使用了Erasure Code的思路存儲(chǔ)大量的不經(jīng)常使用的歷史數(shù)據(jù)。
Q:請(qǐng)問(wèn)國(guó)內(nèi)目前有哪些企業(yè)正在使用Impala呢?使用場(chǎng)景是什么呢?
目前我了解國(guó)內(nèi)阿里巴巴和百度都在使用Impala。具體的使用場(chǎng)景可以參考我和阿里的楊卓犖同學(xué)合作的一篇文章《基于Impala構(gòu)建實(shí)時(shí)大數(shù)據(jù)查詢(xún)系統(tǒng)實(shí)踐》,那里有比較詳細(xì)的介紹。
Q:能談?wù)勀鷮?duì)Data scientist的理解嗎?到底什么樣的人能稱(chēng)作Data scientist?它和Data engineer,還有做Data mining / machine learning的人有區(qū)別嗎
推薦你看一本非常短的書(shū)<<Building Data Science Team>>。我的理解Data scientist就是具備使用數(shù)據(jù)化的方法和思路來(lái)解決業(yè)務(wù)問(wèn)題,會(huì)用數(shù)學(xué)和統(tǒng)計(jì)的方法并用計(jì)算機(jī)編程來(lái)實(shí)現(xiàn)。Data mining和machine learning基本上都是Data scientist必須掌握的一些基本功。
Q:flume收集的日志隨著時(shí)間的推移日志文件數(shù)越來(lái)越多,有什么方法比如1天才產(chǎn)生一個(gè)文件
flume收集的日志到HDFS上,然后按照你自己指定的邏輯進(jìn)行ETL操作。在flume agent上的存儲(chǔ)都是臨時(shí)存儲(chǔ),所以產(chǎn)生數(shù)量多少的文件都是沒(méi)有問(wèn)題的。
Q:目前在互聯(lián)網(wǎng)公司的主要具體的應(yīng)用場(chǎng)景?比如收集nginx日志能具體做些什么應(yīng)用?
比如用戶(hù)瀏覽了那些網(wǎng)頁(yè)、商品,在哪些頻道停留的時(shí)間比較長(zhǎng)等等用戶(hù)行為的分析。日志是一切用戶(hù)分析的基礎(chǔ)。
Q:請(qǐng)問(wèn)美團(tuán)網(wǎng)內(nèi)部Hbase上面是做OLAP嗎,OLTP的話(huà)還是用分布式MySQL嗎
美團(tuán)內(nèi)部Hbase是做online storage的,這個(gè)是用場(chǎng)景和典型互聯(lián)網(wǎng)公司是一樣的。目前是用Hbase做OLAP的公司不是特別多,而且據(jù)我所知效果也都不是特別號(hào)。目前OLTP領(lǐng)域還是Oracle和MySQL的天下。
Q:傳統(tǒng)的Datawarehouse 針對(duì)不同的應(yīng)用,利用不同的layer開(kāi)發(fā)了OLAP,mining等實(shí)現(xiàn)快速查詢(xún),Hadoop針對(duì)此能支持實(shí)時(shí)查詢(xún)嗎
針對(duì)不同應(yīng)用,領(lǐng)用不同的layer這個(gè)在Hadoop Ecosystem同樣沒(méi)有問(wèn)題,因?yàn)檫@個(gè)是數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)和數(shù)據(jù)倉(cāng)庫(kù)邏輯設(shè)計(jì)的問(wèn)題,更多的是應(yīng)該考慮公司的業(yè)務(wù)邏輯,跟使用什么樣的平臺(tái)不是緊耦合的。Hadoop之上有很多實(shí)時(shí)查詢(xún)的工具Tez/Impala/Shark等。
Q:real-time的場(chǎng)景,Shark和Impala對(duì)比怎么樣?好像用Shark的更多?
這個(gè)據(jù)我說(shuō)知沒(méi)有這個(gè)結(jié)論。現(xiàn)在各個(gè)公司都處在初步嘗試階段,Impala和Shark各有各的優(yōu)勢(shì)和缺點(diǎn)。
Q:Impala和阿里的mdrill優(yōu)缺點(diǎn)是什么?
阿里的mdrill我沒(méi)有用過(guò),只是看過(guò)一些資料,我談下個(gè)人觀點(diǎn)。Impala定位是交互式查詢(xún)。而mdrill是“高維+實(shí)時(shí)”查詢(xún),mdrill查詢(xún)的底層數(shù)據(jù)會(huì)做很多預(yù)處理工作,所以數(shù)據(jù)的動(dòng)態(tài)性不如Impala。Mdrill能夠查詢(xún)的維度會(huì)非常非常高。
Q:對(duì)于數(shù)據(jù)倉(cāng)庫(kù),要做上下鉆等,Impala中表要如何設(shè)計(jì),以滿(mǎn)足需求?是針對(duì)所有的可能維度組合都做事實(shí)表嗎?還是只有最小粒度的表的存儲(chǔ),如果有聚合結(jié)果需求,則在查詢(xún)是現(xiàn)算?
這個(gè)邏輯同樣是數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)的問(wèn)題,根據(jù)你的業(yè)務(wù)邏輯和訪(fǎng)問(wèn)模式來(lái)制定,跟使用什么樣的平臺(tái)關(guān)系不是特別緊密。所有可能維度組合做事實(shí)表顯然是不合適的,還是我們經(jīng)常說(shuō)的balance
Q:用MAPREDUCE做數(shù)據(jù)清洗時(shí),維表數(shù)據(jù)如何加載或存儲(chǔ)?是放在內(nèi)存中嗎,如果放在內(nèi)存中,是否有共享內(nèi)存,還是要每臺(tái)機(jī)器都生成緩存
這個(gè)問(wèn)題非常好。HDFS 2.3開(kāi)始支持的新特性會(huì)允許上層應(yīng)用顯式指定把某些數(shù)據(jù)放到哪臺(tái)機(jī)器的內(nèi)存中,這個(gè)特性就是專(zhuān)門(mén)給Hive/Hbase/Impala這樣的應(yīng)用準(zhǔn)備的。不過(guò)目前Hive/Hbase/Impala還不支持這個(gè)功能,如果自己寫(xiě)mapreduce程序可以顯式指定把維度表加載到內(nèi)存中。
Q:現(xiàn)在我們的產(chǎn)品把穩(wěn)定性的要求放在第一位,不能老是異常、宕機(jī),請(qǐng)問(wèn)什么平臺(tái)是最穩(wěn)定的?Hortonworks?CDH?還是其他的平臺(tái)?
說(shuō)實(shí)話(huà)哪個(gè)都不是特別穩(wěn)定,但是從我的經(jīng)驗(yàn)來(lái)看CDH應(yīng)該是相對(duì)好點(diǎn)的,而且CDH支持的功能會(huì)比較完善,對(duì)bug的反應(yīng)速度會(huì)快點(diǎn)。
Q:我在一個(gè)小研究所,我們那有各種服務(wù)器,都是小型機(jī),IBM,HP,聯(lián)想,戴爾的都有,如果搞這個(gè)軟硬件架構(gòu),可行度如何,在技術(shù)層面,包括人力技術(shù)投入和其他硬件投入等;這樣弄完后是不是可以更好的將上面已有的各種網(wǎng)站整合呢;這個(gè)軟件架構(gòu)適合多種大小網(wǎng)站和系統(tǒng)的集成么
這個(gè)問(wèn)題是很多傳統(tǒng)企業(yè)遷移到Hadoop這樣的新型平臺(tái)都會(huì)遇到的問(wèn)題。如果單純整合既有設(shè)備,那么應(yīng)該問(wèn)題不大。其實(shí)問(wèn)題更大的是Hadoop這樣的平臺(tái)是否能夠解決你們的問(wèn)題。Hadoop是個(gè)大數(shù)據(jù)存儲(chǔ)和分析平臺(tái),不是網(wǎng)站后臺(tái)。。。
Q:請(qǐng)問(wèn)樓主是否聽(tīng)說(shuō)過(guò)Data Vault數(shù)據(jù)倉(cāng)庫(kù)建模方法。去年,我們研究并在RDBMS上嘗試使用了這種建模思想。我們的理解是:DV建模方法會(huì)將歷史上所有發(fā)生過(guò)的信息不重復(fù)地保存在數(shù)據(jù)倉(cāng)庫(kù)內(nèi),必要的時(shí)候通過(guò)數(shù)據(jù)加載時(shí)間(Load Date)或者數(shù)據(jù)生效時(shí)間(StartTime)、數(shù)據(jù)時(shí)效時(shí)間(EndTime)區(qū)分相同業(yè)務(wù)在不同時(shí)間點(diǎn)上的情況。
理論上說(shuō)DV建模方法很適合MR/Impala這種分布式的架構(gòu),但是,如何高效地、規(guī)范化地在Hadoop上實(shí)現(xiàn)數(shù)據(jù)加載、數(shù)據(jù)去重、數(shù)據(jù)生命期計(jì)算(數(shù)據(jù)生效/時(shí)效時(shí)間)一直困擾著我們。如果每次更新大量數(shù)據(jù),我們可以接受全量數(shù)據(jù)操作。但是如果只是更新少量數(shù)據(jù),有覺(jué)得以上方法開(kāi)銷(xiāo)甚大。請(qǐng)問(wèn)樓主是否能夠分享一些這方面的經(jīng)驗(yàn)?
這個(gè)問(wèn)題很好,但是也是涉及到具體的業(yè)務(wù)問(wèn)題了。關(guān)于全量更新和增量更新的問(wèn)題,當(dāng)你的數(shù)據(jù)不是很大的時(shí)候全量更新簡(jiǎn)單高效;當(dāng)你的數(shù)據(jù)很大之后,就需要拆解成增量更新,Load Date/Start Time/End Time這個(gè)思路是我們常見(jiàn)的一種解決思路,具體到如何拆解實(shí)現(xiàn)增量更新要看你的業(yè)務(wù)模式是什么樣的。
Q:搭SQL-on-Hadoop環(huán)境是不是很復(fù)雜?最少需要多少臺(tái)服務(wù)器?有沒(méi)有比較簡(jiǎn)單的方法就能搭起SQL-on-Hadoop環(huán)境?主要我對(duì)linux不是很熟悉,
最簡(jiǎn)單的思路就是使用Cloudera公司提供的CDH和Cloudera Manager來(lái)完成一套Hadoop系統(tǒng)的快速構(gòu)建,可以參考cloudera公司的資料。
錯(cuò)過(guò)互聯(lián)網(wǎng)浪潮,錯(cuò)過(guò)電商競(jìng)爭(zhēng)時(shí)代并不可惜,因?yàn)槲覀冓s上了云計(jì)算和大數(shù)據(jù)的興起。面對(duì)巨大的云計(jì)算與大數(shù)據(jù)技術(shù)人才缺口,互聯(lián)網(wǎng)企業(yè)與傳統(tǒng)行業(yè)企業(yè)正在不 惜代價(jià)地爭(zhēng)奪資源:股票激勵(lì)、薪資翻番、最高60個(gè)月年終獎(jiǎng),已經(jīng)在過(guò)去輪番上演。有限的獎(jiǎng)勵(lì)之外,還有無(wú)限的以技術(shù)實(shí)力為資本的創(chuàng)業(yè)潮正在興起。技術(shù)精英們, 已經(jīng)迎來(lái)難得的轉(zhuǎn)型與增值機(jī)會(huì)!快來(lái)關(guān)注CSDN在線(xiàn)培訓(xùn)吧!
上一篇 對(duì)產(chǎn)業(yè)互聯(lián)網(wǎng)戰(zhàn)略的戰(zhàn)術(shù)思考――爭(zhēng)奪企業(yè)信息入口的戰(zhàn)爭(zhēng)
下一篇 Per Brashers:智能、能耗、安全將是未來(lái)數(shù)據(jù)中心發(fā)展的關(guān)鍵!