數(shù)據(jù)挖掘?qū)嵗?00美元挖來(lái)無(wú)價(jià)之寶
本文作者講述了他們作為獨(dú)立工程師開(kāi)展數(shù)據(jù)挖掘項(xiàng)目的過(guò)程,告訴我們運(yùn)用各種免費(fèi)或開(kāi)源工具挖掘數(shù)據(jù)的成本很低,同時(shí)降低了我們想象中的難度,探索精神值得我們學(xué)習(xí)。
今天各種強(qiáng)大的數(shù)據(jù)分析工具讓我們有能力分析以前想都不敢想的大企業(yè)或者大機(jī)構(gòu)的數(shù)據(jù)。
幾周前,我們?yōu)長(zhǎng)ucky Oyster執(zhí)行原型技術(shù)搜索任務(wù),當(dāng)時(shí)有幸利用一些簡(jiǎn)單的組件,Common Crawl Data, AWS S3 , 幾百行Ruby代碼和各種開(kāi)源軟件。 當(dāng)時(shí)的感覺(jué)就像在34億Web 網(wǎng)頁(yè)里面挖金礦、提取結(jié)構(gòu)化的數(shù)據(jù)字節(jié)然后為近4億實(shí)體內(nèi)容提供搜索索引。費(fèi)用是多少?100美元,14小時(shí)內(nèi)完成的。
之前在檢驗(yàn)Facebook的硬編碼的長(zhǎng)度和開(kāi)放圖譜tags的時(shí)候,發(fā)現(xiàn)Facebook在更廣泛的網(wǎng)絡(luò)里有著深遠(yuǎn)影響: 22%的網(wǎng)頁(yè)對(duì)Facebook進(jìn)行了硬編碼引用,另外8%網(wǎng)頁(yè)的集合了開(kāi)放圖譜。
在對(duì)結(jié)構(gòu)化數(shù)據(jù)進(jìn)行擴(kuò)散的時(shí)候,我們發(fā)現(xiàn)Web搜索(Google和Bing)和社交網(wǎng)絡(luò)之間的戰(zhàn)爭(zhēng),實(shí)際上是就是內(nèi)容本身可見(jiàn)性和所有權(quán)之間的較量。通常我們認(rèn)為,像Facebook這樣的網(wǎng)頁(yè)不會(huì)指向額外的社會(huì)數(shù)據(jù),但事實(shí)上情況是相反的,社交圖譜擁有更多有用的內(nèi)容和元數(shù)據(jù)指向更廣的網(wǎng)絡(luò),而且這些高度結(jié)構(gòu)化的、社交化的內(nèi)容也是增長(zhǎng)最快的,不管是在Web還是社交圖譜上。
在Lucky Oyster里,每項(xiàng)工作都有具體的矢量,這樣就能創(chuàng)建產(chǎn)品幫助人們辨別、分享、學(xué)習(xí)、發(fā)現(xiàn)網(wǎng)絡(luò)世界的好東西,包括奔跑地、食譜、登山地、景點(diǎn),旨在讓生活因?yàn)榫W(wǎng)絡(luò)發(fā)現(xiàn)而奇妙。
工作流程:
Lucky Oyster的工作流程非常簡(jiǎn)單,n個(gè)工人、啟動(dòng)任務(wù)欄、提取數(shù)據(jù)后統(tǒng)計(jì)到一個(gè)主數(shù)據(jù)收集中心。它使用的工具如下:
Common Crawl Data: 現(xiàn)成的數(shù)據(jù)集是基于2012年網(wǎng)絡(luò)抓取,由70萬(wàn)個(gè)網(wǎng)絡(luò)ARC文件組成,每個(gè)文件壓縮了100M的網(wǎng)絡(luò)抓取網(wǎng)頁(yè),約合34億記錄。這個(gè)可以說(shuō)是最大的網(wǎng)絡(luò)爬行工具了,而且免費(fèi)。
AWS S3:Amazon Web Seivices 能很快地把抓取的資料在S3上當(dāng)做公共數(shù)據(jù)處理,例如AWS的fabric就能輕松訪問(wèn)ARC文件,無(wú)需支付數(shù)據(jù)轉(zhuǎn)換費(fèi)用。
AWS Spot Instances:用Common Crawl Data處理10億條URLs, 需要450美元,但是用 Spot Instances,以處理High-CPU Medium Instance 為例,每小時(shí)0.018美元,這為處理Spots省下了不少錢(qián)。
Master Queue,一個(gè)內(nèi)存隊(duì)列處理通常需要10倍的工作人數(shù)還不夠,但是beanstalkd安裝能夠在30秒內(nèi)整合,而且可以以30多種語(yǔ)言顯示出來(lái)。
Worker Nodes(工作節(jié)點(diǎn)):在啟動(dòng)時(shí),每一個(gè)工作節(jié)點(diǎn)會(huì)運(yùn)行兩個(gè)相同的流程。每個(gè)流程通過(guò)主隊(duì)列、下載和緩沖解壓縮導(dǎo)向AWS S3,然后輔助解析ARC文件和爬行記錄,而且解析ARC文件的速度也很快,只要電腦CPU不是太差。
Master Data Collection Service(主數(shù)據(jù)收集中心),一個(gè)非常簡(jiǎn)單的服務(wù)區(qū),接受GET和POST請(qǐng)求。分析出來(lái)的數(shù)據(jù)會(huì)追加到指定的本地文件夾供以后分析(求和,平均值,減少了密鑰和/或值,索引等)。
接下來(lái):
在這上面的工作完成之后,我們還會(huì)進(jìn)行剔除、分析和平行地索引操作,然后把結(jié)果結(jié)交到一個(gè)集群運(yùn)行的Solr/Lucene。
剛開(kāi)始我們做這個(gè)工作只是為了好奇,但后來(lái)整個(gè)過(guò)程已經(jīng)成為了 Lucky Oyster的核心,但分享的初衷一直沒(méi)有變,很多人都在講處理大數(shù)據(jù)、挖數(shù)據(jù),那就從身邊做起吧,試試把你的目光放在30億網(wǎng)絡(luò)文件上,花半天時(shí)間、100美元分析好它,感受你分析出來(lái)的數(shù)據(jù)結(jié)果。