導(dǎo)讀:我們都知道Hadoop是一個能夠?qū)Υ罅繑?shù)據(jù)進(jìn)行分布式處理的軟件框架。具有可靠、高效、可伸縮的特點(diǎn)。而如何將Hadoop生態(tài)系統(tǒng)應(yīng)用到電商中呢?以下和大家分享。
技術(shù)交流和面試其實(shí)有些共通性,比如經(jīng)常會有類似問題: 如何做到高可用的? 訪問峰值達(dá)到什么量級? 系統(tǒng)如何撐住的? 高并發(fā)下數(shù)據(jù)一致性如何保證? 如何進(jìn)行性能優(yōu)化? 使用了什么新技術(shù)? 等等。
實(shí)際上如果大家對高可用、高并發(fā)、高性能的系統(tǒng)設(shè)計(jì)有興趣,從這方面有很多部分可以談:從硬件到軟件、從程序到SQL、 從分布式緩存到CDN,從中間件優(yōu)化到JVM調(diào)優(yōu),直到最后我們發(fā)現(xiàn),高可用、高并發(fā)、高性能依靠的不是某個硬件、某種技術(shù)、某種DB,而需要依靠好的架構(gòu),依靠可以落地實(shí)施的架構(gòu)。
好架構(gòu)有很多,從國外谷歌、亞馬遜到國內(nèi)的BAT,都有很多先進(jìn)架構(gòu)圖。借用一句令人印象比較深的話: 我們從不缺架構(gòu)圖。架構(gòu)圖是形,而怎么落地就是它的神了;就如軍用材料,技術(shù)大家都懂,工藝才是關(guān)鍵。對于搞技術(shù)的人來說,能實(shí)施落地才是關(guān)鍵。
我們的分享分為以下幾個方面:
?1、Hadoop生態(tài)圈
?2、廣告和聯(lián)盟系統(tǒng)
?3、爬蟲比價系統(tǒng)
?4、延保系統(tǒng)
?5、金融風(fēng)控系統(tǒng)
?6、典型應(yīng)用模式
做技術(shù)這么多年,有個感受,就是針對現(xiàn)實(shí)業(yè)務(wù)的抽象是道,具體結(jié)合技術(shù)的應(yīng)用就是術(shù)。比如電商、生產(chǎn)、銷售、財(cái)務(wù)、營銷、物流這些業(yè)務(wù)的抽象,到一定程度上,都是不變的,對道的理解不夠,大方向就有偏差。落地應(yīng)用,術(shù)用的不好,系統(tǒng)實(shí)現(xiàn)的就爛。
今天的交流,還到不了道的層次,主要是術(shù)的應(yīng)用。我在以前在通訊行業(yè)干過多年,因?yàn)閷?span style="font-size: 16px; border: 0px; margin: 0px; padding: 0px; -webkit-tap-highlight-color: rgba(255, 0, 0, 0); font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; color: blue; background: transparent;">Hadoop有些應(yīng)用,因此借以也得到了一個轉(zhuǎn)行互聯(lián)網(wǎng)的機(jī)會。下面我就對我自身在蘇寧易購的Hadoop應(yīng)用理解,拋磚引玉,獻(xiàn)丑一把。

這個圖很好的列舉了Hadoop生態(tài)圈系統(tǒng),在互聯(lián)網(wǎng)界也是大行其道,主要是沾了個“大數(shù)據(jù)”的邊,變得很:”熱”。大數(shù)據(jù)忽悠不懂的老板挺好使,其實(shí)到具體上手應(yīng)用也挺容易,但易懂難深。

下面從我經(jīng)手的一些相關(guān)應(yīng)用說說,廣告系統(tǒng)和聯(lián)盟系統(tǒng),是做平臺電商創(chuàng)收的利器。

C店商家在電商平臺上通過廣告系統(tǒng)投放,通過聯(lián)盟系統(tǒng)吸引流量。我加入廣告部門時,先接手聯(lián)盟系統(tǒng),系統(tǒng)還比較原始,就是普通的信息系統(tǒng),前臺頁面,SSH框架,后臺DB2數(shù)據(jù)庫。流量一大,系統(tǒng)就會宕機(jī),優(yōu)化就是砍各種功能,連點(diǎn)擊日志都不記錄了,為啥?因?yàn)榱看螅P(guān)系型數(shù)據(jù)庫撐不住。
優(yōu)化重構(gòu)勢在必行,概括的說法,就是做了一些系統(tǒng)級別的垂直拆分,引入了一些技術(shù)解決痛點(diǎn)。
分了面向廣告主的系統(tǒng),面向運(yùn)營的系統(tǒng),面向商家的系統(tǒng),任務(wù)系統(tǒng),點(diǎn)擊系統(tǒng)。對于聯(lián)盟系統(tǒng)而言,雖然是CPS計(jì)費(fèi),沒有詳細(xì)的點(diǎn)擊日志,就沒法做深入的應(yīng)用,比如反作弊啊,效果分析啊等等。于是Flume+HDFS+Hive+HBase都上陣了。
在2014年系統(tǒng)的日PV達(dá)到 2千萬左右,大促4千萬左右。系統(tǒng)也平穩(wěn)度過雙11,但這在之前是沒法平穩(wěn)的。
有的同學(xué)肯定會問,為啥用了HDFS/Hive,還要用HBase呢?因?yàn)镠ive利于統(tǒng)計(jì),而HBase利于查詢,我們系統(tǒng)的場景都需要,而兩者之間打通的成本也比較高,于是用了雙寫的方案。
對于極端要求性能的場景,功能又比較單一的引流點(diǎn)擊系統(tǒng),用了Nginx+Lua的架構(gòu),拋開了J2EE的那套,效果還不錯。
廣告系統(tǒng)主要引進(jìn)了STORM,使實(shí)時計(jì)費(fèi)下線廣告變得容易,以前放REDIS,沒那么實(shí)時。主要也是實(shí)時+離線結(jié)合,離線的離不開Hadoop。

現(xiàn)在一般使用HDFS的時候都會選擇用Hive,畢竟寫MR需要點(diǎn)功夫,除了個別需要的場合,一般使用Hive搞定,比較SQL人人都會。

以前總結(jié)過一些使用要點(diǎn),各位隨意看看。另外就是注意數(shù)據(jù)傾斜的問題,相同的目睹,不同的Hive SQL寫出來,效率差別大了。比如善用子查詢,cluster by一些小技巧,這里就不展開了。

爬蟲比價系統(tǒng),是蘇寧情報(bào)部門的拳頭產(chǎn)品,代號“棱鏡”,在2015年雙11大出風(fēng)頭。為啥?SN跟JD拼價格,你敢低價,我馬上比你更低價,iphone貼錢賣。
這個及時獲取對方的商品價格的工作,就是爬蟲比價系統(tǒng)干的事。在電商里面,除了淘寶天貓的前端技術(shù)比較牛逼,比較難爬外,其它電商基本是一爬一個準(zhǔn)。
這個比價項(xiàng)目團(tuán)隊(duì)做了一年多,沒出啥成績,因?yàn)殡y點(diǎn)很多,都要時間攻關(guān)。我就去幫忙參謀解決了存儲問題,也就是使用HBase。
大家知道,爬蟲的數(shù)據(jù)量很大,以前系統(tǒng)用MySql,裝的下也性能低。但他們這個場景挺適合用KV存儲,結(jié)合數(shù)據(jù)庫和搜索引擎技術(shù),能解決不少問題。

1、相同對象不同維度的屬性同屬一張表,方便數(shù)據(jù)統(tǒng)計(jì),單表Scan即可滿足統(tǒng)計(jì)輸入的需求
2、海量數(shù)據(jù)表,進(jìn)行預(yù)分區(qū),Rowkey在Region上均勻分布
3、小量數(shù)據(jù)表,Rowkey按數(shù)據(jù)使用維度進(jìn)行組織,方便查詢
4、多列簇會導(dǎo)致HBase性能下降,故列簇?cái)?shù)量不超過3個
5、封裝HBase操作,將HBase原生接口封裝為簡單的對于Java實(shí)體Bean的操作接口
6、通過實(shí)體Bean上的注解,定義OHM關(guān)系,支持HBase 表管理操作,封裝HBase 讀寫接口(put、delete、get、scan),基于對象進(jìn)行表操作,能自適應(yīng)選擇get/scan
7、封裝常用Filter,基于對象的屬性名、屬性值設(shè)置查詢條件,支持自動生成Rowkey及自定義Rowkey
封裝了一套基于HBase的ORM組件,方便開發(fā)。HBase使用挺簡單,大家都知道,主要是設(shè)計(jì)好ROWKEY就行,另外對于二級索引的引入,那時也沒有找到很好的辦法,華為開源的二級索引跟公司的版本兼容也不行,通過雙份數(shù)據(jù)另外解決。

延保系統(tǒng)是我調(diào)到金融中心搞過的一個系統(tǒng),延保就是電商售賣商品時,搭著賣的保險(xiǎn)產(chǎn)品,因?yàn)槭钦故驹谏唐吩斍轫摚虼肆髁看蟆A硗獯鎯Φ臄?shù)據(jù)量大,因?yàn)橐獙δ硞€會員,知道他購買的訂單商品里,哪些購買過保險(xiǎn),哪些沒買保險(xiǎn),進(jìn)行推銷啥的。
分析業(yè)務(wù),系統(tǒng)切分,圖里表現(xiàn)的很清楚了。大電商平臺里,只要涉及到主要流程的功能,牽扯面都很廣,需要跟各個中心碰頭溝通,最后確認(rèn)功能實(shí)現(xiàn)在什么系統(tǒng)里。
一般高大上的架構(gòu)師做到這步就OK了,研發(fā)出身的架構(gòu)還順帶把技術(shù)方案設(shè)計(jì)了一把,但是會有難點(diǎn),量大,性能要求高。
這個系統(tǒng)群里,對于“延保業(yè)務(wù)增值系統(tǒng)”,需要檢索至少一年內(nèi)的電器訂單,且訂單是按會員維度查詢,量大且檢索條件不復(fù)雜,綜合考慮HBase和Solr的方案,選擇HBase。
說白了,就是結(jié)合具體業(yè)務(wù)場景,給出合理方案,而且可行。能保持2-3年的遠(yuǎn)見就不錯了,領(lǐng)導(dǎo)早換了幾撥了,總得給后面人留點(diǎn)事做。再說過度設(shè)計(jì)也比較難實(shí)施,現(xiàn)在不都講敏捷么。

金融的風(fēng)控系統(tǒng),是我走前帶的最后的業(yè)務(wù)了。風(fēng)控難做,坑太大。不僅僅是系統(tǒng)開發(fā)好,還得用好。好比是PPT,微軟做的工具吧,但每個人寫出來的差別大了。要用好,數(shù)據(jù)挖掘分析少不了,這塊SN種種原因沒弄好,我就不多說了。
工具吧,也就系統(tǒng),原來是基于ESPER做的內(nèi)存計(jì)算,有不少問題,內(nèi)存都加到幾十G了,還是個單點(diǎn)系統(tǒng)。
改唄,大數(shù)據(jù)少不了,至少得STORM啊,實(shí)時計(jì)算。

ESPER+STORM都平臺產(chǎn)品化了,EPL是個好東西。
這平臺產(chǎn)品也不是我們業(yè)務(wù)方開發(fā)的,大數(shù)據(jù)部門提供的,挺好用。我們接入后,把各種規(guī)則表達(dá)式改造進(jìn)去就可以了,這個平臺產(chǎn)品SN叫l(wèi)ibra。
最后總結(jié)了一個普適模式,沒開過葷的可以借用下,有了解應(yīng)用的隨便看看了。

注:本文來自中生代技術(shù)群的分享,分享嘉賓:鄭應(yīng)欽,非凡網(wǎng)高級架構(gòu)師,teamleader。發(fā)布:jurassic_1
嘉賓簡介:鄭應(yīng)欽,15年IT從業(yè)經(jīng)驗(yàn),2013年前主要在通訊行業(yè)奮戰(zhàn),后轉(zhuǎn)向互聯(lián)網(wǎng),在蘇寧易購工作過兩年,現(xiàn)加入萬達(dá)飛凡網(wǎng)。互聯(lián)網(wǎng)行業(yè)主要在廣告,金融方面,做過研發(fā),帶過團(tuán)隊(duì),常在技術(shù)管理和系統(tǒng)架構(gòu)之間切換角色。
來源:云棲社區(qū)