云+社區(qū)聯(lián)合快手 深度解讀五大熱門(mén)大數(shù)據(jù)技術(shù)
原創(chuàng)【51CTO.com原創(chuàng)稿件】數(shù)據(jù)已經(jīng)成為企業(yè)寶貴的資產(chǎn),如何利用數(shù)據(jù)的分析挖掘,從而輔助企業(yè)進(jìn)行商業(yè)決策,成為企業(yè)所關(guān)注的。
8月24日,由云+社區(qū)(騰訊云官方開(kāi)發(fā)者社區(qū))聯(lián)合快手舉辦的《大數(shù)據(jù)技術(shù)實(shí)踐與應(yīng)用》沙龍活動(dòng)成功舉行,沙龍聚焦于大數(shù)據(jù)的技術(shù)實(shí)踐與應(yīng)用,為到場(chǎng)的用戶奉上了一場(chǎng)大數(shù)據(jù)技術(shù)盛宴。來(lái)自騰訊云的專家和快手的工程師重點(diǎn)介紹了Spark、ElasticSearch,yarn、MapReduce、Flink等大數(shù)據(jù)技術(shù)的發(fā)展歷程、架構(gòu)優(yōu)化以及實(shí)踐應(yīng)用。
基于Spark構(gòu)建PB級(jí)別云數(shù)據(jù)倉(cāng)庫(kù)
首位分享的嘉賓是來(lái)自騰訊專家工程師丁曉坤,他從AI與大數(shù)據(jù)的關(guān)系,大數(shù)據(jù)技術(shù)的發(fā)展趨勢(shì),以及基于Spark計(jì)算引擎構(gòu)建云數(shù)倉(cāng)的技術(shù)實(shí)踐三個(gè)方面展開(kāi)進(jìn)行分享。
2006年,Apache社區(qū)的Hadoop項(xiàng)目正式成立,作為三駕馬車的開(kāi)源實(shí)踐,開(kāi)啟了大數(shù)據(jù)時(shí)代;之后的2009年,AWS推出了EMR( Elastic MapReduce)彈性計(jì)算云平臺(tái),開(kāi)啟大數(shù)據(jù)的云計(jì)算時(shí)代;2012年隨著Yarn的孵化,2013年Spark項(xiàng)目正式成立,大數(shù)據(jù)進(jìn)入加速發(fā)展階段;隨著2016年AlphaGo戰(zhàn)勝李世石,2018年Hadoop3.0的到來(lái),AI和大數(shù)據(jù)關(guān)系越來(lái)越緊密,大數(shù)據(jù)也向云化和容器化方向加速進(jìn)化。
那么AI和大數(shù)據(jù)具體是什么關(guān)系呢?丁曉坤解釋道,一、AI離不開(kāi)數(shù)據(jù),人工智能的計(jì)算特別是深度模型,與數(shù)據(jù)的相關(guān)性非常高,數(shù)據(jù)越好模型也會(huì)越準(zhǔn)確。二、在標(biāo)準(zhǔn)的推薦場(chǎng)景中,有環(huán)形迭代的計(jì)算過(guò)程,從數(shù)據(jù)的抽取、準(zhǔn)備,到模型訓(xùn)練、數(shù)據(jù)模型發(fā)布,再到進(jìn)一步抽取數(shù)據(jù),在迭代過(guò)程中進(jìn)行優(yōu)化模型。
而基于以上這兩大關(guān)系,對(duì)AI和大數(shù)據(jù)兩大技術(shù)的融合提出新的需求。首先,數(shù)據(jù)在數(shù)據(jù)處理和AI訓(xùn)練框架之間的交互效率要求越來(lái)越高,就會(huì)產(chǎn)生tf.data、tf.transform等數(shù)據(jù)結(jié)構(gòu),而騰訊推出的Angel和Intel推出的BigDL這些計(jì)算框架可以快速地將Spark計(jì)算框架與機(jī)器模型訓(xùn)練框架結(jié)合的更好,TensorFlowOnSpark也可以快速提高環(huán)形迭代效率。其次,隨著AI的快速發(fā)展,大家對(duì)GPU的要求越來(lái)越高,通過(guò)優(yōu)化GPU與CPU之間任務(wù)隊(duì)列的調(diào)度從而提高效率,而GPU的調(diào)度則可以通過(guò)K8s和Hadoop3.0的發(fā)展也越來(lái)越高效。
大數(shù)據(jù)的發(fā)展離不開(kāi)數(shù)據(jù)倉(cāng)庫(kù)體系。數(shù)據(jù)倉(cāng)庫(kù)從1989年提出后經(jīng)過(guò)了三個(gè)發(fā)展階段,第一個(gè)階段是數(shù)倉(cāng)一體機(jī)時(shí)代,通過(guò)數(shù)據(jù)倉(cāng)庫(kù)一體機(jī)企業(yè)可以進(jìn)行報(bào)表分析、財(cái)務(wù)分析。隨后由于一體機(jī)在數(shù)據(jù)處理和性能上無(wú)法滿足企業(yè)需求,于是出現(xiàn)了分布式MPP數(shù)據(jù)庫(kù),企業(yè)可以進(jìn)行簡(jiǎn)單的模型推測(cè)和預(yù)測(cè)計(jì)算。之后,企業(yè)更加關(guān)注IT成本,因此更多企業(yè)開(kāi)始選擇云原生數(shù)據(jù)倉(cāng)庫(kù)。

SPARKLING 架構(gòu)圖
最后,丁曉坤分享了基于Spark計(jì)算引擎構(gòu)建云數(shù)倉(cāng)的技術(shù)實(shí)踐。為何騰訊云會(huì)選擇Spark來(lái)作為核心計(jì)算的支撐呢?丁曉坤歸納為四大原因,Spark生態(tài)豐富,支持場(chǎng)景比較全面,也是大數(shù)據(jù)領(lǐng)域比較熱門(mén)的開(kāi)源項(xiàng)目;第二,Spark支持Python,SQL,R,Scala, Java 等語(yǔ)言提交計(jì)算任務(wù),比較容易上手;第三,依托開(kāi)源社區(qū),盡可能使用開(kāi)源項(xiàng)目,用戶可以熟知技術(shù)細(xì)節(jié);第四,由于Spark擁有DAG模型、RDD內(nèi)存計(jì)算和更細(xì)粒度的調(diào)度、鎢絲計(jì)劃等,使得性能更加優(yōu)越。
在騰訊云構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)時(shí),也表現(xiàn)出一定的云特性。在彈性伸縮方面,可以支持三種類型的節(jié)點(diǎn):主節(jié)點(diǎn),核心計(jì)算節(jié)點(diǎn)和彈性計(jì)算節(jié)點(diǎn),并且支持核心計(jì)算節(jié)點(diǎn)的橫向擴(kuò)容,支持彈性計(jì)算節(jié)點(diǎn)的橫向擴(kuò)縮容,這樣通過(guò)臨時(shí)的彈性計(jì)算節(jié)點(diǎn)達(dá)到存算的分離,彈性節(jié)點(diǎn)可以隨時(shí)擴(kuò)縮容,快速回收計(jì)算資源從而降低成本。此外,通過(guò)平滑摘除機(jī)制,在所有的容器都執(zhí)行完畢,或執(zhí)行超時(shí)后移除,保證任務(wù)平滑穩(wěn)定的運(yùn)行。第二個(gè)云特性就是虛擬環(huán)境優(yōu)化,增加NO Group層,讀取策略采用 node > node group > rack > off-rack的方式,通過(guò)跨Rack的機(jī)制,滿足云上虛擬環(huán)境的需求。第三是性能方面,可以通過(guò)Parquet將Bloom過(guò)濾器數(shù)據(jù)存儲(chǔ)到列元數(shù)據(jù),執(zhí)行選擇性查詢時(shí)啟用行組過(guò)濾。
對(duì)于Spark來(lái)說(shuō),應(yīng)用場(chǎng)景中更多的問(wèn)題就是Shuffle的問(wèn)題,Shuffle的效率會(huì)影響到數(shù)據(jù)計(jì)算性能的延遲和效率,隨著Spark的發(fā)展,通過(guò)性能優(yōu)越的內(nèi)存存儲(chǔ)技術(shù),提升Shuffle效率,從而提升Spark的效率。
未來(lái),騰訊云構(gòu)建的基于Spark的數(shù)據(jù)倉(cāng)庫(kù)還會(huì)支持Update和delete機(jī)制,以及增加對(duì)Serverless -K8S的支持,ACID的支持。
騰訊云ElasticSearch產(chǎn)品架構(gòu)與實(shí)踐
ElasticSearch在2010年左右出現(xiàn),是目前搜索領(lǐng)域知名度較高的產(chǎn)品。騰訊云大數(shù)據(jù)技術(shù)總監(jiān)鄒建平分享了騰訊云ElasticSearch產(chǎn)品在云原生架構(gòu)設(shè)計(jì)、高可用、自動(dòng)化運(yùn)維等方面的思考,以及如何利用ElasticSearch來(lái)實(shí)現(xiàn)企業(yè)智能化轉(zhuǎn)型。
首先,鄒建平介紹了ElasticSearch存儲(chǔ)分析的平臺(tái)的特點(diǎn),支持全文檢索的搜索引擎,同時(shí)ElasticSearch也是NoSQL數(shù)據(jù)庫(kù),支持?jǐn)?shù)據(jù)做保存和讀取,支持OLAP數(shù)據(jù)分析。此外,ElasticSearch是基于Java開(kāi)發(fā)的,可以基于Lucene搜索庫(kù)通過(guò)倒排索引來(lái)直接通過(guò)關(guān)鍵字命中文檔,快速實(shí)現(xiàn)用戶檢索的請(qǐng)求。此外,通過(guò)在ElasticSearch外層開(kāi)發(fā)RESTful接口,方便用戶平臺(tái)進(jìn)行集群管理。而ElasticSearch產(chǎn)品成功的關(guān)鍵在于ELK Stack,擁有統(tǒng)一的生態(tài),目前開(kāi)發(fā)者超過(guò)10萬(wàn)人。
在進(jìn)入到移動(dòng)互聯(lián)網(wǎng)時(shí)代,APP爆炸式增長(zhǎng),但APP中的數(shù)據(jù)并不能像網(wǎng)頁(yè)一樣很容易被爬蟲(chóng)到,這對(duì)ElasticSearch搜索引擎框架來(lái)說(shuō),帶來(lái)了新的發(fā)展機(jī)遇。ElasticSearch數(shù)據(jù)都存在存儲(chǔ)引擎中,用戶對(duì)這些數(shù)據(jù)進(jìn)行新的價(jià)值挖掘時(shí),對(duì)ElasticSearch提出了新的要求,這也是ElasticSearch從搜索逐漸向分析演進(jìn)的原因。
從搜索到分析的演進(jìn)過(guò)程中,共經(jīng)歷了五次變化。2010年,ElasticSearch剛推出時(shí),主要支持搜索場(chǎng)景,使用倒排索引,在ElasticSearch中加入FieldData,將term到docid的映射逆轉(zhuǎn),變成docid到term。但是在檢索構(gòu)建過(guò)程中,對(duì)于數(shù)據(jù)量較大的檢索是非常災(zāi)難性的,加載速度較慢。因此到了2012年提出了DocValus,是通過(guò)Docld到Value的列式存儲(chǔ)。FieldData是在檢索時(shí)實(shí)時(shí)構(gòu)建,而DocValues是在索引時(shí)構(gòu)建的,因此更容易壓縮,此外,DocValues是寫(xiě)在磁盤(pán)中而不是內(nèi)存,因此可以利用文件系統(tǒng)緩存來(lái)加速訪問(wèn)。對(duì)比FieldData,DocValues的加速速度快2個(gè)數(shù)量級(jí),并且檢索速度性能保持一致,緩存親和度更好。2014年以后,分析的復(fù)雜度越來(lái)越多,因此ElasticSearch做了去除框架的改進(jìn),后來(lái)提出的Aggregation可以支持嵌套聚合,Pipeline Aggregation能夠?qū)酆虾蟮慕Y(jié)果集再進(jìn)行加工計(jì)算,例如求最大值、排序等等操作。2016年ElasticSearch算法進(jìn)行優(yōu)化,其中涉及全局序數(shù)、DocValues、BKD tree等。2018年提出的Rollup,可以提升查詢的效率,降低存儲(chǔ)指標(biāo)。此外,ElasticSearch也支持SQL,支持多種訪問(wèn)方式,例如CLI、Restful、Kibana Canvas、JDBC、ODBC等。
ElasticSearch增強(qiáng)了分析能力以外,還能做什么呢?首先是商業(yè)智能分析,通過(guò)各種手段對(duì)數(shù)據(jù)進(jìn)行整合、統(tǒng)計(jì)和結(jié)果輸出。第二是日志、指標(biāo)和APM這也是ElasticSearch主推的功能之一,在業(yè)務(wù)日志、指標(biāo)都保存在存儲(chǔ)平臺(tái)后,將業(yè)務(wù)邏輯進(jìn)行串聯(lián)實(shí)現(xiàn)APM,這樣就可以打通前端到后端的所有數(shù)據(jù),當(dāng)應(yīng)用出現(xiàn)問(wèn)題后,可以快速的分析出問(wèn)題所在。第三是基于機(jī)器學(xué)習(xí)的安全分析,能對(duì)日志、指標(biāo)進(jìn)行異常檢測(cè)。
從2010年到如今,ElasticSearch從最初只用在搜索領(lǐng)域,到如今已經(jīng)是分析領(lǐng)域的熱門(mén)技術(shù),ElasticSearch發(fā)展的過(guò)程可以總結(jié)為“高”、“精”、“尖”。“高”指的是ElasticSearch在分布式計(jì)算方面有很多的設(shè)計(jì),例如alias、index、shard、segment?!熬敝傅氖荅lasticSearch擁有多種高效的索引,包括倒排表、Docvalues、BKD tree、Global Ordinals等等?!凹狻敝傅氖荓SM存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)不可變,對(duì)緩存更有親和度。
第二大部分鄒建平重點(diǎn)介紹了騰訊云ElasticSearch架構(gòu)的優(yōu)化。

騰訊云ElasticSearch產(chǎn)品架構(gòu)圖
用戶使用騰訊云ElasticSearch產(chǎn)品時(shí),經(jīng)常會(huì)有些擔(dān)心,數(shù)據(jù)是安全,可用性是否高,沒(méi)有專門(mén)的人員出了問(wèn)題怎么辦。在數(shù)據(jù)安全方面,騰訊云ElasticSearch支持高級(jí)商業(yè)特性( X-Pack插件)數(shù)據(jù)權(quán)限管理,支持角色管理,集群、索引、文檔、字段各個(gè)級(jí)別的權(quán)限控制,外網(wǎng)HTTPS、黑白名單,客戶端、集群內(nèi)節(jié)點(diǎn)SSL傳輸加密;在CAM方面,設(shè)置了騰訊云賬號(hào)權(quán)限管理;在Audit方面,加入了集群操作審計(jì)日志和XPACK安全審計(jì)日志。在數(shù)據(jù)可靠性方面,在VPC中可以做到完全邏輯隔離,多維度網(wǎng)絡(luò)安全管控;在Backup方面,支持?jǐn)?shù)據(jù)定時(shí)備份和COS低成本備份;在Recycle-Bin,設(shè)置垃圾回收站,避免數(shù)據(jù)因人為原因丟失。在高可用方面,騰訊云進(jìn)行了三方面的設(shè)置,實(shí)現(xiàn)跨可用區(qū)容災(zāi)?;贓lasticSearch數(shù)據(jù)分布感知框架實(shí)現(xiàn),主從副本放置到不同機(jī)房;三個(gè)專用主節(jié)點(diǎn)分布在三個(gè)可用區(qū),避免無(wú)法選主;必選專用主節(jié)點(diǎn),避免腦裂。此外,通過(guò)調(diào)整分配算法,使得在不同節(jié)點(diǎn)之間打散,避免熱點(diǎn)不均的情況發(fā)生,從而達(dá)到分片均衡優(yōu)化。在高可運(yùn)維方面,騰訊云也做了很多工作,通過(guò)自動(dòng)監(jiān)控告警系統(tǒng)來(lái)支撐ElasticSearch日常運(yùn)維。
最后,分享了騰訊云ES產(chǎn)品未來(lái)發(fā)展的三個(gè)方向,第一,在水平方面,是更好的將上下游產(chǎn)品聯(lián)動(dòng)起來(lái),例如如何做好各種數(shù)據(jù)導(dǎo)入,和hadoop產(chǎn)品、對(duì)象存儲(chǔ)產(chǎn)品的數(shù)據(jù)聯(lián)動(dòng)做得更加易用;第二,在垂直方面,加強(qiáng)將ES里的解決方案例如APM、安全分析、垂直搜索等功能更好落地到云;第三,在矩陣方面,我們會(huì)將騰訊的一些能力融入到ES產(chǎn)品中,例如如何將微信通知、或者我們的一些NLP插件,和ES結(jié)合起來(lái)。

Elasticsearch近期新功能
yarn在快手應(yīng)用實(shí)踐與技術(shù)演進(jìn)之路
來(lái)自快手?jǐn)?shù)據(jù)架構(gòu)工程師房孝敬,介紹yarn系統(tǒng)在快手的應(yīng)用實(shí)踐,遇到的問(wèn)題以及相應(yīng)的技術(shù)演進(jìn)過(guò)程。
Hadoop儼然已是業(yè)界認(rèn)可、成熟的數(shù)據(jù)存儲(chǔ)、處理框架。目前,Hadoop的發(fā)展已經(jīng)從1.0走到了2.0版本。在Hadoop v2.0的版本中引入Yarn,主要是解決了Hadoop v1.0中的擴(kuò)展性問(wèn)題。yarn主要分成三個(gè)模塊,一個(gè)是管理集群資源的RM,一個(gè)是管理機(jī)器資源情況的NM,還有管理APP資源和內(nèi)部邏輯的AM。
RM模塊內(nèi)部架構(gòu)分為兩部分,一個(gè)是管理集群中節(jié)點(diǎn)和APP的狀態(tài),分別有ResourceTrackerService和ApplicationMasterService進(jìn)行管理。服務(wù)和RM通信后將消息送到RM內(nèi)部,生成相應(yīng)的事件,通過(guò)事件處理機(jī)制驅(qū)動(dòng)APP和節(jié)點(diǎn)狀態(tài)機(jī)的更新,最后達(dá)成期望的狀態(tài)。yarn另一個(gè)主要功能是調(diào)度,早期yarn在NM心跳處理邏輯中觸發(fā)調(diào)度,因?yàn)檎{(diào)度比較耗時(shí),會(huì)與其他事件處理過(guò)程競(jìng)爭(zhēng)資源,導(dǎo)致雙方互相影響,之后社區(qū)進(jìn)行優(yōu)化,將調(diào)度邏輯拆離到單獨(dú)的線程,但還是存在很大問(wèn)題,后面會(huì)介紹具體的優(yōu)化。
快手在yarn方面的技術(shù)實(shí)踐主要分成四個(gè)方面:1、集群穩(wěn)定性方面的改動(dòng)。2、對(duì)yarn的搶占機(jī)制做了優(yōu)化。3、yarn的調(diào)度性能做提升。4、計(jì)算集群小IO優(yōu)化。
集群規(guī)模變大后,節(jié)點(diǎn)變多,APP數(shù)量增多,導(dǎo)致事件處理壓力變大,調(diào)度壓力增大,機(jī)器故障變多??焓謴腞M優(yōu)化、避免單點(diǎn)問(wèn)題兩方面進(jìn)行穩(wěn)定性改進(jìn)。
在RM優(yōu)化方面,快手曾經(jīng)升級(jí)集群導(dǎo)致RM掛掉,通過(guò)對(duì)冗余事件進(jìn)行優(yōu)化,并且開(kāi)發(fā)NM慢啟動(dòng)策略,最終降低RM事件處理壓力,升級(jí)對(duì)RM的影響也就降低了。HDFS是yarn底層的設(shè)施,HDFS的卡頓會(huì)導(dǎo)致RM事件處理邏輯卡住,通過(guò)優(yōu)化事件處理邏輯中HDFS、DNS等IO操作,提升事件處理邏輯的穩(wěn)定性。優(yōu)化完后,發(fā)現(xiàn)事件處理占用的CPU較多,為了避免事件處理邏輯成為集群性能瓶頸,把NM事件處理從主事件處理流程中剝離到單獨(dú)的線程,提升了整個(gè)事件處理的速度。
在特定場(chǎng)景下,會(huì)出現(xiàn)奇怪的磁盤(pán)問(wèn)題,比如磁盤(pán)是好的但是某個(gè)目錄是壞的,這種問(wèn)題在現(xiàn)有機(jī)制下很難發(fā)現(xiàn),導(dǎo)致特定作業(yè)失敗??焓植捎肗M磁盤(pán)黑名單,通過(guò)task失敗信息進(jìn)行規(guī)則匹配,發(fā)現(xiàn)磁盤(pán)問(wèn)題,將有問(wèn)題的磁盤(pán)放在黑名單中,不再向這個(gè)磁盤(pán)調(diào)度作業(yè)。yarn的一大問(wèn)題是,一臺(tái)機(jī)器有問(wèn)題調(diào)度失敗,會(huì)造成雪崩效應(yīng),造成作業(yè)大量失敗,快手通過(guò)集群層面黑名單機(jī)制解決這個(gè)問(wèn)題。磁盤(pán)滿、fd泄露,線程泄露也是會(huì)造成故障的,快手通過(guò)對(duì)CPU,mem,磁盤(pán)文件大小,fd數(shù)目,線程數(shù)目的控制,增強(qiáng)底層隔離,避免相互影響。集群中的問(wèn)題機(jī)器較多,在集群規(guī)模變大后,如何發(fā)現(xiàn)問(wèn)題機(jī)器是個(gè)難題,快手通過(guò)Container失敗率高機(jī)器check、物理指標(biāo)異常topN check和Job失敗信息匯總?cè)齻€(gè)方法來(lái)快速發(fā)現(xiàn)問(wèn)題機(jī)器。
yarn一個(gè)主要的功能就是調(diào)度整個(gè)集群的資源。yarn的調(diào)度模型是比較復(fù)雜的,為了保證調(diào)度公平性,需要對(duì)隊(duì)列和app進(jìn)行排序??焓值某跏妓悸肥菧p少排序時(shí)間,縮小排序規(guī)模,優(yōu)化排序算法。通過(guò)優(yōu)化后,能夠支撐5000臺(tái)機(jī)器的規(guī)模。
但是優(yōu)化后還是存在問(wèn)題,擴(kuò)展性不足,只能利用一個(gè)CPU;缺少全局節(jié)點(diǎn)信息,調(diào)度策略難以全局決策。最終,快手重構(gòu)了調(diào)度架構(gòu)和邏輯,開(kāi)發(fā)了Kwai scheduler,建立資源分配的上帝視角,預(yù)先給隊(duì)列分配資源,并發(fā)批量調(diào)度。先選APP再選節(jié)點(diǎn),調(diào)度策略方便擴(kuò)充,最終線上的調(diào)度速度可以達(dá)到每秒鐘4萬(wàn)多。
未來(lái),快手將在三個(gè)方面進(jìn)行建設(shè),資源分級(jí)保障建設(shè)、多集群建設(shè)和超配在離線混合部署。目前,快手yarn集群規(guī)模較大,使用資源非常多,通過(guò)作業(yè)畫(huà)像和分級(jí)保障體系把資源傾斜給更重要的作業(yè)。此外,單集群容量有限,快手還會(huì)考慮多集群建設(shè)。第三,快手的yarn主要托管是離線計(jì)算的資源,公司很多非YARN管理的空閑資源沒(méi)有使用,將合適的任務(wù)調(diào)度到空閑的機(jī)器上,也是快手未來(lái)探索的方向。
云端大數(shù)據(jù)產(chǎn)品架構(gòu)及實(shí)踐
彈性MapReduce是騰訊云構(gòu)架于云端海量存儲(chǔ)、計(jì)算基礎(chǔ)設(shè)施之上的云端Hadoop 框架,用戶可在十分鐘獲得一個(gè)安全、低成本、高可靠、高彈性擴(kuò)展、架構(gòu)可持續(xù)演進(jìn)的專屬大數(shù)據(jù)集群。騰訊云高級(jí)工程師喬超分享了騰訊云大數(shù)據(jù)EMR產(chǎn)品及其價(jià)值,同時(shí)根據(jù)實(shí)際經(jīng)驗(yàn)介紹了大數(shù)據(jù)平臺(tái)實(shí)踐。

如今,各大企業(yè)都意識(shí)到數(shù)據(jù)的重要性,如何挖掘數(shù)據(jù)價(jià)值,為企業(yè)做出決策,變得尤為重要。然而,在企業(yè)級(jí)大數(shù)據(jù)架構(gòu)中,主要在三大領(lǐng)域存在挑戰(zhàn),企業(yè)級(jí)數(shù)倉(cāng)與數(shù)據(jù)集市構(gòu)建、流式數(shù)據(jù)分析和海量數(shù)據(jù)檢索與分析,而各大社區(qū)也都通過(guò)開(kāi)源組件形成了不同的解決方案。但是構(gòu)建大數(shù)據(jù)平臺(tái)的技術(shù)復(fù)雜性高,構(gòu)建周期長(zhǎng),運(yùn)維基礎(chǔ)設(shè)施匱乏,技術(shù)抗風(fēng)險(xiǎn)能力弱,因此,大數(shù)據(jù)開(kāi)源技術(shù)能一定程度滿足研發(fā)工程師的顯性技術(shù)需求,但無(wú)法滿足企業(yè)潛在的深層次隱形需求。
為了幫助企業(yè)解決以上挑戰(zhàn)問(wèn)題,騰訊云從技術(shù)組件到產(chǎn)品服務(wù),通過(guò)完善大數(shù)據(jù)基礎(chǔ)設(shè)施幫助企業(yè)客戶高效應(yīng)對(duì)從初創(chuàng)發(fā)展到成熟過(guò)程中的大數(shù)據(jù)技術(shù)性挑戰(zhàn)。騰訊云將企業(yè)劃分為初創(chuàng)型和成熟型,對(duì)于初創(chuàng)型企業(yè),騰訊云提供封裝好的開(kāi)箱即用的產(chǎn)品,包括計(jì)算服務(wù)、BI分析組件,云數(shù)倉(cāng)、云搜等能力。而對(duì)于成熟型企業(yè),騰訊云幫助其解決偏運(yùn)維層面的問(wèn)題,結(jié)合用戶自己的特色,更加貼近用戶的業(yè)務(wù)應(yīng)用場(chǎng)景,幫助用戶建立自己的大數(shù)據(jù)解決方案,騰訊云在此方面則提供彈性MapReduce和ES。
喬超介紹了騰訊云云端大數(shù)據(jù)基礎(chǔ)設(shè)施的優(yōu)勢(shì):1、海量計(jì)算資源的優(yōu)勢(shì),騰訊云擁有全球25個(gè)地理區(qū)域、全球51個(gè)可用區(qū)、分鐘級(jí)計(jì)算存儲(chǔ)資源實(shí)時(shí)調(diào)度,解決用戶就近計(jì)算的場(chǎng)景。2、開(kāi)放性和連續(xù)。通過(guò)與開(kāi)源基金及公司協(xié)作,開(kāi)源協(xié)同的持續(xù)性研發(fā)資源投入。3、大數(shù)據(jù)業(yè)務(wù)場(chǎng)景化。騰訊云提供騰訊系金融、社交網(wǎng)站、游戲、視頻、新聞資訊、電商等領(lǐng)域大數(shù)據(jù)場(chǎng)景應(yīng)用,同時(shí)也包括用戶畫(huà)像、精準(zhǔn)推薦、用戶行為分析、金融風(fēng)控等場(chǎng)景應(yīng)用。4、持續(xù)性服務(wù)。騰訊云提供線上技術(shù)交流、培訓(xùn),線下技術(shù)沙龍交流平臺(tái)以及持續(xù)性產(chǎn)品/服務(wù)支撐。
彈性MapReduce是騰訊云構(gòu)架于云端海量存儲(chǔ)、計(jì)算基礎(chǔ)設(shè)施之上的云端Hadoop 框架,用戶可在十分鐘獲得一個(gè)安全、低成本、高可靠、高彈性擴(kuò)展、架構(gòu)可持續(xù)演進(jìn)的專屬大數(shù)據(jù)集群。該產(chǎn)品幫助企業(yè)在提升研發(fā)效率、運(yùn)維效率、降低硬件成本的同時(shí),輕松應(yīng)對(duì)TB、PB級(jí)的海量數(shù)據(jù)的價(jià)值挖掘挑戰(zhàn)。

彈性MapReduce可以靈活應(yīng)對(duì)多業(yè)務(wù)場(chǎng)景,包括在線業(yè)務(wù)、數(shù)據(jù)倉(cāng)庫(kù)、實(shí)時(shí)流式計(jì)算,機(jī)器學(xué)習(xí),有效支持企業(yè)大數(shù)據(jù)架構(gòu)可持續(xù)演進(jìn)?;谠贫说腍adoop框架產(chǎn)品將有效提升企業(yè)對(duì)大數(shù)據(jù)基礎(chǔ)設(shè)施的快速構(gòu)建、高效運(yùn)維及應(yīng)用的綜合性大數(shù)據(jù)能力。騰訊云彈性MapReduce產(chǎn)品包括四大優(yōu)勢(shì):10分鐘構(gòu)建上百節(jié)點(diǎn)大數(shù)據(jù)集群,支持控制臺(tái)/程序API靈活構(gòu)建;十分鐘節(jié)點(diǎn)級(jí)橫向擴(kuò)展(數(shù)節(jié)點(diǎn)擴(kuò)展至數(shù)百節(jié)點(diǎn)),十分鐘集群級(jí)橫向擴(kuò)展(單一集群擴(kuò)展至數(shù)個(gè)異構(gòu)集群);百余監(jiān)控指標(biāo)覆蓋(服務(wù)器級(jí)、服務(wù)級(jí)),異常事件秒級(jí)觸達(dá),Ddos/VPC安全加固、 Kerberos節(jié)點(diǎn)級(jí)服務(wù)信任;云端多源數(shù)據(jù)支持(云數(shù)據(jù)庫(kù)、ES、Ckafka、流計(jì)算、Snova云數(shù)倉(cāng)),云端可視化BI工具無(wú)縫對(duì)接。
在沙龍現(xiàn)場(chǎng),喬超現(xiàn)場(chǎng)演示了通過(guò)騰訊云快速構(gòu)建云端大數(shù)據(jù)分析平臺(tái),只需要四步,首先勾選EMR組件,然后配置集群規(guī)格,創(chuàng)建集群,最后快速擴(kuò)縮容。
最后,喬超介紹了騰訊云彈性MapReduce運(yùn)營(yíng)實(shí)踐全方位規(guī)劃,包括初期規(guī)劃、集群構(gòu)建、參數(shù)優(yōu)化、線上運(yùn)營(yíng)四個(gè)階段。在初期規(guī)劃方面,企業(yè)需要進(jìn)行資源預(yù)估,同時(shí)騰訊云也會(huì)提供建議,然后企業(yè)進(jìn)行機(jī)型配置核定,包括機(jī)型、核數(shù)、內(nèi)存、磁盤(pán)等方面。在集群構(gòu)建階段,通過(guò)大數(shù)據(jù)技術(shù)棧,提供從底層基礎(chǔ)架構(gòu)到上層應(yīng)用全方位的技術(shù)能力。而集群部署模式分為混合部署和獨(dú)立部署兩種,初期階段可以混合部署,隨著業(yè)務(wù)規(guī)模及企業(yè)發(fā)展,逐步走向獨(dú)立部署模式。經(jīng)過(guò)EMR團(tuán)隊(duì)多年的經(jīng)驗(yàn)積累,在參數(shù)優(yōu)化這塊他們也給出了一些建議,包括通過(guò)心跳設(shè)置和元數(shù)據(jù)管理對(duì)HDFS進(jìn)行優(yōu)化,通過(guò)ResourceManager堆大小、TimeLineServer和AMShare三個(gè)方面對(duì)yarn進(jìn)行優(yōu)化,通過(guò)FetchTask和計(jì)算引擎對(duì)Hive進(jìn)行優(yōu)化等。
騰訊基于Flink構(gòu)建實(shí)時(shí)流計(jì)算平臺(tái)的技術(shù)實(shí)踐
Flink是由Apache軟件基金會(huì)開(kāi)發(fā)的開(kāi)源流處理框架,其核心是用Java和Scala編寫(xiě)的分布式流數(shù)據(jù)流引擎。而Flink也是大數(shù)據(jù)處理領(lǐng)域最近冉冉升起的一顆新星。騰訊高級(jí)工程師楊華介紹了騰訊實(shí)時(shí)流計(jì)算技術(shù)的演進(jìn)過(guò)程以及對(duì)Apache Flink所進(jìn)行的優(yōu)化與擴(kuò)展。
Flink在騰訊的發(fā)展要追溯到2017年。2017年上半年,騰訊對(duì)Flink框架進(jìn)行調(diào)研,包括性能對(duì)比測(cè)試,評(píng)估關(guān)鍵可用性等現(xiàn)網(wǎng)關(guān)鍵指標(biāo)。到了2017年下半年,騰訊內(nèi)部進(jìn)行特性的定制開(kāi)發(fā)與性能優(yōu)化,相關(guān)業(yè)務(wù)的灰度測(cè)試、上線。2018年上半年,騰訊打造Oceanus實(shí)時(shí)流計(jì)算平臺(tái),覆蓋公用云、專有云場(chǎng)景,內(nèi)部業(yè)務(wù)遷移與試運(yùn)行。2018年下半年,Oceanus公有云流計(jì)算產(chǎn)品正式上線公測(cè),騰訊其他BG流計(jì)算業(yè)務(wù)與大數(shù)據(jù)套件整合。到了今年上半年,騰訊上線在線機(jī)器學(xué)習(xí)業(yè)務(wù)、秒級(jí)監(jiān)控等服務(wù),打造場(chǎng)景化的業(yè)務(wù)支撐能力,支持廣告、推薦業(yè)務(wù)。雖然騰訊研發(fā)Flink只有2年半的時(shí)間,但是目前騰訊的Flink支持集群總核數(shù)達(dá)到34萬(wàn),峰值算力達(dá)到每秒2.1億,日均處理消息量20萬(wàn)億,日均消息規(guī)模是PB級(jí)別。
騰訊對(duì)Flink進(jìn)行了四方面的優(yōu)化。由于Flink的Web UI不利于定位新網(wǎng)的問(wèn)題,因此在Flink1.6版本時(shí),騰訊對(duì)web UI進(jìn)行重構(gòu)。第二,騰訊對(duì)JobManager Failover進(jìn)行優(yōu)化。通過(guò)Standalone模式和宿主模式,騰訊云對(duì)Queryable state進(jìn)行了優(yōu)化。最后,騰訊對(duì)Increment Window進(jìn)行改進(jìn),對(duì)Flink原生窗口進(jìn)行增強(qiáng)。
Apache Hudi是今年上半年剛剛加入Apache孵化器進(jìn)行孵化的項(xiàng)目,是Uber于2016年在內(nèi)部環(huán)境中使用的框架,用于大規(guī)模數(shù)據(jù)集。通過(guò)Upsert和Incremental pull兩種方式,Hudi可以在Hadoop重新分布式文件系統(tǒng)數(shù)據(jù)集上進(jìn)行集中。 Hudi可以在延遲和成本的維度上,在單個(gè)的物理數(shù)據(jù)集上提供三個(gè)不同的邏輯視圖:一是讀優(yōu)化視圖,能夠指向常規(guī)的Hive表進(jìn)行查詢;二是增量視圖,能夠捕獲數(shù)據(jù)集的變更流供給下游的Job/ETL,允許增量拉取;三是準(zhǔn)實(shí)時(shí)視圖,在準(zhǔn)實(shí)時(shí)數(shù)據(jù)上進(jìn)行查詢,同時(shí)聯(lián)合Apache Parquet(列) & Avro(行)的數(shù)據(jù)。而Flink和Hudi進(jìn)行整合,可以提升分析過(guò)程的效率。
騰訊實(shí)時(shí)計(jì)算團(tuán)隊(duì)對(duì)社區(qū)版的Flink進(jìn)行了深度的優(yōu)化,并在此之上構(gòu)建了一個(gè)集開(kāi)發(fā)、測(cè)試、部署和運(yùn)維于一體的一站式可視化實(shí)時(shí)計(jì)算平臺(tái)——Oceanus。騰訊云流計(jì)算Oceanus是位于云端的流式數(shù)據(jù)匯聚和計(jì)算服務(wù),用戶只需幾分鐘就可輕松構(gòu)建流計(jì)算應(yīng)用,而無(wú)須關(guān)注基礎(chǔ)設(shè)施的運(yùn)維,并能便捷對(duì)接豐富的云上數(shù)據(jù)源。它可以幫助企業(yè)構(gòu)建多樣化的流式數(shù)據(jù)處理能力,輕松應(yīng)對(duì)海量數(shù)據(jù)實(shí)時(shí)處理和分析決策的挑戰(zhàn)。

Oceanus平臺(tái)整體架構(gòu)
Oceanus平臺(tái)特點(diǎn):1、實(shí)時(shí)計(jì)算;2、完全托管;3、超高彈性,支持彈性擴(kuò)縮容;4、簡(jiǎn)易SQL模式;5、支持UDX/自定義程序,方便大家去簡(jiǎn)化開(kāi)發(fā)邏輯的成本;6、豐富的云端生態(tài),提供一些生態(tài)的產(chǎn)品,包括數(shù)據(jù)采集等服務(wù)。
Oceanus擁有豐富的流計(jì)算應(yīng)用場(chǎng)景,有效支持企業(yè)的實(shí)時(shí)計(jì)算需要和提升決策分析水平。典型的應(yīng)用場(chǎng)景包括:1、點(diǎn)擊流分析,可以分析用戶在Oceanus進(jìn)行操作的行為,通過(guò)后臺(tái)相應(yīng)分析為商業(yè)決策或者廣告投放提供支撐;2、金融實(shí)時(shí)風(fēng)控,欺詐的行為監(jiān)測(cè);3、物聯(lián)網(wǎng)IoT監(jiān)控;4、電商精準(zhǔn)推薦。
Oceanus覆蓋作業(yè)的生命周期,包括開(kāi)發(fā)、測(cè)試、部署、運(yùn)維,用戶只需要關(guān)注它的應(yīng)用邏輯的實(shí)踐。目前,Oceanus應(yīng)用建構(gòu)方式包括三種模式:1、畫(huà)布的形式來(lái)構(gòu)建應(yīng)用,騰訊將Flink做成相應(yīng)的組件放在Oceanus的平臺(tái)上,用戶在使用的時(shí)候只需要在具體的算力進(jìn)行相應(yīng)的編排即可;2、標(biāo)準(zhǔn)SQL的方式,支持SQL語(yǔ)法可以快速高效的創(chuàng)建應(yīng)用;3、支持Datastream API和dataset API,可高度定制特殊的業(yè)務(wù)邏輯。
最后,楊華介紹了Oceanus應(yīng)用提交步驟,首先讓用戶配置相應(yīng)的元數(shù)據(jù),包括消費(fèi)信息、數(shù)據(jù)格式,然后創(chuàng)建DAG,最后再經(jīng)過(guò)編譯提交。
通過(guò)半天的沙龍活動(dòng),到場(chǎng)的用戶紛紛表示收獲滿滿,不但對(duì)大數(shù)據(jù)相關(guān)技術(shù)有了深入的了解,還對(duì)騰訊云在大數(shù)據(jù)方面所做的支持和優(yōu)化給予了肯定,期待未來(lái)更多的技術(shù)內(nèi)容分享。
云+社區(qū)技術(shù)沙龍是騰訊云官方開(kāi)發(fā)者社區(qū)舉辦的沙龍活動(dòng),希望通過(guò)分享技術(shù)讓更多開(kāi)發(fā)者學(xué)習(xí)和交流,成為騰訊云連接開(kāi)發(fā)者的平臺(tái),共同打造技術(shù)影響力。
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】