




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1Hadoop在淘寶的應用淘寶搜索中心恨少2目錄Hadoop介紹Hadoop在淘寶中的應用一個實際的應用案例淘寶網搜索整體架構Hadoop介紹 Hadoop是Apache組織的一個開源的分布式計算框架,框架中最核心的設計是HDFS和Map-Reduce。基于二者Hadoop有一系列子項目,它們廣泛用于海量數據處理,非結構化數據存儲等領域。主要子項目HadoopCommon:ThecommonutilitiesthatsupporttheotherHadoopsubprojects.Chukwa:Adatacollectionsystemformanaginglargedistributedsystems.HBase:Ascalable,distributeddatabasethatsupportsstructureddatastorageforlargetables.HDFS:Adistributedfilesystemthatprovideshighthroughputaccesstoapplicationdata.Hive:Adatawarehouseinfrastructurethatprovidesdatasummarizationandadhocquerying.MapReduce:Asoftwareframeworkfordistributedprocessingoflargedatasetsoncomputeclusters.Pig:Ahigh-leveldata-flowlanguageandexecutionframeworkforparallelcomputation.ZooKeeper:Ahigh-performancecoordinationservicefordistributedapplications.誰在使用HadoopAlibabaAmazonAdobeBaiduFacebookHuluMicrosoftYahoo!WhyHadoop?可擴展:不論是存儲的可擴展還是計算的可擴展都是Hadoop的設計根本。經濟:框架可以運行在任何普通的PC上。可靠:分布式文件系統的備份恢復機制以及Map-Reduce的任務監控保證了分布式處理的可靠性。高效:分布式文件系統的高效數據交互實現以及Map-Reduce結合LocalData處理的模式,為高效處理海量的信息作了基礎準備。HDFS簡介
HDFS(HadoopDistributedFileSystem)是Hadoop提供的基礎設施,Hadoop其它子項目均依賴于HDFS。 作為一個分布式文件系統,HDFS用于部署在低成本的硬件之上(使用普通PC的硬盤),因此其具有很高的容錯性。HDFS示意圖HDFSShell HDFS除了提供API之外,還提供了一個HDFSShell供用戶訪問文件系統。Shell提供了ls、cat、cp、touch、mkdir、rmr、tail、chmod、chown等接口。Map-Reduce介紹 Map-Reduce是一個分布式的計算框架,用于大規模數據集的并行運算。Map-Reduce大大降低了分布式計算的難度。 一個Map/Reduce作業的輸入和輸出類型如下所示:
(input)<k1,v1>->map-><k2,v2>->combine-><k2,v2>->reduce-><k3,v3>(output)Map-Reduce示意圖一個簡單的例子
WordCount是一個簡單的應用,它可以計算出指定數據集中每一個單詞出現的次數。 比如文件中包含如下內容。數據量可以非常大,它們保存在大量的文件中(HDFS上)。 HelloWorldByeWorld HelloHadoopGoodbyeHadoop 輸出結果如下: Bye1
Goodbye1
Hadoop2
Hello2
World2
map函數 publicvoidmap(LongWritablekey,Textvalue,OutputCollector<Text,IntWritable>output,Reporterreporter)throwsIOException{ Stringline=value.toString(); StringTokenizertokenizer=newStringTokenizer(line); while(tokenizer.hasMoreTokens()){ word.set(tokenizer.nextToken()); output.collect(word,one); } }reduce函數 publicvoidreduce(Textkey,Iterator<IntWritable>values,OutputCollector<Text,IntWritable>output,Reporterreporter) throwsIOException{ intsum=0; while(values.hasNext()){ sum+=values.next().get(); } output.collect(key,newIntWritable(sum)); }Hive簡介
Hive是一個基于Hadoop的數據倉庫分析框架,由Facebook貢獻給了開源社區。Hive定義了一種類似于SQL的語言-HQL,使用HQL可以方便使用SQL類似的語句分析數據,大大降低了數據分析的難度。
Hive支持Map-Reduce。Hive支持UDAF(UserDefinedAggregateFunction,用戶自定義的聚合函數)。HadoopJobWebUIDougCutting介紹 DouglasReedCutting是開源搜索技術的先驅。他先后在Excite,AppleInc.andXeroxPARC等公司工作過。他發起的開源項目有Lucene、Hadoop和Nutch。
DouglasReedCutting目前在Cloudera公司工作。該公司致力于開源云計算(Hadoop)的商業應用。之前DouglasReedCutting在Yahoo!工作。Hadoop在淘寶的應用
淘寶網目前有會員近2億,日均UV高達4000萬,日交易量高達數億元。作為目前亞洲最大的B2C/C2C網站,淘寶每天會產生大量的數據。如何利用這些數據為用戶提供更好的服務以及發掘數據的價值是個難題。 目前阿里集團部署了一個大規模的Hadoop集群,擁有PCServer近千臺,服務器均配置16核心CPU和24GB內存,存儲總量達PB級別。 集團內部各子公司包括B2B和淘寶一起分享該集群。
目前Hadoop主要應用于以下幾個方面: 1、為搜索引擎提供數據建索引。
dump中心每天凌晨從數據庫將表拉到HDFS上,各系統使用各自的Map-Reduce算法生成需要的doc文檔。 2、用戶商務智能分析,比如使用協同過濾算法為用戶推薦商品。淘寶搜索引擎建索引流程
數據庫數據庫數據庫HDFS,運行Map-ReduceJob生成需要的doc文件以建索引引擎服務器引擎服務器引擎服務器build服務器build服務器build服務器dump一個實際的應用案例 定制化搜索項目,在用戶收藏或者購買的店鋪內搜索寶貝。項目實施過程中,使用Hive替代了自己編寫HadoopMap-ReduceJob的方案。
需要處理的數據
1、用戶的收藏信息。包括兩個文件,一個是用戶的收藏條目(collect_item);另一個是收藏條目的詳細信息(collect_info)。收藏信息只有全量數據。collect_item和collect_info均有數百GB。 2、用戶的購買信息(pay)。購買信息以增量的方式每天產生一個文件。由于數據量比較大,目前只使用三個月的數據。 3、因為前端只能使用賣家的數字id去搜索寶貝,而collect_item沒有賣家的數字id,因此必須連接用戶數據文件。用戶數據文件有數百GB。第一種方案 項目實施首先選擇的方案是自己編寫Map-ReduceJob來生成相關的文檔數據。使用Hadoop二次排序的方式連接各文件。 主要優點: 1、過程完全可控,依賴少。
2、效率較高。 主要缺點:
1、需要分別針對收藏數據和交易數據寫兩個HadoopJob。 2、代碼量比較多,可維護性較差。新方案-使用Hive 由于數據量比較大,有些記錄格式有錯,使得自己編寫的Map-ReduceJob生成的數據總是少了一些。鑒于Hive諸多優點,所以項目中途改用Hive重寫。 主要優點:
1、使用HQL,站在更高的邏輯層次上,代碼量少,可維護性非常好。
2、只需編寫一個UDAF便可聚合同一買家對應的收藏和交易買家列表。 主要缺點:
1、運行速度略慢。
2、依賴Hive,需要在生產環境部署Hive。處理過程
1、連接collect_item和用戶表,生成新表t1。 2、連接t1和collect_info,生成新表t2。
3、將交易表做去重處理,生成新表t3。
4、對t2和t3分別使用UDAF處理,生成如下結構(大概數千萬條)。 <doc> type=0 #type為0表示收藏記錄,type為1表示購買記錄 cid=99999643 #用戶的數字id nick=ltvlyc #用戶的昵稱 sid=34755926345891714593849912999374770211586320857231804838 #關聯的賣家數字id列表 </doc>建Hive表 $HIVE"CREATEEXTERNALTABLEcustomed_search_collect_item_$day ( collect_item_idstring, titlestring, t3string, seller_id_strstring, seller_nickstring, t6string)ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\t'STOREDASTEXTFILELOCATION'$itemPath';";編寫UDAF 使用Java編寫UDAF以聚合同一key的數據,即和同一個買家相關的賣家。 $HIVE"addjar$WORKDIR/UDAF_2.0.jar; createtemporaryfunctioncustomed_search_joinas'taobao.GenerateXML'; setmapred.reduce.tasks=300; setpress.output=false; INSERTOVERWRITETABLEcustomed_search_pay_XML_$day selectcustomed_search_join(1,winner_id_dig,winner_nick,seller_id_dig) fromcustomed_search_pay_temp_$daygroupbywinner_id_dig;"; 淘寶目前使用阿里集團內部的iSearch(眾多工具組成的工具集)建索引和提供搜索服務。iSearch支持多層架構,以組成大的搜索集群。將索引數據切分后推送到搜索服務器
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 光伏組件智能生產線項目可行性研究報告(模板范文)
- 高端醫療器械生產線項目可行性研究報告(范文模板)
- 廢舊動力電池回收利用項目可行性研究報告(參考范文)
- 130萬千瓦風電項目實施方案(參考模板)
- 生物基潤滑油添加劑行業深度調研及發展項目商業計劃書
- 高靈敏度基因檢測平臺行業深度調研及發展項目商業計劃書
- 養生茶飲專賣店企業制定與實施新質生產力項目商業計劃書
- 環保型涂料流平劑行業跨境出海項目商業計劃書
- 高速磁懸浮列車與商業化行業跨境出海項目商業計劃書
- 納米增強超耐磨合成革行業深度調研及發展項目商業計劃書
- 隴南2025年隴南市事業單位高層次人才和急需緊缺專業技術人才引進(第一批)筆試歷年參考題庫附帶答案詳解
- 2025-2030年中國羥基磷灰石(HAp)行業市場現狀供需分析及投資評估規劃分析研究報告
- 貴州中考英語復習重點單選題100道及答案
- 課程售賣合同協議書
- 合伙養牛合同協議書
- 2025屆廣西邕衡教育名校聯盟高三下學期新高考5月全真模擬聯合測試數學試題及答案
- 2025羽毛球場館租賃合同
- 線上陪玩店合同協議
- (二模)貴陽市2025年高三年級適應性考試(二)英語試卷(含答案)
- 河南省安陽市新鄉市2025屆高三三模語文試題(含答案)
- 2025-2030中國無損檢測(NDT)行業發展現狀與前景預測研究報告
評論
0/150
提交評論