Pinot是一個適用于Web的實時數(shù)據(jù)分析系統(tǒng),由LinkedIn設(shè)計開發(fā),現(xiàn)在已經(jīng)成為LinkedIn的分布式實時數(shù)據(jù)分析基礎(chǔ)設(shè)施,支撐著LinkedIn內(nèi)外30多個分析產(chǎn)品。LinkedIn的各種數(shù)據(jù)跟蹤功能都是在Pinot的基礎(chǔ)上實現(xiàn)的,如最近哪些用戶查看了特定用戶的資料,哪些用戶在關(guān)注某個公司等。
據(jù)GigaOM報道,在LinkedIn還是一家初創(chuàng)企業(yè)的時候,其工程團隊分成了若干不同的組,每個組使用的數(shù)據(jù)存儲系統(tǒng)差別很大,如將Oracle的關(guān)系型數(shù)據(jù)庫用于查詢,而將Voldemort用于鍵值存儲。但隨著LinkedIn的日益發(fā)展以及用戶數(shù)據(jù)的增多,這些不同的系統(tǒng)變得難以擴展。
Praveen Neppalli Naga是LinkedIn的一名項目經(jīng)理。他告訴GigaOM,為了解決上述問題,他與其團隊開始構(gòu)建一個集中式系統(tǒng)。該系統(tǒng)既要能夠整合LinkedIn的所有數(shù)據(jù),又要能夠簡化以它為基礎(chǔ)的數(shù)據(jù)密集型產(chǎn)品的構(gòu)建過程。為了集中管理LinkedIn的數(shù)據(jù),他們選用Hadoop基礎(chǔ)架構(gòu)模型作為Pinot的基礎(chǔ),并根據(jù)需要做了修改。然后,他們就可以編寫Hadoop腳本,檢索建有索引的用戶數(shù)據(jù)。
另外,為了能夠快速準(zhǔn)確的響應(yīng)用戶請求,LinkedIn工程團隊還必須找到一種方法,既能保證與請求相關(guān)的最新數(shù)據(jù)隨時可用,又能保證老數(shù)據(jù)的可用性,同時,老數(shù)據(jù)又不會混入新數(shù)據(jù)妨礙用戶的查詢。為了實現(xiàn)這個目標(biāo),他們借助Apache Kafka實現(xiàn)了實時數(shù)據(jù)索引過程。
據(jù)Naga說,經(jīng)過了大約兩年的開發(fā),Pinot現(xiàn)在成了LinkedIn事實上的數(shù)據(jù)分析平臺。他們正在評估將其開源,并圍繞它建立一個開發(fā)社區(qū),以推動它進一步發(fā)展。