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