大數(shù)據(jù)(big data),指無法在一定時(shí)間范圍內(nèi)用常規(guī)軟件工具進(jìn)行捕捉、管理和處理的數(shù)據(jù)集合,是需要新處理模式才能具有更強(qiáng)的決策力、洞察發(fā)現(xiàn)力和流程優(yōu)化能力的海量、高增長(zhǎng)率和多樣化的信息資產(chǎn)。周末去哪兒架構(gòu)師李錫銘根據(jù)自己的成功經(jīng)驗(yàn),為我們分享大數(shù)據(jù)平臺(tái)快速解
搭建始末
當(dāng)時(shí)我們確定要做大數(shù)據(jù)的時(shí)候,有兩種選型。第一種選型是用用原生的、開源的大數(shù)據(jù)技術(shù),需要自己搭建;第二種是ODPS。
后來我們選擇了利用原生大數(shù)據(jù),自己搭建一個(gè)大數(shù)據(jù)平臺(tái)。因?yàn)槲覀円呀?jīng)有了一定的小積累,并且也想做一個(gè)大數(shù)據(jù)方面的技術(shù)沉淀。
在移動(dòng)互聯(lián)網(wǎng)時(shí)代,用戶所有的行為、瀏覽、記錄和收藏等所有的數(shù)據(jù),我們都會(huì)把它拿下來分析,前段時(shí)間階段性沉淀的東西有多少,是對(duì)之前的一個(gè)總結(jié)。這個(gè)數(shù)據(jù)還能幫助我們進(jìn)行深度挖掘,之后如何對(duì)不同用戶分類,做一個(gè)精準(zhǔn)化的營(yíng)銷定位。
每個(gè)公司都會(huì)對(duì)這些數(shù)據(jù)進(jìn)行報(bào)表級(jí)的展現(xiàn)。我們最開始的數(shù)據(jù)實(shí)現(xiàn)方式是把所有用戶的行為數(shù)據(jù)放到傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)中,利用純Java應(yīng)用程序去讀這張表。當(dāng)計(jì)算某個(gè)指標(biāo)的時(shí)候,還會(huì)關(guān)聯(lián)若干張子表。這張主表大概有幾千萬,其它子表也是百萬級(jí)甚至千萬級(jí)的。如果單純用Java去算的話,還要額外處理多線程。
所以我們用傳統(tǒng)的Java純程序+關(guān)系型數(shù)據(jù)庫(kù)去處理報(bào)表的時(shí)候,在存儲(chǔ)和計(jì)算的性能上會(huì)出現(xiàn)問題,以至于報(bào)表需求越來越慢。
在這樣的大背景下,我們改成了使用大數(shù)據(jù)去處理這種場(chǎng)景。
技術(shù)概覽
Hadoop是現(xiàn)在所有大數(shù)據(jù)計(jì)算存儲(chǔ)的一個(gè)底層概念,后面所有衍生的大數(shù)據(jù)產(chǎn)品都是在Hadoop的基礎(chǔ)上進(jìn)行衍生的。
大數(shù)據(jù)平臺(tái)快速解決方案
這張圖是目前大數(shù)據(jù)平臺(tái)的架構(gòu)。
原生的Hadoop應(yīng)該包含了Hdfs(文件存儲(chǔ))、Yarn(資源調(diào)度)和Mapreduce(算法)。
Spark是類似于Mapreduce的一個(gè)計(jì)算框架,它在很多場(chǎng)景中的性能會(huì)比原生的Mapreduce好很多,尤其是迭代計(jì)算的時(shí)候,會(huì)有好幾個(gè)數(shù)量級(jí)的提升。
Sqoop是一個(gè)數(shù)據(jù)的遷移工具。
Hive是對(duì)底層Hdfs系統(tǒng)的文件抽象出一個(gè)類似Mysql的關(guān)系型數(shù)據(jù)庫(kù),但大前提是它是在Hadoop這個(gè)大的語(yǔ)義下的關(guān)系型數(shù)據(jù)庫(kù)。
Oozie是一個(gè)任務(wù)編排和調(diào)度的框架。
Hue是大數(shù)據(jù)的管理后臺(tái)。
Zookeeper是分布式協(xié)調(diào)工具。
1.組件分類
基礎(chǔ)數(shù)據(jù):Mysql,F(xiàn)ile?;A(chǔ)數(shù)據(jù)層是游離于大數(shù)據(jù)之外的概念,它是傳統(tǒng)的數(shù)據(jù)來源。
大數(shù)據(jù)存儲(chǔ):Hdfs、Hive。大數(shù)據(jù)存儲(chǔ)是最基礎(chǔ)的文件存儲(chǔ),在這基礎(chǔ)上抽象出一個(gè)大數(shù)據(jù)的關(guān)系型數(shù)據(jù)庫(kù)。
大數(shù)據(jù)計(jì)算:Mapreduce、Spark、Sqoop。Mapreduce是原生的,Spark是新生的,Sqoop是數(shù)據(jù)轉(zhuǎn)移的工具。
大數(shù)據(jù)協(xié)調(diào)與調(diào)度:Yarn、Zookeeper、Oozie。Yarn是原生的,Zookeeper是一個(gè)分布式保證文件原子性的工具,Oozie是調(diào)度工具。
大數(shù)據(jù)展現(xiàn):Hue。Curd的展現(xiàn)層。
2.典型執(zhí)行流程
大數(shù)據(jù)平臺(tái)快速解決方案
最開始說過,我們遇到的問題是,Mysql的表存不下,計(jì)算也有問題。在這個(gè)場(chǎng)景下要把數(shù)據(jù),從Mysql轉(zhuǎn)到大數(shù)據(jù),并利用大數(shù)據(jù)進(jìn)行計(jì)算,最后做一個(gè)展現(xiàn)。
它的流程是,首先通過Sqoop把Mysql的數(shù)據(jù)一次性或是增量的同步到一張Hive表里,用Hive Sql寫好查詢后,本質(zhì)上Hive Sql會(huì)轉(zhuǎn)化成Mapreduce任務(wù)再去執(zhí)行,最后數(shù)據(jù)就展現(xiàn)出來了。
很多時(shí)候后臺(tái)的服務(wù)Control層會(huì)有入口和出口,我們需要把入口和出口的參數(shù)都記下來,方便以后排錯(cuò)或做統(tǒng)計(jì)方面的應(yīng)用。
在應(yīng)用程序里,把這些消息定時(shí)寫到消息隊(duì)列中,用Spark定時(shí)讀消息隊(duì)列,并把這些讀取到的消息按Spark的方式做一個(gè)編程。這個(gè)任務(wù)最終會(huì)被丟到Hadoop的底層計(jì)算里,然后用Yarn去調(diào)度,計(jì)算出結(jié)果,把這個(gè)結(jié)果寫入Hive,這就完成了一次流式計(jì)算。
3.Hue
大數(shù)據(jù)平臺(tái)快速解決方案
這里寫了一個(gè)Hive Sql,與傳統(tǒng)Mysql的寫法幾乎一樣。Hive Sql寫好以后點(diǎn)執(zhí)行。它的過程是把Sql首先交給Hive去跑,Hive用自己的Sql解析引擎把這個(gè)任務(wù)翻譯成Mapreduce,Mapreduce再用Yarn跑在Hadoop上,最終把結(jié)果跑出來。
4.存儲(chǔ):Hadoop hdfs
HadoopHdfs是基礎(chǔ)的存儲(chǔ)層。
大數(shù)據(jù)平臺(tái)快速解決方案
HadoopHdfs其實(shí)只包含了兩種類型,一個(gè)是Namenode,一個(gè)是Datanode。Namenode是一個(gè)管理的節(jié)點(diǎn),而datanode只負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)和冗余。
5.計(jì)算:Mapreduce&spark
Hadoop原生的計(jì)算框架是Mapreduce,而spark是一個(gè)新興的計(jì)算框架,它更快更全面。
大數(shù)據(jù)平臺(tái)快速解決方案
6.資源管理器:yarn、Apache、hadoop yarn
大數(shù)據(jù)平臺(tái)快速解決方案
資源管理器的架構(gòu)內(nèi)包含rescource manager和node manager。Rescource manager是管理節(jié)點(diǎn),node manager是work節(jié)點(diǎn)。
把任務(wù)丟給rescource manager,它去把任務(wù)分發(fā)給每個(gè)節(jié)點(diǎn),做一些狀態(tài)的變換,最后把結(jié)果通過rescource manager匯總以后,處理完畢交給客戶端。
7.hive
大數(shù)據(jù)平臺(tái)快速解決方案
hive的架構(gòu)并不是很復(fù)雜,上層是一些用戶的API、web頁(yè)面和命令行。它的核心是執(zhí)行引擎,把sql翻譯成大數(shù)據(jù)平臺(tái)可以接受的任務(wù)。底層基于存儲(chǔ),它可以存在hdfs上。
8.sqoop
主要用于在hadoop與傳統(tǒng)的數(shù)據(jù)庫(kù)間進(jìn)行數(shù)據(jù)的傳遞。
9.ooize
大數(shù)據(jù)任務(wù)編排調(diào)度。
學(xué)習(xí)與使用路線
如果想要學(xué)習(xí)一些大數(shù)據(jù)相關(guān)的東西,我推薦可以先掌握一些基礎(chǔ),然后找一個(gè)場(chǎng)景套進(jìn)技術(shù)里,進(jìn)行快速實(shí)踐。在快速實(shí)踐的過程中會(huì)發(fā)現(xiàn)很多問題需要解決,很多知識(shí)需要補(bǔ)充,所以要在實(shí)踐中前行,在錯(cuò)誤中補(bǔ)充。
9月10日 – 北京 – 國(guó)內(nèi)領(lǐng)先的移動(dòng)大數(shù)據(jù)服務(wù)商極光受邀出席了在杭州舉辦的2017中國(guó)FinTech大會(huì)。極光大數(shù)據(jù)聯(lián)合創(chuàng)始人兼總裁陳菲出席并發(fā)表題為《金融科技中的大數(shù)據(jù)布局》主題演講,向與會(huì)嘉賓分享了極光大數(shù)據(jù)在金融科技領(lǐng)域的應(yīng)用與實(shí)踐。
極光大數(shù)據(jù):金融科技一站式解決方案
2017年是中國(guó)金融科技蓬勃爆發(fā)的一年,隨著科學(xué)技術(shù)在金融領(lǐng)域的不斷深入,大數(shù)據(jù)正以迅猛勢(shì)頭重新塑造著金融業(yè)態(tài)。陳菲在演講中表示:“不管是傳統(tǒng)金融銀、證、保,還是新興的互聯(lián)網(wǎng)金融、消費(fèi)信貸等,都對(duì)數(shù)據(jù)產(chǎn)生了強(qiáng)依賴關(guān)系,可以說,誰(shuí)擁有了大數(shù)據(jù),誰(shuí)理解了大數(shù)據(jù),誰(shuí)用好了大數(shù)據(jù),誰(shuí)就會(huì)在新形式下脫穎而出?!?
極光大數(shù)據(jù):金融科技一站式解決方案
陳菲認(rèn)為,金融行業(yè)在大數(shù)據(jù)時(shí)代面臨著四大痛點(diǎn),即資金、獲客、風(fēng)控與運(yùn)營(yíng)。極光作為國(guó)內(nèi)領(lǐng)先的移動(dòng)大數(shù)據(jù)服務(wù)商,憑借在開發(fā)者服務(wù)上的多年積累,擁有海量的自有數(shù)據(jù)及數(shù)據(jù)處理能力,以覆蓋客戶全生命周期的一站式解決方案,幫助金融機(jī)構(gòu)全面提升客戶洞察能力,實(shí)現(xiàn)精準(zhǔn)獲客,加強(qiáng)運(yùn)營(yíng)分析和風(fēng)險(xiǎn)管理。
在同天進(jìn)行的FinTech領(lǐng)軍企業(yè)頒獎(jiǎng)典禮上,極光大數(shù)據(jù)還獲得了2017中國(guó)FinTech大會(huì)最具技術(shù)力企業(yè)大獎(jiǎng),這無疑是對(duì)極光深耕技術(shù)領(lǐng)域的又一次肯定。
極光從開發(fā)者服務(wù)開始,經(jīng)過6年的不斷創(chuàng)新,服務(wù)了超過50萬款移動(dòng)應(yīng)用,累計(jì)覆蓋超過 90 億個(gè)移動(dòng)終端,月獨(dú)立活躍設(shè)備超過 7.5 億,產(chǎn)品覆蓋了中國(guó)國(guó)內(nèi) 90% 以上的移動(dòng)終端,日均消息推送超過30億條。未來,極光將繼續(xù)深耕金融、商業(yè)地產(chǎn)、會(huì)展、旅游和公共服務(wù)等垂直行業(yè)的數(shù)據(jù)服務(wù),以開箱即用的標(biāo)準(zhǔn)化數(shù)據(jù)產(chǎn)品與服務(wù),幫助客戶解決痛點(diǎn),真正提高企業(yè)的運(yùn)營(yíng)效率。
關(guān)于極光
極光(www.jiguang.cn)是中國(guó)領(lǐng)先的移動(dòng)大數(shù)據(jù)平臺(tái)和移動(dòng)應(yīng)用云服務(wù)提供商。其團(tuán)隊(duì)核心成員來自騰訊、摩根士丹利、豆瓣、Teradata、中國(guó)移動(dòng)等公司。公司自2011年成立以來專注于為APP開發(fā)者提供穩(wěn)定高效的消息推送、即時(shí)通訊和短信驗(yàn)證碼等開發(fā)者服務(wù)。至今我們已經(jīng)服務(wù)了超過50萬款移動(dòng)應(yīng)用,累計(jì)覆蓋超過90億個(gè)移動(dòng)終端,月活躍用戶超過7.5億,產(chǎn)品覆蓋了中國(guó)國(guó)內(nèi)90%以上的移動(dòng)終端。基于積累的海量數(shù)據(jù)(603138,診股),我們拓展了在大數(shù)據(jù)領(lǐng)域的產(chǎn)品,包括極光廣告服務(wù)和極光數(shù)據(jù)服務(wù)。極光致力于為各行各業(yè)節(jié)約開發(fā)成本,提高運(yùn)營(yíng)效率,優(yōu)化業(yè)務(wù)決策。