網(wǎng)上有很多關(guān)于銀聯(lián)pos機(jī)回訪工作,Apache Kylin 在銀聯(lián)的實(shí)踐的知識(shí),也有很多人為大家解答關(guān)于銀聯(lián)pos機(jī)回訪工作的問題,今天pos機(jī)之家(m.afbey.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來看下吧!
本文目錄一覽:
銀聯(lián)pos機(jī)回訪工作
金融機(jī)構(gòu)在 BI 分析中遇到了哪些挑戰(zhàn)?
首先簡單介紹一下我們公司數(shù)據(jù)倉庫的背景,2008 年公司開始建數(shù)據(jù)倉庫,2009 年上線。這個(gè)數(shù)據(jù)倉庫運(yùn)轉(zhuǎn)到現(xiàn)在已經(jīng)有 10 個(gè)年頭,采用的是比較傳統(tǒng)標(biāo)準(zhǔn)的架構(gòu),數(shù)據(jù)倉庫主體用的是 IBM DB2。
在 BI 這塊我們引入了 Cognos 作為總的 BI 工具,當(dāng)時(shí),整個(gè)金融界都比較流行 Cognos。在這 10 年內(nèi),包括 Cognos 等一些其他商業(yè)版的多維分析工具,確實(shí)給企業(yè)分析帶來了很大的便利。時(shí)過境遷,現(xiàn)在到了大數(shù)據(jù)年代,數(shù)據(jù)量越來越大, Cognos 面臨了一些挑戰(zhàn), 我們數(shù)據(jù)量的增長, 10 年間漲了 10 倍;在最近兩三年,我們的業(yè)務(wù)量又更加迅猛地增長,這對(duì)數(shù)據(jù)分析的挑戰(zhàn)是巨大的。
Cognos 從整個(gè)功能、架構(gòu)上來講, 都是基于單機(jī)版的,效率很低;因此我們?cè)?Cognos 的基礎(chǔ)上研發(fā)了一些工具,包括調(diào)度、Cube 刷新,Cube 訪問等等,這其中申請(qǐng)的專利就有好幾個(gè)。這些工具核心還是基于單機(jī)的運(yùn)轉(zhuǎn),所以說在構(gòu)建上它的擴(kuò)展性不好,一個(gè)體現(xiàn)是,刷 Cube 的時(shí)間越來越長。
例如一些每日刷新的 Cube,業(yè)務(wù)分析用戶需要基于這些日 Cube 要出當(dāng)日?qǐng)?bào)表, 但是鑒于現(xiàn)在的數(shù)據(jù)量和處理能力,很難在他們預(yù)期的時(shí)間內(nèi)達(dá)到要求,我們技術(shù)團(tuán)隊(duì)的壓力很大,做了很多工作,想了各種各樣的辦法在調(diào)優(yōu),但是收效仍然低于預(yù)期。
以上是我們用 Cognos 碰到的一些挑戰(zhàn),正是因?yàn)檫@個(gè)原因,我們?cè)?2015 年在一個(gè)技術(shù)分享活動(dòng)上,我們和 Apache Kylin 第一次觸電。
Apache Kylin 的性能和價(jià)值
在下圖可以看到,Kylin 各方面的性能和 Cognos 相比有了大幅的提高,這些數(shù)據(jù)都是實(shí)際中的一些例子。從使用資源來講,大數(shù)據(jù)平臺(tái)的資源還是比較富裕的,Kylin 整個(gè)架構(gòu)比較強(qiáng)調(diào)讀寫分離,目前我們?cè)?Kylin 上投了 20 多臺(tái)機(jī)器進(jìn)行 Cube 的構(gòu)建和查詢。
效率提升4倍,Apache Kylin在銀聯(lián)的實(shí)踐
首先看一下查詢,96% 的查詢?cè)?10 秒之內(nèi)返回;除非是非常大、復(fù)雜的條件可能要到 20 秒左右。 而以前我們的 Cognos 從打開到展示,拖拉拽建立一個(gè)基本的報(bào)表要接近一分鐘,Kylin 對(duì)用戶的體驗(yàn)和感受的提升是非常巨大的。
從整個(gè)構(gòu)建性能上來講, Kylin 相比于 Cognos 也有巨大的提升。因?yàn)?Cognos 是單機(jī),沒有辦法利用分布式集群資源,必須是一個(gè)比較獨(dú)立的 Cognos 在跑,每天跑 8 個(gè)小時(shí)以上。Kylin 的構(gòu)建是在整個(gè)大數(shù)據(jù)平臺(tái)之上,跟其他的批量計(jì)算共享集群資源,這個(gè)時(shí)候基本上是兩個(gè)小時(shí)左右,就可以把整個(gè) Cube 構(gòu)建出來。
膨脹率是一個(gè)關(guān)鍵點(diǎn),在測(cè)試環(huán)境上,效果不是很好,有 10 倍以上的膨脹。當(dāng)時(shí)我有點(diǎn)猶豫,問題出在什么地方?后來跟 Kylin 團(tuán)隊(duì)有一個(gè)深入的交流,發(fā)現(xiàn)是模擬的測(cè)試數(shù)據(jù)的特征和實(shí)際特征有出入。他們建議我們用較為真實(shí)的數(shù)據(jù)在測(cè)試一下,得到的結(jié)果表現(xiàn)要好一些,膨脹率大概是 3 倍。而且 3 倍還是因?yàn)楹竺鏁?huì)講的高基維的引入引發(fā)了這點(diǎn)。
從膨脹率上來講,有幾點(diǎn)可以跟大家分享,一個(gè)是在測(cè)試環(huán)境做測(cè)試的時(shí)候,當(dāng)時(shí)是因?yàn)槟M的一些數(shù)據(jù)的分布情況跟實(shí)際不是完全一致,引發(fā)了大量的膨脹率。另外一個(gè) Kylin 的模型上確實(shí)是有一定的講究,通過一些模型優(yōu)化,我們確實(shí)有效地把 Kylin 的膨脹率控制在 3 倍以內(nèi)。
從整體上來講,通過對(duì) Kylin 這個(gè)產(chǎn)品的引入,對(duì)我們帶來的好處是非常多的。
現(xiàn)在整個(gè)的報(bào)表,以前 8 小時(shí) Cube 現(xiàn)在 2 小時(shí)就可以出來,給我們的小伙伴的指標(biāo)是每天早上 9 點(diǎn)鐘之前,要把昨天所有的數(shù)據(jù)做完,用戶能夠訪問到,這個(gè)指標(biāo)現(xiàn)在基本上完全能夠達(dá)到。
從訪問來講,基本上 96% 在 10 秒之內(nèi),完全出乎用戶的意料,用戶進(jìn)來談笑之間數(shù)據(jù)就可以出來。
一些高基維的引入,進(jìn)一步降低了我們開發(fā)壓力、維護(hù)壓力。
企業(yè)如何落地 Kylin
作為一個(gè)傳統(tǒng)企業(yè),引入 Apache Kylin 這樣的開源軟件,該怎么樣引入? 這個(gè)是從我個(gè)人的角度給大家做一個(gè)分享,不一定完全對(duì), 大家可以一起思考和討論。對(duì)于金融機(jī)構(gòu)來說,去引入開源軟件,追求的其實(shí)就是核心的四個(gè)字:自主可控。其次有三個(gè)方面的因素需要考慮。
用戶體驗(yàn)
引入 Kylin 非常大的一點(diǎn)原因,我們可以把整個(gè) Cognos 分析報(bào)表架在 Apache Kylin 上, 用戶仍舊可在 Cognos 上進(jìn)行拖拉拽,后臺(tái)使用 Kylin 進(jìn)行查詢,用戶習(xí)慣得到了 100% 原汁原味的保留 。我們服務(wù)的是用戶,所以用戶的體驗(yàn)、感受是非常關(guān)鍵的。
社區(qū)支持
原來用 IBM Cognos 的售后服務(wù)非常好,問題提出后,他們響應(yīng)會(huì)非??欤]件的方式或者是回訪,他們會(huì)收集一堆的生產(chǎn)上的情況,一堆的報(bào)表。但是,問題還是沒發(fā)完全解決。傳統(tǒng)的商業(yè)產(chǎn)品,往往會(huì)面臨這樣的情況:態(tài)度非常好,但碰到一些具體問題快速解決的效率不高,另一方面用戶間相互交流的途徑較少,相互啟發(fā)式的最優(yōu)實(shí)踐經(jīng)驗(yàn)分享不夠。
一個(gè)非常 Open 的開源軟件,其實(shí)對(duì)于我們這樣傳統(tǒng)的金融機(jī)構(gòu)來說,可謂是一個(gè)美好的毒藥。雖然都是開源的,社區(qū)也非常活躍,但是如果沒有足夠的開發(fā)人員、技術(shù)人員在里面的話,玩不轉(zhuǎn)的。像現(xiàn)在大數(shù)據(jù)的社區(qū)非?;钴S,多少企業(yè)在這個(gè)社區(qū)里有很好的主導(dǎo)權(quán)呢?從這個(gè)角度來講,Kylin 這個(gè)社區(qū)對(duì)我們的幫助很大。這個(gè)社區(qū)很開放,同時(shí) Kyligence 公司在這個(gè)社區(qū)里也起著一個(gè)很重要的主導(dǎo)權(quán)。我們提出的問題,社區(qū)里的朋友會(huì)跟我們做交流,Kyligence 公司也會(huì)以一個(gè)主要的代碼貢獻(xiàn)者的身份,提出很好的建議和意見。
組件化
Kylin 越來越龐大,它可以是一個(gè)完整的產(chǎn)品,可以把它拿回來作為一個(gè) BI 去用。我們?cè)谶x Kylin 的時(shí)候,更多的是看重它的組件化的特質(zhì)。如果熟悉 Kylin 的應(yīng)該知道,它既是一個(gè)產(chǎn)品也是一個(gè)計(jì)算組件,也有可以是一個(gè)存儲(chǔ)組件。
我們沒有把 Kylin 當(dāng)成一個(gè)完整的產(chǎn)品,而是把它當(dāng)做一個(gè)組件。過去我們講“Intel inside”,在構(gòu)建我們自己的 BI 產(chǎn)品的時(shí)候,我有時(shí)候也說,“Kylin inside”,我們看一下,什么叫做 "Kylin inside"。
企業(yè)內(nèi)部的大數(shù)據(jù)圍繞著給用戶服務(wù),做 BI,和數(shù)據(jù)提取的體系架構(gòu)。這一圈基本上是自營的一些組件、安全、任務(wù)執(zhí)行、資源控制,任務(wù)監(jiān)控、訪問控制;底層是非常熟悉的一系列的大數(shù)據(jù)套件包括 MapReduce、Spark、Impala、HBase,包括 EDW,所以整個(gè)外圍的一圈給包在一起,作為一個(gè)統(tǒng)一的解決方案提供給用戶,用戶可以通過各種方式去訪問數(shù)據(jù)、使用數(shù)據(jù)做自己的分析。
所以說 Kylin inside,包括我們自營的 Tornado 數(shù)據(jù)加工服務(wù),中間的 Kylin 作為一個(gè)比較核心的組件,是數(shù)據(jù)分析的支撐;同時(shí)還包括 Lightning 實(shí)時(shí)數(shù)據(jù)服務(wù)產(chǎn)品。
從這個(gè)角度來講,我們并不是說簡單的把 Kylin 當(dāng)一個(gè)產(chǎn)品引入而是作為一個(gè)組件的形式賦能到我們產(chǎn)品上。
企業(yè)基于 Kylin 定制化 BI 開發(fā)
前面介紹一下為什么從 Cognos 移到 Kylin 上來,在這個(gè)過程中,我們重點(diǎn)考量的是哪些點(diǎn)。接下來,我會(huì)向大家介紹,針對(duì) Kylin 的外圍,我們做了哪些事情。
我們基于 Kylin 商業(yè)版本 Kyligence Enterprise 做了一些二次開發(fā),我們選擇企業(yè)版更看重的是商業(yè)服務(wù)。圍繞著 Kylin,我們做了兩方面的事情。最開始做數(shù)據(jù)時(shí),基本上是以 Cognos 的方式在跑報(bào)表、數(shù)據(jù)。用戶反饋,Cognos 太難了, 表結(jié)構(gòu)不合理 。因此我們推出了多維分析,通過拖拉拽方式就能做。拖拉拽幾年,用戶就又開始抱怨了,天天拖拉拽,開發(fā)效率太低。我們有熟悉 Cognos 的人員,有做數(shù)據(jù)分析的人員,我們遇到的新問題是, 能不能開放一些 Cognos 的接口給分析人員去使用?基于這樣的情況,我們兩個(gè)都做。
在多維分析之上,我們開發(fā)了一些工具,第一個(gè)簡單的拖拉拽, 這個(gè)是仿照 Cognos 做的。后面有單個(gè)模型去創(chuàng)建多個(gè)分析。如果對(duì)這邊有了解的話,用它做報(bào)表的話,Report 打開來,需要同時(shí)打開多個(gè) Report,里面去搭載多個(gè)模型,按照現(xiàn)在的性能,一個(gè)模型下載下來,至少要半分鐘,有的甚至是 1 分鐘,所以說這個(gè)時(shí)候,無論對(duì)機(jī)器的影響,還是電腦本身,相當(dāng)于電腦開多個(gè)瀏覽窗口,對(duì)電腦的壓力都還是有的。所以說做了一個(gè)事情,單個(gè)模型,創(chuàng)建多個(gè)分析,包括用戶自定義維度、參數(shù)和 SQL 之間的轉(zhuǎn)換,在這邊都做了一些開發(fā) 。
用戶往往會(huì)說:我會(huì)寫 SQL,但是不懂你們的模型。對(duì)這種情況,我們做了一個(gè)類似于 SDK 的工具,提示元數(shù)據(jù),把表名、字段名彈出來,用戶寫 SQL,然后驗(yàn)證 SQL 等;怎樣的 SQL 才能跑,是有自己的一些邏輯在里面的,包括自定義一些 UDF,有些時(shí)候直接把 UDF 傳下去,可能傳到 Kylin 里面,也有可能傳到 Spark SQL 里面。有種情況也是,通過原生接口或者是 SQL 接口,或者是其他接口,把數(shù)據(jù)取過來在內(nèi)存里,做二次處理加工,最終再給用戶展現(xiàn)。像我們這個(gè) SQL,不僅基于 Kylin,也會(huì)基于 Spark SQL 或者是 Impala 去執(zhí)行。
怎么能讓我們的多維分析相對(duì)比較平緩?或者說怎么讓那些比較熟悉,或者是更加接受報(bào)表的用戶,能夠接受拖拉拽的這種形式?
我們會(huì)在上面加自定義集,去自定義很多業(yè)務(wù)的場(chǎng)景,比如,對(duì)于我們來講,從業(yè)務(wù)上來說,定義公司不同的業(yè)務(wù)線, 從數(shù)據(jù)層面來講,是有多個(gè)維度,甚至是維度里面不同位置的組合,去來代表這些業(yè)務(wù)場(chǎng)景和業(yè)務(wù)含義。那么這個(gè)時(shí)候如果從報(bào)表上來看,就是反應(yīng)了公司不同業(yè)務(wù)條線的各類數(shù)據(jù)報(bào)表。
今天和大家分享了我們?yōu)槭裁撮_始使用 Kylin,Kylin 帶給我們的價(jià)值,以及圍繞著 Kylin 我們做了哪些開發(fā)集成工作,希望對(duì)大家有所幫助;社區(qū)里有面臨相同問題、挑戰(zhàn)的伙伴也可以跟我們進(jìn)一步交流 。
Q&A
Q: 在使用 Kylin,不管是企業(yè)版還是商業(yè)版的過程中,有朋友碰到報(bào)表經(jīng)常變換的情況,比如說已經(jīng)構(gòu)建好的 Cube,結(jié)果卻發(fā)現(xiàn)指標(biāo)需要變化,或者是維度需要增加,這個(gè)時(shí)候你們是怎么處理的?
A: 如果說真要變化,整個(gè)模型要重構(gòu),這個(gè)是沒辦法的。第一,基于多年 Cognos 的積累,我們整個(gè)模型相對(duì)成熟 。第二,Kylin 本身的能力值得認(rèn)可,我們盡可能的會(huì)把更多的一些數(shù)據(jù)、維度放在模型里,例如把所有商戶代碼全構(gòu)建進(jìn)去,幾百萬、上千萬的商戶數(shù)據(jù)放在一起,怎么查、改,都逃脫不了這個(gè)范圍,所以后面做了自定義數(shù)據(jù)集等 。所以有了 kylin 以后, 我們對(duì)這些業(yè)務(wù)需求就更加有信心, 能夠幫助業(yè)務(wù)人員解決,盡可能的把我們能想象到的場(chǎng)景放進(jìn)去,只要 Kylin 能承擔(dān)得了性能上的壓力,我們都盡量做在里面去,通過二次自定義的方式,去滿足用戶自定義的場(chǎng)景。
Q:總共有多少數(shù)據(jù)量交給 Kylin 處理了?
A: 現(xiàn)在我們一天所有的交易有好幾億,我們還有季度的、年度的,所有的東西都會(huì)用 Kylin 去做。我們用 Kylin 去支撐幾年的明細(xì)交易查詢,總的數(shù)據(jù)量有幾千億了。 怎么樣用 Kylin 支撐幾千億級(jí)的數(shù)據(jù)查詢,我們現(xiàn)在是用 Hive 跑,幾百萬個(gè)出來跑 40 多個(gè)小時(shí),整個(gè)集群全部被吃滿,所以現(xiàn)在這也是我們面臨的挑戰(zhàn),我們也在和 Kyligence 公司討論,千億級(jí)的數(shù)據(jù)怎么樣通過 Kylin 的方式去做,我們計(jì)劃在半個(gè)小時(shí)看看能不能跑出來,他們跟我們說很輕松,目前還在測(cè)試之中。
Q:前面展示的報(bào)表工具是自研的嗎?
A:我們有一個(gè) 5 人團(tuán)隊(duì),基于 Kylin 然后設(shè)計(jì)出來這么一個(gè)報(bào)表工具。
Q:Kylin 做的工作主要是對(duì) Hive 查詢的優(yōu)化工作?
A:Kylin 是先把 Hive 元數(shù)據(jù)庫拉入構(gòu)建成底層的存儲(chǔ)引擎,還有自己存儲(chǔ)的格式。跟 Cognos 的機(jī)制比較像,元數(shù)據(jù)本身是放在數(shù)據(jù)庫里面,或者是放在 Hive 里面,去訪問數(shù)據(jù)庫,然后把數(shù)據(jù)生成物理上的 Cube 文件,對(duì) Cognos 來講,是一些二級(jí)文件,對(duì)于 Kylin 來講,兩種都支持,開源社區(qū)版的話是基于 HBase,把數(shù)據(jù)塞在 HBase 里面。但是整個(gè)數(shù)據(jù)結(jié)構(gòu),跟你自己原始的數(shù)據(jù)結(jié)構(gòu)是不一樣的,是 Kylin 數(shù)據(jù)接口。但是那個(gè)膨脹率你看一下,確實(shí)有點(diǎn)高,看你的數(shù)據(jù)量是否能接受這個(gè)膨脹率。
Q:膨脹率具體指的是什么?
A:比如說你現(xiàn)在有 100 個(gè) G 的數(shù)據(jù),這個(gè)是元數(shù)據(jù),一條一條原始數(shù)據(jù)。但是多維分析是很多個(gè)維度的交叉和組合。那么每一個(gè)維度都有可能作為你的訪問,這個(gè)時(shí)候,理論上從數(shù)據(jù)模型上來講,為了提高性能,要把每一種組合都計(jì)算出來,而且存下來。這個(gè)時(shí)候面臨的組合的量,就不是幾百億或者是怎么樣,那么它的存儲(chǔ)相對(duì)來講肯定比原始要大,但是大多少?開源社區(qū)用 HBase 去做的,商業(yè)版的話,有自己的存儲(chǔ)引擎,而且還有一個(gè)增強(qiáng)的剪枝的功能,去判斷哪些交叉維度是有效,哪些沒有效,所以說在這上面做了一個(gè)處理。其實(shí)說白了,我覺得能量守恒,目的還是空間和時(shí)間,只是空間、時(shí)間能節(jié)約多少的問題。
Q:如果使用 Tableau 軟件,Kylin 是作為 Tableau 的一種數(shù)據(jù)源嗎?
A:對(duì),可以讓 Tableau 把 SQL 發(fā)給 Kylin,Kylin 做數(shù)據(jù)計(jì)算,結(jié)果給到 Tableau。
本文作者:王穎卓
以上就是關(guān)于銀聯(lián)pos機(jī)回訪工作,Apache Kylin 在銀聯(lián)的實(shí)踐的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于銀聯(lián)pos機(jī)回訪工作的知識(shí),希望能夠幫助到大家!
![](/style/images/zhouzong.jpg)