
當(dāng)下,在線行為分析已并不罕見(jiàn),但對(duì)整個(gè)音樂(lè)產(chǎn)業(yè)進(jìn)行分析仍然不是一件容易的事情——你需要橫跨Spotify、iTunes、YouTube、 Facebook等眾多流行平臺(tái)進(jìn)行相關(guān)跟蹤,其中包括近5億的音樂(lè)視頻流、下載、藝術(shù)家頁(yè)面上產(chǎn)生的大量likes(每日)等,這將給分析系統(tǒng)擴(kuò)展性帶 來(lái)巨大的挑戰(zhàn)。Next Big Sound每天從100多個(gè)源中收集這些數(shù)據(jù),進(jìn)行分析,并通過(guò)基于網(wǎng)絡(luò)的分析平臺(tái)將這些信息提供給唱片公司、樂(lè)隊(duì)經(jīng)理及藝術(shù)家。
時(shí)至今日,類似Hadoop、 HBase、Cassandra、MongoDB、RabbitMQ及MySQL這樣的開(kāi)源系統(tǒng)已在生產(chǎn)環(huán)境中得到了廣泛應(yīng)用,Next Big Sound正是基于開(kāi)源構(gòu)建,然而Next Big Sound的規(guī)模顯然更大了一些——從超過(guò)100個(gè)源接收或收集數(shù)據(jù)。Eric團(tuán)隊(duì)首先面臨的問(wèn)題就是如何處理這些不停變化的數(shù)據(jù)源,最終他們不得不自主 研發(fā)了一個(gè)存儲(chǔ)系統(tǒng),從根本上說(shuō)是個(gè)可以“version”或者“branch”化從這些數(shù)據(jù)源上收集的數(shù)據(jù),類似GitHub上的代碼版本控制。 Next Big Sound通過(guò)給Cloudera發(fā)布版增加邏輯層來(lái)實(shí)現(xiàn)這個(gè)需求,隨后將這個(gè)層與Apache Pig、 HBase、Hive、HDFS等組件整合,形成一個(gè)在Hadoop集群上海量數(shù)據(jù)的版本控制框架。
作為 “Moneyball for Music”一 員,Next Big Sound開(kāi)始只是個(gè)運(yùn)行在單服務(wù)器上的LAMP網(wǎng)站,為少量藝術(shù)家追蹤MySpace上的播放記錄,用以建立Billboard人氣排行榜,以及收集 Spotify上每首歌曲上產(chǎn)生的數(shù)據(jù)。隨著數(shù)據(jù)以近指數(shù)級(jí)速度的增長(zhǎng),他們不得不選用了分布式系統(tǒng)。同時(shí),為了跟蹤來(lái)自公共及私有提供者的100多個(gè)數(shù) 據(jù)源和不同性質(zhì)音樂(lè)的分析處理,Next Big Sound需要比當(dāng)下開(kāi)源數(shù)據(jù)庫(kù)更優(yōu)秀的解決方案。
Next Big Sound一直保持著非常小的工程團(tuán)隊(duì),使用開(kāi)源技術(shù)搭建整個(gè)系統(tǒng),采用過(guò)完全云架構(gòu)(Slicehost)、混合云架構(gòu)(Rackspace)、主機(jī)托管(Zcolo)等不同架構(gòu)形式。
使用類似Cassandra 及HBase這類分布式系統(tǒng)存儲(chǔ)時(shí)間序列是很容易的,然而,隨著數(shù)據(jù)和數(shù)據(jù)源的暴增,數(shù)據(jù)管理變得不再容易。傳統(tǒng)情況下,整合從100+數(shù)據(jù)源中搜集數(shù)據(jù) 的工作包含以下兩個(gè)步驟:首先,在Hadoop ETL管道對(duì)原始數(shù)據(jù)進(jìn)行處理(使用MapReduce應(yīng)用、Pig或者Hive);其次,將結(jié)果存儲(chǔ)到HBase以便后續(xù)Finagle/Thrift 服務(wù)的檢索。但是在Next Big Sound,情況有了些不同,所有存儲(chǔ)在Hadoop/HBase中的數(shù)據(jù)通過(guò)一個(gè)特殊的版本控制系統(tǒng)維護(hù),它支持ETL結(jié)果上的改動(dòng),允許根據(jù)需求來(lái)修 改定義處理管道的代碼。
在對(duì)Hadoop數(shù)據(jù)進(jìn)行再計(jì)算時(shí),使用“版本化”管理Hadoop數(shù)據(jù)提供了一個(gè)可恢 復(fù)及版本化途徑,擴(kuò)展了許多數(shù)據(jù)處理周期技術(shù)(比如LinkedIn)。而Next Big Sound系統(tǒng)的區(qū)別在于可以配置版本化的等級(jí),而不是必須在全局運(yùn)行,舉個(gè)例子:在記錄一個(gè)藝術(shù)家某個(gè)地理區(qū)域上tweet轉(zhuǎn)發(fā)次數(shù)的用例中,忽然發(fā)現(xiàn) 在某個(gè)時(shí)間段內(nèi)基于地理位置編碼的邏輯是錯(cuò)誤的,只需建立這個(gè)時(shí)間段的新數(shù)據(jù)集就可以了,從而避免了對(duì)整個(gè)數(shù)據(jù)集進(jìn)行重建。不同的數(shù)據(jù)通過(guò)版本進(jìn)行關(guān)聯(lián), 也可以為某些用戶指定所訪問(wèn)數(shù)據(jù)的版本,從而實(shí)現(xiàn)只有在數(shù)據(jù)精確時(shí)才對(duì)用戶釋放新的版本。類似這樣的“Branching”數(shù)據(jù)可以應(yīng)對(duì)數(shù)據(jù)源和客戶需求 的變化,同時(shí)也可以讓數(shù)據(jù)管道更高效。更多詳情查看下圖(點(diǎn)擊查看大圖):
在Hadoop 基礎(chǔ)設(shè)施方面,同樣面臨了很多難題:1,跨整個(gè)音樂(lè)產(chǎn)業(yè)的社交網(wǎng)絡(luò)和內(nèi)容發(fā)布網(wǎng)站的實(shí)體關(guān)系映射;2,貫穿上千萬(wàn)數(shù)據(jù)集建立用于排序和搜索的Web應(yīng) 用;3,管理數(shù)百萬(wàn)API調(diào)用的信息以及網(wǎng)絡(luò)爬蟲。這些操作都產(chǎn)生了特定的需求,而在Next Big Sound,系統(tǒng)完全建立在開(kāi)源技術(shù)之上,下面是一個(gè)概況圖(點(diǎn)擊查看大圖):
數(shù)據(jù)顯示
測(cè)量?jī)x表盤一直都是個(gè)進(jìn)行中的項(xiàng)目,這個(gè)工作大部分由用戶需求主導(dǎo)。由于數(shù)據(jù)源太多,這里的長(zhǎng)期目標(biāo)是做靈活性和學(xué)習(xí)曲線之間的平衡;同時(shí),由于新客戶和特性的增加,維持一個(gè)連續(xù)的JavaScript/PHP代碼庫(kù)進(jìn)行管理也變得愈加困難。Next Big Sound操作如下:
沒(méi)有做功能標(biāo)志,但是使用了自己的方法。如果某個(gè)代碼庫(kù)經(jīng)常被重寫,這點(diǎn)將非常重要,沒(méi)有它,很多事情我們都完成不了。
FIND
投 入大量精力做用戶基于給定條件的數(shù)據(jù)集搜索,這個(gè)功能被定義為“FIND”項(xiàng)目的預(yù)覽版本。類似股票篩選器,用戶可以做類似的查詢。比如:Rap藝術(shù)家, 占YouTube視頻播放數(shù)的30-40百分位,同時(shí)之前從未出現(xiàn)在任何流行排行榜上。這個(gè)功能主要依賴于MongoDB,在MapReduce作業(yè)提供 了大量索引集的情況下,系統(tǒng)完全有能力以近實(shí)時(shí)速度完成數(shù)百萬(wàn)實(shí)體上的查詢。
MongoDB在這個(gè)用例上表現(xiàn)的非常好,然而其中一直存在索引限制問(wèn)題。Next Big Sound一直在挑戰(zhàn)這個(gè)瓶頸,ElasticSearch得到了重點(diǎn)關(guān)注。
內(nèi)部服務(wù)
產(chǎn)品使用了所有度量數(shù)據(jù),API 由1個(gè)內(nèi)部Finagle服務(wù)支撐,從HBase和MySQL中讀取數(shù)據(jù)。這個(gè)服務(wù)被分為多個(gè)層(同一個(gè)代碼運(yùn)行),關(guān)鍵、低延時(shí)層通常直接被產(chǎn)品使用, 一個(gè)具備更高吞吐量、高延時(shí)的二級(jí)層則被用作編程客戶端。后兩個(gè)方向一般具有更多的突發(fā)性和不可知性,因此使用這樣的分離層可以給客戶交付更低的延時(shí)。這 樣的分層同樣有利于為核心層建立更小的虛擬機(jī),將Finagle剩余的服務(wù)器共至于Hadoop/HBase機(jī)器上。
Next Big Sound API
支撐Next Big Sound內(nèi)外共同使用的主API已經(jīng)過(guò)多次迭代,下面是一些重點(diǎn)建議:
提醒和基準(zhǔn)
在音樂(lè)的世界里隨時(shí)都有事情發(fā)生,為了獲得“有意義”的事情,Next Big Sound必須在所有平臺(tái)建立基準(zhǔn)數(shù)據(jù)(比如Facebook 每天產(chǎn)生like的數(shù)量),并提醒客戶。開(kāi)始時(shí)也遇到過(guò)許多擴(kuò)展性問(wèn)題,但是在使用Pig/Hadoop做處理并將結(jié)果儲(chǔ)存在MongoDB或MySQL 后,事情簡(jiǎn)單了起來(lái)。Next Big Sound所做的工作就是發(fā)現(xiàn)趨勢(shì),那么給“有意義”設(shè)立臨界值就變得至關(guān)重要,因此在做基準(zhǔn)時(shí)必須使用盡可能多的數(shù)據(jù),而不是只從某個(gè)數(shù)據(jù)上入手,與基 準(zhǔn)線的偏離量將代表了一切。
Billboard Charts
Next Big Sound被授權(quán)做兩個(gè)Billboard 雜志排行榜,一個(gè)是藝術(shù)家在線流行指數(shù)總排行,另一個(gè)是哪個(gè)藝術(shù)家可能會(huì)在未來(lái)排行榜上占據(jù)一席之地。這個(gè)功能并未造成任何擴(kuò)展性問(wèn)題,因?yàn)橹皇亲鏊兴? 術(shù)家得分的一個(gè)反向排行,但是制造一個(gè)無(wú)重復(fù)、有價(jià)值的列表顯然需要考慮更多因素。非實(shí)名給系統(tǒng)帶來(lái)了大量麻煩(比如Justin Bieber的Twitter用戶名到底是"justinbieber"、"bieber"及"bieberofficial"中的哪一個(gè)),通常情況 下,會(huì)采用機(jī)器和人工組合來(lái)解決這個(gè)問(wèn)題。基于1個(gè)人名的選錯(cuò)會(huì)產(chǎn)生重大影響,手動(dòng)完成則必不可少。隨后發(fā)現(xiàn),為在系統(tǒng)上增加這個(gè)“功能”,即讓它記住類 似的處理方法并有能力重現(xiàn)將變得非常有效,幸運(yùn)的是,這個(gè)系統(tǒng)實(shí)現(xiàn)難度并不大。
預(yù)測(cè)Billboard得分
在 哪個(gè)藝術(shù)家將會(huì)在下一個(gè)年度爆發(fā)的預(yù)測(cè)上曾開(kāi)發(fā)了一個(gè)專利算法,這個(gè)過(guò)程應(yīng)用了Stochastic Gradient Boosting技術(shù),分析基于不同社交媒體成員的傳播能力。在數(shù)學(xué)方面,實(shí)現(xiàn)難度比較大,因?yàn)樵S多使用的工具都非Hadoop友好實(shí)現(xiàn),同時(shí)也發(fā)現(xiàn) Mahout表現(xiàn)非常一般。這里的處理過(guò)程包括輸入數(shù)據(jù)集、通過(guò)MapReduce作業(yè)寫入MongoDB或者是Impala,通過(guò)R-MongoDB或 者R-Impala來(lái)兼容R,然后使用R的并行處理庫(kù)在大型機(jī)上處理,比如multicore。讓Hadoop承擔(dān)大部分負(fù)載和大型機(jī)承擔(dān)剩余負(fù)載帶來(lái)了 很多局限性,不幸的是,暫時(shí)未發(fā)現(xiàn)更好的解決辦法,或許RHadoop是最好的期望。
1. 必須擁有自己的網(wǎng)絡(luò)解決方案。如果你想從小的團(tuán)隊(duì)開(kāi)始,確保你團(tuán)隊(duì)中有人精通這個(gè),如果沒(méi)有的話必須立刻雇傭。這曾是Next Big Sound最大的痛點(diǎn),也是導(dǎo)致一些重大宕機(jī)的原因。
2. 在 不同的主機(jī)托管提供商之間轉(zhuǎn)移總是很棘手,但是如果你有充足的額外預(yù)算去支付兩個(gè)環(huán)境運(yùn)行主機(jī)的開(kāi)銷,那么風(fēng)險(xiǎn)將不會(huì)存在。拋開(kāi)一些不可避免的異常,在關(guān) 閉舊供應(yīng)商的服務(wù)之前,將架構(gòu)完全復(fù)制到新服務(wù)供應(yīng)商,并做一些改進(jìn)。使用提供商服務(wù)往往伴隨著各種各樣的問(wèn)題,對(duì)比因此耗費(fèi)的工作及宕機(jī)時(shí)間來(lái)說(shuō),資金 節(jié)省根本不值一提。
3. Next Big Sound有90%的工作負(fù)載都運(yùn)行在 Hadoop/HBase上,鑒于大部分的工作都是數(shù)據(jù)分析而非用戶帶訪問(wèn)網(wǎng)站產(chǎn)生,因此峰值出現(xiàn)的很少,也就造成了使用提供商服務(wù)開(kāi)銷很難比自己托管服 務(wù)器低的局面。Next Big Sound周期性的購(gòu)買容量,但是容量增加更意味著獲得了更大的客戶或者是數(shù)據(jù)合作伙伴,這也是為什么使用自己硬件可以每個(gè)月節(jié)省2萬(wàn)美元的原因。
1. 如果你從很多的數(shù)據(jù)源中收集數(shù)據(jù),同時(shí)還需要做適度的轉(zhuǎn)換,錯(cuò)誤不可避免會(huì)發(fā)生。大多數(shù)情況下,這些錯(cuò)誤都非常明顯,在投入生產(chǎn)之前給予解決;但是也有一些時(shí)候,你需要做充足的準(zhǔn)備以應(yīng)對(duì)生產(chǎn)過(guò)程中發(fā)生的錯(cuò)誤。下面是一些生產(chǎn)過(guò)程中發(fā)現(xiàn)的錯(cuò)誤:
在這些情景下可能存在更明智的做法,直到出現(xiàn)的次數(shù)足夠多,你才會(huì)明確需要修改這些不能被完全刪除的生產(chǎn)數(shù)據(jù)并重建,這也是為什么Next Big Sound為之專門建立系統(tǒng)的原因。
2. 多數(shù)的數(shù)據(jù)都使用Pig 建立并處理,幾乎所有的工程師都會(huì)使用它。因此,工程師們一直在致力研究Pig,這里不得不提到Netflix的Lipstick,非常有效。這個(gè)過(guò)程中 還發(fā)現(xiàn),取代可見(jiàn)性,降低Pig上開(kāi)發(fā)迭代的時(shí)間也非常重要。同時(shí),在測(cè)試之前,花時(shí)間為產(chǎn)生20+ Hadoop作業(yè)的長(zhǎng)期運(yùn)行腳本建立樣本輸入數(shù)據(jù)集也非常重要。
3. 關(guān)于HBase和Cassandra,在使用之前討論這兩個(gè)技術(shù)的優(yōu)劣純粹是浪費(fèi)時(shí)間,只要弄懂這兩個(gè)技術(shù),它們都會(huì)提供一個(gè)穩(wěn)健且高效的平臺(tái)。當(dāng)然,你必須基于自己的數(shù)據(jù)模型和使用場(chǎng)景在這兩個(gè)技術(shù)之間做選擇。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
LSTM 模型輸入長(zhǎng)度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長(zhǎng)序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠(chéng)摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡(jiǎn)稱 BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測(cè)分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢(shì)預(yù)判? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,預(yù)測(cè)分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭(zhēng)搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢(shì)性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢(shì)性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢(shì)與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢(shì)變化以及識(shí)別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國(guó)內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對(duì)策略? 長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場(chǎng)調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場(chǎng)調(diào)研是企業(yè)洞察市場(chǎng)動(dòng)態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場(chǎng)調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動(dòng)力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動(dòng)力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開(kāi)啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03