大數(shù)據(jù)技術(shù)白皮書(shū)_第1頁(yè)
大數(shù)據(jù)技術(shù)白皮書(shū)_第2頁(yè)
大數(shù)據(jù)技術(shù)白皮書(shū)_第3頁(yè)
大數(shù)據(jù)技術(shù)白皮書(shū)_第4頁(yè)
大數(shù)據(jù)技術(shù)白皮書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩107頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

京東大數(shù)據(jù)技術(shù)白皮書(shū)前言大數(shù)據(jù)概念近年來(lái)受到高度關(guān)注,大數(shù)據(jù)在各個(gè)行業(yè)的應(yīng)用及其帶來(lái)的影響也引起越來(lái)越多的討論。大數(shù)據(jù)正在從單純的技術(shù)概念向?qū)嶋H部署應(yīng)用轉(zhuǎn)變;從少數(shù)領(lǐng)域向眾多領(lǐng)域滲透;從企業(yè)內(nèi)部向各產(chǎn)業(yè)與公共服務(wù)方向擴(kuò)展。目前,無(wú)論國(guó)內(nèi)還是國(guó)外,大數(shù)據(jù)技術(shù)都在經(jīng)歷前所未有的快速演變,以滿足各種應(yīng)用的需求。我國(guó)已將大數(shù)據(jù)發(fā)展確定為國(guó)家戰(zhàn)略,強(qiáng)調(diào)要瞄準(zhǔn)世界科技前沿,集中優(yōu)勢(shì)資源突破大數(shù)據(jù)核心技術(shù),加快構(gòu)建自主可控的大數(shù)據(jù)產(chǎn)業(yè)鏈、價(jià)值鏈和生態(tài)系統(tǒng)。大數(shù)據(jù)產(chǎn)業(yè)在國(guó)內(nèi)發(fā)展得如火如荼,據(jù)統(tǒng)計(jì),2016年大數(shù)據(jù)產(chǎn)業(yè)規(guī)模達(dá)14500億元,2017年達(dá)19570億元,到2020年將達(dá)到5萬(wàn)億元。大數(shù)據(jù)技術(shù)已經(jīng)在如電子商務(wù)、政務(wù)、民生、金融、工業(yè)、醫(yī)療等多個(gè)領(lǐng)域中廣泛應(yīng)用。從國(guó)內(nèi)的大數(shù)據(jù)技術(shù)和行業(yè)應(yīng)用發(fā)展來(lái)看,大數(shù)據(jù)技術(shù)的基礎(chǔ)架構(gòu)技術(shù)已日趨成熟,大數(shù)據(jù)領(lǐng)域由技術(shù)創(chuàng)新驅(qū)動(dòng)轉(zhuǎn)向應(yīng)用創(chuàng)新驅(qū)動(dòng)的趨勢(shì)開(kāi)始顯現(xiàn),但更多的傳統(tǒng)企業(yè)在如何建設(shè)大數(shù)據(jù)平臺(tái),如何利用大數(shù)據(jù)來(lái)驅(qū)動(dòng)企業(yè)業(yè)務(wù)發(fā)展上仍然缺乏經(jīng)驗(yàn),這在一定程度上制約了大數(shù)據(jù)技術(shù)的大規(guī)模產(chǎn)業(yè)應(yīng)用。京東擁有全渠道零售和端到端的高質(zhì)量大數(shù)據(jù),包含了用戶的瀏覽和消費(fèi)行為、商品制造和銷售、物流倉(cāng)儲(chǔ)配送以及客服與~5~京東大數(shù)據(jù)技術(shù)白皮書(shū)售后等豐富完整的信息。同時(shí),京東業(yè)務(wù)中包含有大量豐富的大數(shù)據(jù)應(yīng)用場(chǎng)景,是大數(shù)據(jù)實(shí)踐的最佳場(chǎng)所。早在2010年,京東集團(tuán)就啟動(dòng)了大數(shù)據(jù)領(lǐng)域的研發(fā)和應(yīng)用探索工作,經(jīng)過(guò)八年來(lái)的持續(xù)投入,京東大數(shù)據(jù)平臺(tái)無(wú)論從規(guī)模、技術(shù)先進(jìn)性,還是體系的完整性等方面均已達(dá)到國(guó)內(nèi)一流水平。作為支撐公司數(shù)據(jù)運(yùn)營(yíng)的重要陣地,目前已擁有集群規(guī)模40000+服務(wù)器,數(shù)據(jù)規(guī)模達(dá)800PB+,每日的JOB數(shù)100萬(wàn)+,業(yè)務(wù)表900萬(wàn)+,每日的離線數(shù)據(jù)日處理量30PB+,單集群規(guī)模達(dá)到7000+臺(tái),實(shí)時(shí)計(jì)算每天消費(fèi)的數(shù)據(jù)記錄近萬(wàn)億條。京東大數(shù)據(jù)平臺(tái)建設(shè)了完整的技術(shù)體系,包括離線計(jì)算、實(shí)時(shí)計(jì)算和機(jī)器學(xué)習(xí)平臺(tái),可以滿足多種復(fù)雜應(yīng)用場(chǎng)景的計(jì)算任務(wù)。元數(shù)據(jù)管理、數(shù)據(jù)質(zhì)量管理、任務(wù)調(diào)度、數(shù)據(jù)開(kāi)發(fā)工具、流程中心等構(gòu)成了全面的數(shù)據(jù)運(yùn)營(yíng)工具。分析師、指南針等數(shù)據(jù)應(yīng)用產(chǎn)品提供了便利的數(shù)據(jù)分析功能,以及敏感數(shù)據(jù)保護(hù)、數(shù)據(jù)權(quán)限控制等策略方案,能夠最大程度地保護(hù)數(shù)據(jù)資產(chǎn)的安全。京東大數(shù)據(jù)在驅(qū)動(dòng)企業(yè)業(yè)務(wù)增長(zhǎng),提升運(yùn)營(yíng)效率,為客戶提供個(gè)性化、高品質(zhì)產(chǎn)品及服務(wù)上發(fā)揮了重要作用。利用大數(shù)據(jù)分析和挖掘,京東打造了個(gè)性化商城,自主研發(fā)了智能門店解決方案,打造了智能供應(yīng)鏈體系,提高了物流配送的效率,實(shí)現(xiàn)了知人、知貨、知場(chǎng)景的購(gòu)物體驗(yàn)。京東大數(shù)據(jù)的應(yīng)用已滲透到了業(yè)務(wù)的各個(gè)環(huán)節(jié)。近幾年,京東大數(shù)據(jù)承擔(dān)了包括大數(shù)據(jù)和人工智能領(lǐng)域在內(nèi)~6~京東大數(shù)據(jù)技術(shù)白皮書(shū)的多項(xiàng)國(guó)家級(jí)重點(diǎn)研發(fā)項(xiàng)目。2017年,京東獲得了國(guó)家“大數(shù)據(jù)智能管理與分析技術(shù)”國(guó)家地方聯(lián)合工程研究中心的授牌。這些都是國(guó)家對(duì)京東大數(shù)據(jù)實(shí)力的認(rèn)可,是京東技術(shù)實(shí)力的體現(xiàn)。京東是“開(kāi)放的京東”,隨著國(guó)家大數(shù)據(jù)戰(zhàn)略的逐步落實(shí),我們希望能輸出京東的大數(shù)據(jù)技術(shù)能力,建設(shè)開(kāi)放的技術(shù)平臺(tái),借助技術(shù)和數(shù)據(jù)為政府和社會(huì)創(chuàng)造更多價(jià)值,我們希望借此白皮書(shū)的發(fā)布,將京東的大數(shù)據(jù)技術(shù)實(shí)踐分享出來(lái),為其他企業(yè)提供參考,同時(shí),我們也歡迎更多的合作伙伴與我們一道,共同在大數(shù)據(jù)領(lǐng)域深入探索,為我國(guó)大數(shù)據(jù)產(chǎn)業(yè)的發(fā)展貢獻(xiàn)力量。~7~京東大數(shù)據(jù)技術(shù)白皮書(shū)1京東大數(shù)據(jù)的發(fā)展歷程2010年,京東集團(tuán)啟動(dòng)了在大數(shù)據(jù)領(lǐng)域的研發(fā)和應(yīng)用探索工作,正式組建京東大數(shù)據(jù)部,并確立了數(shù)據(jù)集中式的數(shù)據(jù)服務(wù)模式,成為企業(yè)大數(shù)據(jù)最早的實(shí)踐者之一。大數(shù)據(jù)平臺(tái)的發(fā)展是隨著京東業(yè)務(wù)同步發(fā)展的,由原來(lái)的傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)模式逐步演變?yōu)榛贖adoop的分布式計(jì)算架構(gòu),如圖1所示。技術(shù)領(lǐng)域覆蓋Hadoop、Kubernetes、Spark、Hive、Alluxio、Presto、Hbase、Storm、Flink、Kafka等大數(shù)據(jù)全生態(tài)體系。目前擁有研發(fā)團(tuán)隊(duì)500+人,累計(jì)獲得技術(shù)專利400+個(gè)。經(jīng)過(guò)多年的持續(xù)投入,京東大數(shù)據(jù)已成為企業(yè)大數(shù)據(jù)的領(lǐng)跑者。目前已擁有集群規(guī)模40000+服務(wù)器,單集群規(guī)模達(dá)到7000+臺(tái),數(shù)據(jù)規(guī)模800PB+,日增數(shù)據(jù)1P+,日運(yùn)行JOB數(shù)100萬(wàn)+,業(yè)務(wù)表900萬(wàn)+張每。日的離線數(shù)據(jù)日處理30PB+,實(shí)時(shí)計(jì)算每天消費(fèi)的行數(shù)近萬(wàn)億條。圖1:京東大數(shù)據(jù)發(fā)展歷程~8~京東大數(shù)據(jù)技術(shù)白皮書(shū)京東大數(shù)據(jù)建設(shè)了全生態(tài)核心產(chǎn)品體系,是京東大數(shù)據(jù)業(yè)務(wù)的基礎(chǔ)服務(wù)平臺(tái),為京東全業(yè)務(wù)生態(tài)提供一站式、自助式的大數(shù)據(jù)處理全流程解決方案。涵蓋數(shù)據(jù)采集、存儲(chǔ)、加工、分析、可視化、機(jī)器學(xué)習(xí)等專業(yè)化產(chǎn)品和服務(wù),在保障數(shù)據(jù)安全的前提下,提供更可靠、高性能的服務(wù),大幅降低大數(shù)據(jù)使用門檻,幫助京東大數(shù)據(jù)業(yè)務(wù)快速落地,助力京東實(shí)踐以數(shù)據(jù)為驅(qū)動(dòng)的業(yè)務(wù)變革與發(fā)展。~9~京東大數(shù)據(jù)技術(shù)白皮書(shū)2京東大數(shù)據(jù)的技術(shù)體系京東大數(shù)據(jù)平臺(tái)構(gòu)建了完整的技術(shù)體系,通過(guò)一系列的技術(shù)方法實(shí)現(xiàn)了更可靠、高可用、具有京東自身特色的平臺(tái)環(huán)境。如圖2所示,平臺(tái)覆蓋Hadoop、Kubernetes、Spark、Hive、Alluxio、Presto、Hbase、Storm、Flink、Kafka等技術(shù)全棧,滿足各類應(yīng)用場(chǎng)景對(duì)數(shù)據(jù)平臺(tái)的要求。圖2:京東大數(shù)據(jù)平臺(tái)技術(shù)架構(gòu)2.1數(shù)據(jù)采集和預(yù)處理數(shù)據(jù)采集是大數(shù)據(jù)的基石。京東包含了電商所涉及的營(yíng)銷、交易、倉(cāng)儲(chǔ)、配送、售后等環(huán)節(jié),每個(gè)環(huán)節(jié)都會(huì)產(chǎn)生大量的業(yè)務(wù)數(shù)據(jù),同時(shí)線上的業(yè)務(wù)日志系統(tǒng)和消息系統(tǒng)也會(huì)產(chǎn)生海量的數(shù)據(jù)。為了將上述結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行采集,以便后續(xù)被數(shù)據(jù)應(yīng)~10~京東大數(shù)據(jù)技術(shù)白皮書(shū)用類系統(tǒng)所使用,京東搭建了一套標(biāo)準(zhǔn)化的數(shù)據(jù)采集系統(tǒng)——數(shù)據(jù)直通車。數(shù)據(jù)直通車為京東線上數(shù)據(jù)接入京東數(shù)據(jù)倉(cāng)庫(kù)提供了一套完整解決方案,為后續(xù)的查詢、分發(fā)、計(jì)算和分析提供數(shù)據(jù)基礎(chǔ)。直通車提供豐富多樣、簡(jiǎn)單易用的數(shù)據(jù)采集功能,可滿足離線計(jì)算、實(shí)時(shí)計(jì)算、集成分發(fā)等多種需求,并進(jìn)行全程狀態(tài)監(jiān)控。根據(jù)不同業(yè)務(wù)場(chǎng)景對(duì)于數(shù)據(jù)時(shí)效性的不同要求,直通車支持離線數(shù)據(jù)采集和實(shí)時(shí)數(shù)據(jù)采集兩種數(shù)據(jù)采集方式。離線數(shù)據(jù)采集主要支持的數(shù)據(jù)類型為:MySQL、SQLServer、Oracle、MongoDB、HBase、ElasticSearch、離線文件;實(shí)時(shí)數(shù)據(jù)采集主要支持的數(shù)據(jù)類型為:MySQL、日志、HTTPAPI、JMQ等,并支持API接口實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)上報(bào)。離線采集每天在零點(diǎn)后抽取前一天增量的數(shù)據(jù)(T+1),然后將T+1的數(shù)據(jù)與已有的全量數(shù)據(jù)合并形成新的全量數(shù)據(jù),并將數(shù)據(jù)儲(chǔ)存到目標(biāo)表對(duì)應(yīng)的分區(qū)中。圖3展現(xiàn)了離線數(shù)據(jù)采集的完整架構(gòu):~11~京東大數(shù)據(jù)技術(shù)白皮書(shū)圖3:離線數(shù)據(jù)采集架構(gòu)數(shù)據(jù)直通車同樣為實(shí)時(shí)數(shù)據(jù)采集提供了一套標(biāo)準(zhǔn)化的解決方案,實(shí)時(shí)數(shù)據(jù)采集目前支持MySQL、SQLServer、Oracle、JMQ、日志等多種數(shù)據(jù)源類型。對(duì)于MySQL數(shù)據(jù)庫(kù),系統(tǒng)參照數(shù)據(jù)庫(kù)的主從復(fù)制模式,通過(guò)把關(guān)系型數(shù)據(jù)庫(kù)的Binlog日志實(shí)時(shí)抓取并解析發(fā)送到實(shí)時(shí)數(shù)據(jù)總線(JDQ)內(nèi)。實(shí)時(shí)采集按照數(shù)據(jù)庫(kù)實(shí)例粒度抓取MySQL實(shí)例上的所有Binlog,在程序內(nèi)部進(jìn)行Binlog的實(shí)時(shí)解析并過(guò)濾出所需要的庫(kù)表,再以表粒度發(fā)送到不同的Topic上,方便下游用戶進(jìn)行業(yè)務(wù)表粒度的實(shí)時(shí)處理。JMQ是京東內(nèi)部線上系統(tǒng)的消息中間件服務(wù),很多業(yè)務(wù)數(shù)據(jù)在落數(shù)據(jù)庫(kù)之前都會(huì)經(jīng)過(guò)JMQ系統(tǒng)在不同的業(yè)務(wù)系統(tǒng)之間進(jìn)行傳遞。數(shù)據(jù)直通車可以把JMQ內(nèi)的線上系統(tǒng)消息實(shí)時(shí)地同步到實(shí)時(shí)數(shù)據(jù)總線(JDQ)內(nèi),再由數(shù)據(jù)消費(fèi)者按需處理,極大地提~12~京東大數(shù)據(jù)技術(shù)白皮書(shū)高了數(shù)據(jù)處理系統(tǒng)的服務(wù)能力。京東內(nèi)部所有系統(tǒng)的實(shí)時(shí)數(shù)據(jù)都會(huì)通過(guò)數(shù)據(jù)直通車實(shí)時(shí)采集到JDQ系統(tǒng),統(tǒng)一由JDQ對(duì)下游業(yè)務(wù)需求提供實(shí)時(shí)數(shù)據(jù)消費(fèi)服務(wù)。該方案幫助業(yè)務(wù)用戶在技術(shù)層面屏蔽了實(shí)時(shí)數(shù)據(jù)采集的復(fù)雜度,并使得系統(tǒng)能夠提供穩(wěn)定的服務(wù)能力。2.2流量數(shù)據(jù)采集目前京東擁有豐富的入口平臺(tái),包括PC上看到的網(wǎng)站,無(wú)線客戶端上訪問(wèn)的H5頁(yè)面,移動(dòng)端應(yīng)用,微信手Q內(nèi)的購(gòu)物入口,京東自主研發(fā)或合作的智能設(shè)備,微信生態(tài)下的小程序,以及通過(guò)開(kāi)普勒開(kāi)放賦能給其他合作的APP等。多樣的數(shù)據(jù)展示形式使得不同的訪問(wèn)入口每天都有大量的用戶訪問(wèn),流量數(shù)據(jù)采集成為了京東大數(shù)據(jù)的一個(gè)重要環(huán)節(jié)。由于入口平臺(tái)實(shí)現(xiàn)原理不同,數(shù)據(jù)采集的訴求也不同,包括針對(duì)不同的事件,不同的場(chǎng)景有著特定的采集訴求,等以下我們將開(kāi)始介紹在京東流量數(shù)據(jù)采集的相關(guān)技術(shù)。2.2.1瀏覽器頁(yè)面的采集采集流程瀏覽器的日志采集,主要包含兩大類日志:頁(yè)面日志、點(diǎn)擊及自定義日志,其中頁(yè)面日志采集主要是指瀏覽器中頁(yè)面被加載時(shí)的日志,而點(diǎn)擊及自定義日志則是相關(guān)行為被觸發(fā)后產(chǎn)生的日~13~京東大數(shù)據(jù)技術(shù)白皮書(shū)志,頁(yè)面日志采集的流程如圖4所示。圖4:頁(yè)面日志采集流程頁(yè)面日志采集主要包含以下幾個(gè)環(huán)節(jié):(1)日志采集。網(wǎng)站的頁(yè)面在上線前,會(huì)在頁(yè)面內(nèi)植入一段JS的采集腳本,當(dāng)用戶在訪問(wèn)網(wǎng)站的頁(yè)面時(shí),瀏覽器會(huì)進(jìn)行加載、解析并執(zhí)行JS腳本,JS腳本在執(zhí)行過(guò)程中會(huì)收集當(dāng)前頁(yè)面的一些信息、瀏覽器環(huán)境的相關(guān)信息、用戶訪問(wèn)上下文的信息(例如第幾次訪問(wèn)網(wǎng)站,當(dāng)前訪問(wèn)頁(yè)面的上一頁(yè)面信息等等)以及業(yè)務(wù)特性的相關(guān)數(shù)據(jù)。(2)日志上報(bào)。JS腳本執(zhí)行在執(zhí)行完畢后,會(huì)將所有收集到的信息拼裝到一個(gè)請(qǐng)求內(nèi),通過(guò)日志請(qǐng)求將數(shù)據(jù)發(fā)送到日志服務(wù)器。一般情況下,在JS執(zhí)行完成后就會(huì)立即向日志服務(wù)器發(fā)送。(3)日志接收。日志接收服務(wù)器在接收到客戶端發(fā)送來(lái)的~14~京東大數(shù)據(jù)技術(shù)白皮書(shū)日志請(qǐng)求后,會(huì)向?yàn)g覽器返回一個(gè)請(qǐng)求成功的響應(yīng)。日志服務(wù)器在接收到上報(bào)的日志后,還會(huì)在服務(wù)器上執(zhí)行業(yè)務(wù)定制的特殊處理,對(duì)日志進(jìn)行過(guò)濾篩選,然后再將日志存儲(chǔ)在本地磁盤或者發(fā)送至實(shí)時(shí)平臺(tái)中,供下游使用。(4)日志存儲(chǔ)。目前采集到的日志通過(guò)兩種方式進(jìn)行存儲(chǔ):離線和實(shí)時(shí)。其中離線主要指服務(wù)器在接收到日志請(qǐng)求后,會(huì)將請(qǐng)求進(jìn)行簡(jiǎn)單處理后落地到本地的磁盤中,然后通過(guò)日志抽取的方式將本地的日志及時(shí)抽取到相應(yīng)的數(shù)據(jù)倉(cāng)庫(kù)中,實(shí)時(shí)則是將請(qǐng)求的消息體實(shí)時(shí)地分發(fā)到相應(yīng)的實(shí)時(shí)處理平臺(tái)中進(jìn)行緩存,下游則根據(jù)該緩存的數(shù)據(jù)進(jìn)行后續(xù)的應(yīng)用。(5)日志解析。下游業(yè)務(wù)在拿到原始日志后,結(jié)合自己的業(yè)務(wù)需求對(duì)數(shù)據(jù)進(jìn)行過(guò)濾篩選,同時(shí)結(jié)合統(tǒng)計(jì)分析的需求對(duì)數(shù)據(jù)進(jìn)行加工處理。日志經(jīng)過(guò)了以上的幾個(gè)步驟后,我們就完成了用戶的流量數(shù)據(jù)收集。頁(yè)面日志網(wǎng)頁(yè)頁(yè)面是網(wǎng)站最基本的載體,通過(guò)頁(yè)面的形式將希望展示的內(nèi)容呈現(xiàn)給用戶。為了更好地了解頁(yè)面的訪問(wèn)情況,就需要我們采集頁(yè)面的訪問(wèn)日志,有了頁(yè)面日志后,我們可以統(tǒng)計(jì)分析頁(yè)~15~京東大數(shù)據(jù)技術(shù)白皮書(shū)面的瀏覽量(pv)、頁(yè)面的訪客數(shù)(uv)、頁(yè)面的加載時(shí)長(zhǎng)、頁(yè)面的停留時(shí)長(zhǎng)等情況,也可以進(jìn)行上下游的分析,訪問(wèn)用戶的分析,為營(yíng)銷策略調(diào)整提供數(shù)據(jù)支撐。頁(yè)面日志主要是在用戶訪問(wèn)頁(yè)面的時(shí)候進(jìn)行采集的,目前主要采集了頁(yè)面的基本信息、頁(yè)面上下文、頁(yè)面業(yè)務(wù)信息、頁(yè)面的其他基本信息。點(diǎn)擊及自定義日志點(diǎn)擊及自定義日志,主要用于收集用戶在網(wǎng)站中除瀏覽以外的日志,主要包括交互日志、曝光日志、自定義日志等。對(duì)于交互日志,例如用戶通過(guò)鼠標(biāo)的相關(guān)操作,移動(dòng)、點(diǎn)擊鼠標(biāo)等操作與頁(yè)面發(fā)生交互,頁(yè)面會(huì)根據(jù)交互行為得到相應(yīng)的結(jié)果,在用戶觸發(fā)這些交互行為時(shí),會(huì)觸發(fā)頁(yè)面采集的腳本,從而將該部分交互日志采集到。曝光日志是則根據(jù)用戶訪問(wèn)頁(yè)面后,頁(yè)面自發(fā)展示的一些其他內(nèi)容形式,例如彈窗,輪播圖等等形式。為了看到曝光之后用戶對(duì)該內(nèi)容的轉(zhuǎn)化效果,就需要知道目前曝光的具體情況,例如在什么時(shí)間、曝光給了那些用戶等等。自定義日志則是根據(jù)業(yè)務(wù)特性定制的一些特殊日志,例如采集頁(yè)面停留的位置,用戶在頁(yè)面中的訪問(wèn)路徑等等。點(diǎn)擊及自定義日志的采集方法主要為用戶特定標(biāo)記的信息采集,即在網(wǎng)頁(yè)上預(yù)設(shè)采集腳本,當(dāng)該網(wǎng)頁(yè)的某個(gè)位置被點(diǎn)擊或自定義的行為被用戶觸發(fā)了,則會(huì)產(chǎn)生相應(yīng)日志并上報(bào)給日志服~16~京東大數(shù)據(jù)技術(shù)白皮書(shū)務(wù)器。隨著觸發(fā)條件被同時(shí)采集的還包括用戶的基本信息、頁(yè)面的基本信息、瀏覽器的基本信息,以及訪問(wèn)歷史相關(guān)的信息等。點(diǎn)擊及自定義日志的采集,更好地還原了用戶在網(wǎng)站頁(yè)面中的訪問(wèn)情況。有時(shí)為了更好地記錄用戶的訪問(wèn)行為,需要使用相應(yīng)的標(biāo)識(shí)用來(lái)做各種場(chǎng)景的區(qū)分,同時(shí)在采集代碼植入時(shí)就標(biāo)記下來(lái),這樣在用戶的行為發(fā)生時(shí),相應(yīng)的日志就能夠采集到更完善的信息,為我們后續(xù)的數(shù)據(jù)統(tǒng)計(jì)分析及業(yè)務(wù)應(yīng)用提供了幫助。2.2.2移動(dòng)設(shè)備日志采集隨著用戶對(duì)移動(dòng)設(shè)備的依賴越來(lái)越重,用戶的訪問(wèn)也逐步向移動(dòng)端遷移,移動(dòng)端的數(shù)據(jù)采集也越來(lái)越重要。目前移動(dòng)設(shè)備基本以APP應(yīng)用的方式進(jìn)行對(duì)外應(yīng)用,針對(duì)APP應(yīng)用的數(shù)據(jù)采集,京東提供了自主研發(fā)的SDK工具。該SDK可以收集用戶在APP的各種事件行為數(shù)據(jù),收集APP的性能日志,也支持研發(fā)采集一些自定義狀態(tài),自定義事件等場(chǎng)景的數(shù)據(jù)。SDK被預(yù)置在APP應(yīng)用內(nèi),用戶在使用APP的過(guò)程中,如果觸發(fā)了預(yù)先設(shè)計(jì)的場(chǎng)景,將會(huì)觸發(fā)SDK的采集方法,進(jìn)而生成相應(yīng)的用戶行為日志,并收集到APP應(yīng)用內(nèi),并在合適的時(shí)機(jī)下上報(bào)的日志接收服務(wù)器。頁(yè)面標(biāo)識(shí)網(wǎng)站頁(yè)面在瀏覽器內(nèi)訪問(wèn)時(shí),會(huì)有相應(yīng)的頁(yè)面鏈接,而用戶~(yú)17~京東大數(shù)據(jù)技術(shù)白皮書(shū)在移動(dòng)設(shè)備上訪問(wèn)時(shí),由于移動(dòng)端的特殊性,頁(yè)面都是以接口的形式展示,但接口不直觀,數(shù)據(jù)人員無(wú)法直接訪問(wèn)展示,直接判定該頁(yè)面具體信息,因此需要針對(duì)頁(yè)面接口進(jìn)行重新標(biāo)識(shí)。京東提供了相應(yīng)的管理界面,可以備注具體接口對(duì)應(yīng)的別名信息,接口描述信息,業(yè)務(wù)可以快速地查閱和使用。頁(yè)面事件用戶在移動(dòng)設(shè)備上留下各種事件行為,事件行為都是由后臺(tái)實(shí)現(xiàn)的一些通用接口方法來(lái)實(shí)現(xiàn),為了標(biāo)識(shí)這些事件,并且以更簡(jiǎn)單易懂的信息來(lái)標(biāo)識(shí),我們提供了頁(yè)面事件管理的功能,通過(guò)事件管理來(lái)標(biāo)識(shí)具體的行為事件。研發(fā)通過(guò)埋點(diǎn)開(kāi)發(fā),將這部分事件行為植入到對(duì)應(yīng)的接口中,再通過(guò)SDK進(jìn)行采集上報(bào),就可以快速地標(biāo)識(shí)出用戶的事件數(shù)據(jù)。特殊場(chǎng)景電商行業(yè)包含了兩大特殊的業(yè)務(wù)場(chǎng)景:引流、跟單。引流:引流主要指的是廣告渠道的引流效果跟蹤,業(yè)務(wù)在站外投放廣告,用戶通過(guò)點(diǎn)擊廣告坑位進(jìn)入網(wǎng)站,然后在網(wǎng)站中進(jìn)行后續(xù)的訪問(wèn),為了跟進(jìn)各個(gè)廣告位的流量進(jìn)入及訂單轉(zhuǎn)化效果。京東目前對(duì)站外廣告渠道進(jìn)行打標(biāo),在用戶通過(guò)點(diǎn)擊廣告位跳轉(zhuǎn)到京東后,來(lái)源的鏈接上會(huì)有相應(yīng)的廣告參數(shù),再借助業(yè)務(wù)制定的廣告覆蓋規(guī)則更新廣告渠道信息,而這部分廣告渠道信息將會(huì)~18~京東大數(shù)據(jù)技術(shù)白皮書(shū)保持在后續(xù)訪問(wèn)的所有頁(yè)面內(nèi),通過(guò)頁(yè)面的廣告渠道信息就可以統(tǒng)計(jì)分析出各個(gè)廣告渠道的引流效果。跟單:跟單主要指的是訂單來(lái)源的跟蹤,跟單效果包含兩大類,一個(gè)是站外的訂單效果跟蹤,一個(gè)是站內(nèi)的訂單效果跟蹤。其中站外跟單效果分析,由于頁(yè)面中包含了廣告渠道的信息,因此可以通過(guò)頁(yè)面中包含廣告參數(shù)信息來(lái)統(tǒng)計(jì)分析,站內(nèi)活動(dòng)或者坑位的引入效果沒(méi)有標(biāo)識(shí),我們?cè)O(shè)定了相應(yīng)的跟單邏輯,通過(guò)對(duì)應(yīng)的跟單邏輯可以跟蹤各個(gè)坑位的訂單引入效果。設(shè)備標(biāo)識(shí)目前移動(dòng)設(shè)備可以通過(guò)MEID,IMEI,IMSI,MAC,以及蘋果的UDID信息來(lái)識(shí)別,但是隨著用戶的自我保護(hù)意識(shí)加強(qiáng),蘋果系統(tǒng)禁用設(shè)備標(biāo)識(shí),Android新系統(tǒng)也對(duì)設(shè)備信息做了權(quán)限控制,用戶的基本設(shè)備信息獲取愈發(fā)困難,想要進(jìn)行設(shè)備標(biāo)識(shí)成為了一個(gè)需要攻克的難題。為了更好地分析用戶,識(shí)別一個(gè)用戶的所有訪問(wèn)記錄,將用戶的畫(huà)像信息描繪得更完善,就需要一個(gè)設(shè)備唯一標(biāo)識(shí)。京東通過(guò)移動(dòng)設(shè)備相關(guān)的硬件信息,并結(jié)合一定的歷史數(shù)據(jù)及算法,融合出自己的唯一標(biāo)識(shí)JDID,通過(guò)該標(biāo)識(shí)唯一標(biāo)識(shí)一個(gè)設(shè)備。H5與APP原生頁(yè)我們?cè)谠L問(wèn)一個(gè)APP設(shè)備時(shí),通常會(huì)包含兩種頁(yè)面形式,~19~京東大數(shù)據(jù)技術(shù)白皮書(shū)一種是APP原生頁(yè),一種是H5頁(yè)面,其中APP原生頁(yè)的數(shù)據(jù)采集通過(guò)SDK的方式來(lái)采集,H5頁(yè)面則是通過(guò)頁(yè)面中的JS來(lái)進(jìn)行采集,由于是在同一個(gè)APP內(nèi)訪問(wèn),業(yè)務(wù)人員通常希望將APP內(nèi)的H5的數(shù)據(jù)算作APP的一部分,而由于采集方式的不同,數(shù)據(jù)需要進(jìn)行統(tǒng)一,同時(shí)也需要相應(yīng)的交互處理,即H5頁(yè)面可以標(biāo)識(shí)出來(lái)具體是在哪個(gè)APP應(yīng)用內(nèi)訪問(wèn)帶來(lái)的。日志采集控制用戶在移動(dòng)設(shè)備上訪問(wèn)后,每個(gè)操作都會(huì)產(chǎn)生一個(gè)操作日志,但并不是每生成一條日志就實(shí)時(shí)上報(bào)至服務(wù)器,而是在產(chǎn)生日志后,先暫存在客戶端本地,再結(jié)合著相應(yīng)的上報(bào)控制策略進(jìn)行數(shù)據(jù)上報(bào)。其中上報(bào)策略主要指根據(jù)日志的業(yè)務(wù)特性,數(shù)據(jù)的時(shí)效性,用戶的網(wǎng)絡(luò)特性等等信息設(shè)定不同的上報(bào)策略,有些日志會(huì)因?yàn)槠鋽?shù)據(jù)時(shí)效性的要求進(jìn)行實(shí)時(shí)數(shù)據(jù)上報(bào),而有些日志則會(huì)在用戶啟動(dòng)應(yīng)用,或者間隔一段時(shí)間后將日志上報(bào)上來(lái)。2.2.3客戶端與服務(wù)器日志采集除了瀏覽器和移動(dòng)設(shè)備外,用戶可能有自己的客戶端或者服務(wù)端的日志需要進(jìn)行采集,京東提供了相應(yīng)的數(shù)據(jù)采集方案。其中客戶端也主要以服務(wù)器端方式進(jìn)行日志采集,通過(guò)相應(yīng)的接口調(diào)用,在后臺(tái)組織好相應(yīng)的日志形式,然后向日志接收服務(wù)器發(fā)送日志請(qǐng)求。日志接收服務(wù)器則根據(jù)約定的協(xié)議判定該日志是否~20~京東大數(shù)據(jù)技術(shù)白皮書(shū)為合法日志,最終將業(yè)務(wù)日志落地到相應(yīng)的服務(wù)器上。2.2.4采集的難點(diǎn)與挑戰(zhàn)業(yè)務(wù)特性在數(shù)據(jù)采集過(guò)程中遇到的一個(gè)難點(diǎn)就是業(yè)務(wù)特性信息的收集,不同的業(yè)務(wù)場(chǎng)景需要收集不同的信息,但又不能每個(gè)業(yè)務(wù)場(chǎng)景都進(jìn)行特殊開(kāi)發(fā),因此就需要設(shè)計(jì)一種日志數(shù)據(jù)采集解決方案,可以針對(duì)特定的業(yè)務(wù)場(chǎng)景,制定通用的數(shù)據(jù)采集標(biāo)識(shí),研發(fā)人員在進(jìn)行頁(yè)面埋點(diǎn)時(shí),依據(jù)標(biāo)準(zhǔn)的數(shù)據(jù)采集標(biāo)識(shí)規(guī)則進(jìn)行埋點(diǎn),從而收集業(yè)務(wù)的詳細(xì)信息。例如電商行業(yè)中有商品詳情頁(yè)、搜索頁(yè)、店鋪?lái)?yè)、下單頁(yè)等特殊分類頁(yè)面,而這些頁(yè)面則需要分別采集具體的商品編號(hào)、搜索的關(guān)鍵字、店鋪編號(hào)、訂單對(duì)應(yīng)的編號(hào)信息。該部分信息需要多方達(dá)成一致,確保產(chǎn)品、埋點(diǎn)研發(fā)、模型開(kāi)發(fā)人員、數(shù)據(jù)分析人員對(duì)其有著相同的認(rèn)識(shí),以保證采集到的數(shù)據(jù)可以正常的解析處理,供分析人員進(jìn)行數(shù)據(jù)統(tǒng)計(jì)分析,利用數(shù)據(jù)采集標(biāo)識(shí)即可做到這一點(diǎn)。全域用戶標(biāo)識(shí)目前京東存在的入口很多,包括PC端的網(wǎng)站,移動(dòng)端的網(wǎng)頁(yè),移動(dòng)應(yīng)用,包括微信手Q,微信小程序等,同時(shí)京東還有很多的垂直業(yè)務(wù),例如京東金融,京東全球購(gòu)等等,而用戶在不同的入口都有著不同的標(biāo)識(shí)方式,而如果用戶在未登錄的情況下,~21~京東大數(shù)據(jù)技術(shù)白皮書(shū)如何將用戶在全域下識(shí)別成同一個(gè)用戶成為了一個(gè)重要課題。京東依據(jù)各入口的用戶標(biāo)識(shí)方式,結(jié)合用戶之前的使用記錄,用戶偏好等等信息,再結(jié)合自用的算法邏輯,將全域的信息進(jìn)行打通,形成全域的用戶唯一標(biāo)識(shí)。通過(guò)全域的用戶唯一標(biāo)識(shí),我們就可以知道一個(gè)用戶在不同網(wǎng)站,不同設(shè)備上的訪問(wèn)習(xí)慣,方便營(yíng)銷人員對(duì)用戶進(jìn)行更精準(zhǔn)的營(yíng)銷活動(dòng)。2.3數(shù)據(jù)存儲(chǔ)體系2.3.1HDFS存儲(chǔ)JDHDFS是京東基于HDFS自研的大數(shù)據(jù)分布式存儲(chǔ)平臺(tái),采用分布式存儲(chǔ)技術(shù),滿足大數(shù)據(jù)高效可靠的存儲(chǔ)需求,提供較高的持久性、較高的吞吐量和較低的延遲速度,具備高可用性和高可靠性的特點(diǎn),容易擴(kuò)展,并支持水平擴(kuò)展至百PB級(jí)存儲(chǔ)容量,同時(shí)擁有較高的硬件故障容忍能力,提供全面的安全性和多樣化的權(quán)限功能。相對(duì)于開(kāi)源版本的HDFS,,JDHDFS主要改進(jìn)的技術(shù)點(diǎn)如下:(1)基于路由的Federation方案(Router-BasedFederation)隨著集群規(guī)模的增長(zhǎng),Namenode存儲(chǔ)成為集群性能的關(guān)鍵瓶頸。我們參考社區(qū)版本設(shè)計(jì)文檔,研發(fā)功能模塊RBF(Router-BasedFederation基于路由的Federation方案),支持動(dòng)態(tài)映射、嵌套映射等功能,可以解決hadoop集群無(wú)限橫向擴(kuò)展的規(guī)模問(wèn)~22~京東大數(shù)據(jù)技術(shù)白皮書(shū)題。(2)數(shù)據(jù)生命周期管理(DataLifecycleManagement)組件基于數(shù)據(jù)生命周期管理的策略,該組件定期調(diào)度進(jìn)行過(guò)期Job日志聚合目錄app-logs、中間結(jié)果文件、Cgroups文件的清理以及固定周期小文件的整理合并。(3)基于資源利用率的智能選塊改進(jìn)后的Namenode節(jié)點(diǎn)可以實(shí)時(shí)感知集群所有Datanode的繁忙狀態(tài),根據(jù)CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)的繁忙程度進(jìn)行副本的位置選擇,規(guī)避繁忙狀態(tài)的Datanode節(jié)點(diǎn),可以對(duì)整個(gè)集群的負(fù)載實(shí)時(shí)平衡。(4)跨集群容災(zāi)集群往往不在同一個(gè)數(shù)據(jù)中心,甚至是跨地域的。集群間網(wǎng)絡(luò)延遲較高,交換數(shù)據(jù)成本昂貴。原有執(zhí)行同步的方式會(huì)造成數(shù)據(jù)延遲。我們基于集群數(shù)據(jù)同步方式代替distcp,同時(shí)做到數(shù)據(jù)低延遲訪問(wèn),支持雙主訪問(wèn),降低額外物理資源冗余。京東分布式存儲(chǔ)采用將元數(shù)據(jù)集群與數(shù)據(jù)集群分離并可實(shí)現(xiàn)獨(dú)立擴(kuò)展,用戶既可以通過(guò)擴(kuò)展元數(shù)據(jù)集群獲得更多文件管理的能力,又可通過(guò)擴(kuò)展數(shù)據(jù)存儲(chǔ)集群獲得更大的聚合帶寬與存儲(chǔ)容量。靈活、無(wú)縫、平滑的擴(kuò)展方可式以為用戶高效的計(jì)算環(huán)境提供堅(jiān)實(shí)的數(shù)據(jù)保障。圖5展示JDHDFS的技術(shù)架構(gòu)。~23~京東大數(shù)據(jù)技術(shù)白皮書(shū)圖5:JDHDFS技術(shù)架構(gòu)數(shù)據(jù)高可靠和平臺(tái)高可用平臺(tái)可用性是最重要的指標(biāo)之一,需要保證在機(jī)器發(fā)生故障時(shí),系統(tǒng)可用性不受影響。我們使用多副本策略,副本分布在不同的機(jī)器,機(jī)器故障引起某些副本失效時(shí),其它副本仍然能提供服務(wù)。平臺(tái)允許對(duì)虛擬存儲(chǔ)池中不同的目錄設(shè)置不同的副本數(shù),可手動(dòng)設(shè)置1-4個(gè)文件副本,可保證數(shù)據(jù)在多塊磁盤甚至單臺(tái)服務(wù)器損壞的情況下存儲(chǔ)系統(tǒng)的服務(wù)正常運(yùn)轉(zhuǎn)。為了保證任何一臺(tái)存儲(chǔ)服務(wù)器失效或者是任何一塊硬盤失效都不會(huì)影響數(shù)據(jù)的可靠性和一致性,使用pipeline機(jī)制保證數(shù)據(jù)寫入順序,所有的數(shù)據(jù)副本以及數(shù)據(jù)校驗(yàn)有嚴(yán)格寫入順序,如~24~京東大數(shù)據(jù)技術(shù)白皮書(shū)圖6所示。當(dāng)正在進(jìn)行數(shù)據(jù)寫入的磁盤和存儲(chǔ)服務(wù)器發(fā)生故障時(shí),元數(shù)據(jù)服務(wù)器會(huì)為此數(shù)據(jù)對(duì)象分配新的空間,以繼續(xù)進(jìn)行數(shù)據(jù)寫入,而之前在失效磁盤上寫入的數(shù)據(jù)則會(huì)通過(guò)另一份數(shù)據(jù)副本恢復(fù)到相應(yīng)的磁盤和存儲(chǔ)服務(wù)器上。圖6:JDHDFS存儲(chǔ)架構(gòu)圖集群水平擴(kuò)展能力存儲(chǔ)平臺(tái)中的元數(shù)據(jù)服務(wù)器和存儲(chǔ)節(jié)點(diǎn)是擁有橫向水平擴(kuò)展能力。存儲(chǔ)節(jié)點(diǎn)擴(kuò)展是存儲(chǔ)節(jié)點(diǎn)數(shù)量的擴(kuò)展,存儲(chǔ)節(jié)點(diǎn)擴(kuò)展帶來(lái)容量上的增長(zhǎng)。擴(kuò)展過(guò)程中無(wú)需中斷存儲(chǔ)系統(tǒng)上應(yīng)用的運(yùn)行,擴(kuò)展的容量即插即用。而且隨著存儲(chǔ)服務(wù)器數(shù)量的增多,整套存儲(chǔ)平臺(tái)的流量也會(huì)線性增長(zhǎng),成為核心存儲(chǔ)集群之一。元數(shù)據(jù)服務(wù)器的擴(kuò)展帶來(lái)的是文件數(shù)量存儲(chǔ)能力的增長(zhǎng)。如圖7所示,整個(gè)擴(kuò)展過(guò)程對(duì)整個(gè)應(yīng)用平臺(tái)完全透明,擴(kuò)展的元數(shù)據(jù)服務(wù)器即刻能夠提供服務(wù),前端應(yīng)用無(wú)需進(jìn)行任何配置。隨著元數(shù)據(jù)服務(wù)器數(shù)量的增多,整套集群存儲(chǔ)系統(tǒng)所提供的元數(shù)據(jù)服務(wù)能力也會(huì)呈線性增長(zhǎng),能夠管理的文件總個(gè)數(shù)也線性增加。~25~京東大數(shù)據(jù)技術(shù)白皮書(shū)圖7:元數(shù)據(jù)服務(wù)器2.3.2HBase存儲(chǔ)JDHBase是一個(gè)分布式存儲(chǔ)系統(tǒng),具有高效的實(shí)時(shí)讀寫性能??梢灾С置棵肭f(wàn)級(jí)數(shù)據(jù)記錄寫入和毫秒級(jí)的查詢響應(yīng),當(dāng)數(shù)據(jù)量達(dá)到PB級(jí)別,仍然保持高性能讀寫。目前京東HBase集群規(guī)模5000多臺(tái),支持京東600多個(gè)業(yè)務(wù)系統(tǒng),典型業(yè)務(wù)有:商城:商品評(píng)價(jià)、會(huì)員PLUS、個(gè)性推薦、用戶畫(huà)像、POP訂單、商家營(yíng)銷智能:JIMI機(jī)器人、AI圖片、圖像識(shí)別、門禁刷臉金融:風(fēng)控、白條、支付、資管物流:訂單追蹤、物流倉(cāng)儲(chǔ)、銷量預(yù)測(cè)監(jiān)控:統(tǒng)一監(jiān)控、服務(wù)器監(jiān)控、容器監(jiān)控、大數(shù)據(jù)監(jiān)控、~26~京東大數(shù)據(jù)技術(shù)白皮書(shū)大屏監(jiān)控JDHBase集群的服務(wù)端(如圖8所示)是京東HBase的核心,它保障了HBase集群的性能和穩(wěn)定,并提供了安全認(rèn)證、主備切換、分組隔離、SQL支持等重要功能。JDHBase的客戶端是京東HBase的重要支撐,所有業(yè)務(wù)程序都使用標(biāo)準(zhǔn)客戶端來(lái)訪問(wèn)HBase集群,實(shí)現(xiàn)了用戶身份認(rèn)證、主備切換、實(shí)時(shí)監(jiān)控等功能。JDHBase服務(wù)中心實(shí)現(xiàn)了各集群之間的統(tǒng)籌管理,通過(guò)它我們可以控制業(yè)務(wù)數(shù)據(jù)在多個(gè)集群中的流向形成數(shù)據(jù)流向拓?fù)?,方便地進(jìn)行數(shù)據(jù)的遷移。同時(shí)提供對(duì)業(yè)務(wù)端透明的主從、主主策略的動(dòng)態(tài)變更。圖8:JDHBase服務(wù)架構(gòu)京東HBase:(1)4+1架構(gòu)針對(duì)京東的業(yè)務(wù)場(chǎng)景和使用方式,我們對(duì)JDHBase的使用~27~京東大數(shù)據(jù)技術(shù)白皮書(shū)方式做了很多思考與優(yōu)化。如圖9所示,我們將整個(gè)JDHBase平臺(tái)邏輯拆分成存儲(chǔ)層、內(nèi)核層、中間件層、用戶層和一個(gè)輔助系統(tǒng)。底層部署上我們支持將HDFS和HBase分開(kāi)部署,同時(shí)可以利用容器技術(shù)快速擴(kuò)容和創(chuàng)建新的HBase集群。滿足各種場(chǎng)景的讀寫需求。在HBase內(nèi)核部分我們通過(guò)修改源碼讓HBaseRegionServer能夠識(shí)別運(yùn)行的硬件類型并根據(jù)其預(yù)設(shè)值自適應(yīng)到最佳性能狀態(tài),支持多種硬件混合部署集群。在中間件部分我們通過(guò)接口服務(wù)的方式向外圍系統(tǒng)提供支持,如主備容災(zāi)、數(shù)據(jù)治理服務(wù)、集群分組管理服務(wù)、權(quán)限管控服務(wù)、配額&限速管理服務(wù),多語(yǔ)言支持組件等。在用戶層我們向最終用戶提供多種可選的數(shù)據(jù)加載方式和查詢引擎滿足不同業(yè)務(wù)場(chǎng)景和需求。~28~京東大數(shù)據(jù)技術(shù)白皮書(shū)圖9:JDHbase技術(shù)架構(gòu)(2)多活災(zāi)備為了滿足業(yè)務(wù)對(duì)JDHBase讀寫的實(shí)時(shí)性要求和數(shù)據(jù)安全性的要求,我們自主研發(fā)了一套基于策略的多集群切換機(jī)制(圖10)。在集群拓?fù)渖厦總€(gè)集群都會(huì)有備份集群來(lái)保證跨機(jī)房的數(shù)據(jù)備份。從安全維度上我們分別做到了集群級(jí)、namespace、表級(jí)的支持,可以針對(duì)每個(gè)級(jí)別設(shè)置不同的容災(zāi)切換策略,如手動(dòng)、自動(dòng)、強(qiáng)制等。通過(guò)這種方式我們可以隨時(shí)調(diào)整策略將部分業(yè)務(wù)分批、分級(jí)切換,如隔離、降級(jí)、防雪崩等場(chǎng)景。多集群切換機(jī)制的主要工作組件由服務(wù)中心、HBasePolicyServer、客戶端三部分構(gòu)成:端定期會(huì)以心跳的方式訪問(wèn)HBasePolicyServer獲取所操作對(duì)象的集群服務(wù)信息和切換策略信息,當(dāng)發(fā)現(xiàn)主集群信息改變之后端會(huì)根據(jù)切換策略進(jìn)入切換流程。PolicyServer是對(duì)外提供查詢和修改策略的服務(wù),它所有策略數(shù)據(jù)會(huì)存儲(chǔ)在MySQL中,可以通過(guò)加節(jié)點(diǎn)的方式動(dòng)態(tài)擴(kuò)展形成一個(gè)服務(wù)集群,避免單點(diǎn)問(wèn)題。ServiceCenter提供一個(gè)界面化的多集群管理服務(wù)工具供管理員使用。在極端情況下,如果主集群徹底癱瘓,我們可以通過(guò)強(qiáng)制切換的方式把所有業(yè)務(wù)快速切換到從集群。同時(shí)觸發(fā)主備數(shù)據(jù)同步校驗(yàn)機(jī)制,后臺(tái)會(huì)自動(dòng)在主集群狀態(tài)恢復(fù)后將校驗(yàn)主從集群的數(shù)~29~京東大數(shù)據(jù)技術(shù)白皮書(shū)據(jù)一致性并同步數(shù)據(jù),保證數(shù)據(jù)安全性。圖10:HBase服務(wù)集群(3)多租戶分組隔離HBase默認(rèn)的使用方式是一個(gè)業(yè)務(wù)一個(gè)集群,資源利用率低,維護(hù)成本高。也可以多個(gè)業(yè)務(wù)共用一個(gè)集群,但是會(huì)有資源競(jìng)爭(zhēng)和故障擴(kuò)散等問(wèn)題。例如,一個(gè)業(yè)務(wù)出現(xiàn)異常可能會(huì)影響整個(gè)集群的可用性?;谝陨系脑颍覀円肓薍Base2.0的rs分組功能(目前官方仍然是beta版)并進(jìn)行了改進(jìn)完善,實(shí)現(xiàn)了將HBase集群動(dòng)態(tài)切分成多個(gè)分組,每個(gè)分組中有多臺(tái)物理服務(wù)器(圖11)。這樣既能將業(yè)務(wù)進(jìn)行物理隔離防止資源競(jìng)爭(zhēng)和故障擴(kuò)散,還能在618和11.11大促時(shí)期動(dòng)態(tài)調(diào)整集群資源,提升硬件資源利用率。~30~京東大數(shù)據(jù)技術(shù)白皮書(shū)圖11:Hbase多租戶隔離(4)SQL查詢?cè)腍Base只提供key-value查詢和范圍掃描。我們引入了開(kāi)源的phoenix組件,并進(jìn)行了安全認(rèn)證、性能和穩(wěn)定性提升等工作,可以支持標(biāo)準(zhǔn)sql查詢,例如創(chuàng)建二級(jí)索引、多表join查詢、sql子查詢、聚合查詢、創(chuàng)建分桶表、分頁(yè)查詢等功能,如圖12所示。這使得HBase功能更加豐富,不僅支持實(shí)時(shí)查詢,還能做實(shí)時(shí)統(tǒng)計(jì)分析,適應(yīng)更復(fù)雜的應(yīng)用場(chǎng)景。~31~京東大數(shù)據(jù)技術(shù)白皮書(shū)圖12:支持SQL查詢除以上外,我們還做了其他重要優(yōu)化改進(jìn),如使用G1垃圾回收器提升JVM性能、支持在線不停機(jī)跨版本數(shù)據(jù)遷移等功能,將主備replication同步速度提升到分鐘級(jí)別,archive歸檔清理性能提升10%以上。隨著容器技術(shù)的成熟,我們正在嘗試Hbase的容器化部署,以便實(shí)現(xiàn)更好的資源隔離并提升資源使用率。由于承載的數(shù)據(jù)量越來(lái)越大,Hbase提供的均衡策略已經(jīng)不能滿足業(yè)務(wù)需求,我們也在著手進(jìn)行balance均衡策略的調(diào)整,并使用NettyRpcClient來(lái)改造PRC客戶端性能,提升數(shù)據(jù)寫入的速度。在集群硬件方面,我們部署了SAS和SSD磁盤混合方案,從目前的壓測(cè)效果看比較好,將來(lái)會(huì)逐步上線。~32~京東大數(shù)據(jù)技術(shù)白皮書(shū)2.3.3冷熱數(shù)據(jù)管理隨著數(shù)據(jù)量的不斷增長(zhǎng)積累,數(shù)據(jù)也會(huì)呈現(xiàn)出訪問(wèn)熱度不同的明顯差異。我們將數(shù)據(jù)訪問(wèn)頻率高的數(shù)據(jù)稱為“熱”數(shù)據(jù),訪問(wèn)頻率低的數(shù)據(jù)稱為“冷”數(shù)據(jù)。如果無(wú)論數(shù)據(jù)冷熱情況,都采用同樣的存儲(chǔ)策略,是對(duì)集群資源的一種浪費(fèi)。因此,需要根據(jù)數(shù)據(jù)冷熱程度對(duì)HDFS存儲(chǔ)系統(tǒng)進(jìn)行優(yōu)化。京東大數(shù)據(jù)針對(duì)冷熱數(shù)據(jù)設(shè)計(jì)了較完整的機(jī)制,主要包括:冷數(shù)據(jù)的規(guī)則配置管理員可配置冷數(shù)據(jù)的掃描范圍,對(duì)不同集群、ns、用戶可靈活配置不同的掃描路徑,歸檔周期以及歸檔路徑。同時(shí)為了配合業(yè)務(wù)使用,可以允許業(yè)務(wù)用戶根據(jù)業(yè)務(wù)需要對(duì)部分?jǐn)?shù)據(jù)設(shè)置白名單進(jìn)行保護(hù),避免被冷備份。冷數(shù)據(jù)的掃描和備份利用配置表對(duì)HDFS存儲(chǔ)數(shù)據(jù)一次性進(jìn)行正則匹配,獲取想要的冷數(shù)據(jù)列表。被掃描出的冷數(shù)據(jù)被遷移到冷數(shù)據(jù)集群,進(jìn)行降副本操作和隔離操作,并釋放原有集群的存儲(chǔ)資源。冷數(shù)據(jù)的恢復(fù)和刪除如有業(yè)務(wù)需要對(duì)冷數(shù)據(jù)進(jìn)行恢復(fù),可申請(qǐng)恢復(fù)冷數(shù)據(jù)。經(jīng)過(guò)批復(fù)后數(shù)據(jù)將很快從冷集群恢復(fù)至正常環(huán)境。若冷集群歸檔后一定時(shí)間內(nèi)無(wú)恢復(fù)申請(qǐng),將刪除冷數(shù)據(jù)并釋放資源到大集群。冷數(shù)據(jù)的統(tǒng)計(jì)分析報(bào)告大數(shù)據(jù)平臺(tái)同時(shí)提供從不同角度對(duì)冷數(shù)據(jù)歸檔信息進(jìn)行統(tǒng)~33~京東大數(shù)據(jù)技術(shù)白皮書(shū)計(jì)分析并展示,更直觀地反映冷數(shù)據(jù)當(dāng)前的歸檔情況,方便用戶查看。2.4離線計(jì)算環(huán)境大數(shù)據(jù)離線計(jì)算為多種應(yīng)用場(chǎng)景提供基礎(chǔ)計(jì)算功能,其特點(diǎn)為:數(shù)據(jù)量巨大且保存時(shí)間長(zhǎng);在大量數(shù)據(jù)上進(jìn)行復(fù)雜的批量運(yùn)算,能夠方便地查詢批量計(jì)算的結(jié)果;數(shù)據(jù)在計(jì)算之前已經(jīng)完全到位,不會(huì)發(fā)生變化。京東大數(shù)據(jù)支持Hiv、Pig、SparkSQL、Presto、MapReduce等計(jì)算工具,并支持Alluxio的存儲(chǔ)架構(gòu),形成了離線計(jì)算引擎,如圖13所示。圖13:離線計(jì)算架構(gòu)JDHive計(jì)算引擎服務(wù)~34~京東大數(shù)據(jù)技術(shù)白皮書(shū)JDHive是基于HIVE社區(qū)版本深度定制的大數(shù)據(jù)查詢引擎,它是目前業(yè)內(nèi)能夠支撐GB/TB/PB級(jí)數(shù)據(jù)倉(cāng)庫(kù)的通用解決方案之一,支持將sql語(yǔ)句轉(zhuǎn)換為MapReduce任務(wù),能夠快速處理海量數(shù)據(jù)計(jì)算,有效降低分布式計(jì)算模型的使用成本。JDHive為用戶提供基于社區(qū)版的所有功能,同時(shí)進(jìn)一步推出一系列高級(jí)特性解決不同業(yè)務(wù)場(chǎng)景的需求,包括:元數(shù)據(jù)管理、審計(jì)日志管理、讀寫IO管理、UDF統(tǒng)一管理等功能。針對(duì)服務(wù)性能優(yōu)化,我們堅(jiān)持不斷試錯(cuò),不斷優(yōu)化,不斷打磨的原則,持續(xù)推動(dòng)著JDHive的進(jìn)化。如今京東大數(shù)據(jù)百分八十的業(yè)務(wù)都在使用JDHive提供的服務(wù)支持。JDSpark計(jì)算引擎服務(wù)JDSpark是京東大數(shù)據(jù)平臺(tái)對(duì)外開(kāi)放的核心計(jì)算引擎之一,旨在為高性能、迭代計(jì)算、時(shí)效性要求極高的場(chǎng)景服務(wù),同時(shí)針對(duì)部分具有研發(fā)能力較高的深度用戶提供SDK開(kāi)發(fā)功能。隨著京東業(yè)務(wù)的飛速增長(zhǎng),很多業(yè)務(wù)場(chǎng)景已經(jīng)無(wú)法接受基于磁盤批處理的MapReduce計(jì)算服務(wù),更傾向使用內(nèi)存進(jìn)行快速迭代計(jì)算,希望整體提升數(shù)據(jù)結(jié)果的時(shí)效性,我們的目標(biāo)是將JDSpark打造成基于內(nèi)存與SSD作為存儲(chǔ)迭代計(jì)算的框架,通過(guò)技術(shù)手段提升任務(wù)的時(shí)效性。ADHOC查詢服務(wù)我們針對(duì)ADHOC業(yè)務(wù)場(chǎng)景,提供實(shí)時(shí)查詢與預(yù)計(jì)算的兩種方式的查詢場(chǎng)景,分別使用Presto、Kylin計(jì)算引擎為用戶提供支~35~京東大數(shù)據(jù)技術(shù)白皮書(shū)持,基于YARN整合多種計(jì)算框架,優(yōu)化Presto的監(jiān)控和報(bào)警機(jī)制、PrestoCache的開(kāi)發(fā)、Orc優(yōu)化、Master的Docker化,提供自愈、報(bào)警、限流等功能。圖14和圖15展示了基于Presto提供的ADHoc查詢服務(wù)的技術(shù)架構(gòu)。圖14:PrestoOnYarn計(jì)算架構(gòu)我們同時(shí)支撐許多線上業(yè)務(wù)系統(tǒng)的查詢服務(wù),基于Yarn整合了Alluxio,提供Presto+Alluxio的組合,并通過(guò)增加Alluxio常用命令、優(yōu)化LRU置換內(nèi)存、支持hdfs同步校驗(yàn)(一致性)等將多種工具融合,提供靈活、高效的數(shù)據(jù)計(jì)算工具和數(shù)據(jù)查詢工~36~京東大數(shù)據(jù)技術(shù)白皮書(shū)具。圖15:Presto高可用架構(gòu)2.5實(shí)時(shí)計(jì)算環(huán)境盡管傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)的T+1(以天為計(jì)算周期對(duì)數(shù)據(jù)進(jìn)行批處理)機(jī)制一定程度上能滿足數(shù)據(jù)處理的日常需求,但是這種處理方式畢竟具有一定的滯后性,針對(duì)時(shí)效性要求更高(實(shí)時(shí)計(jì)算)的諸如618、雙11的實(shí)時(shí)大屏、實(shí)時(shí)預(yù)測(cè)、風(fēng)控預(yù)警等諸多場(chǎng)景,T+1的處理方式不免顯得有些力不從心。因此需要一種降低整個(gè)數(shù)據(jù)處理鏈路延遲的計(jì)算方式來(lái)彌補(bǔ)T+1計(jì)算的不足。京東大數(shù)據(jù)實(shí)時(shí)計(jì)算平臺(tái)(JRC)實(shí)現(xiàn)了計(jì)算過(guò)程的低延遲、~37~京東大數(shù)據(jù)技術(shù)白皮書(shū)高吞吐、計(jì)算結(jié)果的可復(fù)用和計(jì)算任務(wù)開(kāi)發(fā)簡(jiǎn)單化的目標(biāo)。采用復(fù)合事件模型構(gòu)建分布式流數(shù)據(jù)計(jì)算框架,功能易擴(kuò)展、部分容錯(cuò)、數(shù)據(jù)和狀態(tài)可監(jiān)控。JRC具有處理實(shí)時(shí)數(shù)據(jù)流的能力,同時(shí)將實(shí)時(shí)計(jì)算結(jié)果以服務(wù)的方式供業(yè)務(wù)系統(tǒng)調(diào)用,支撐業(yè)務(wù)團(tuán)隊(duì)的個(gè)性化需求,JRC平臺(tái)可以為智能營(yíng)銷、個(gè)性化推薦等應(yīng)用提供實(shí)時(shí)計(jì)算數(shù)據(jù),未來(lái)將提供更加智能化的實(shí)時(shí)計(jì)算服務(wù)。圖16展示了京東大數(shù)據(jù)實(shí)時(shí)計(jì)算平臺(tái)的技術(shù)架構(gòu)。圖16:實(shí)時(shí)計(jì)算平臺(tái)京東大數(shù)據(jù)實(shí)時(shí)計(jì)算環(huán)境由三個(gè)部分組成:JDQ實(shí)時(shí)數(shù)據(jù)總線JDQ是京東大數(shù)據(jù)平臺(tái)部基于Kafka打造的高吞吐量、低延遲、高可用的分布式生產(chǎn)、訂閱消息系統(tǒng),是大數(shù)據(jù)平臺(tái)的一項(xiàng)~38~京東大數(shù)據(jù)技術(shù)白皮書(shū)重要服務(wù)。針對(duì)京東的業(yè)務(wù)場(chǎng)景,我們對(duì)Kafka進(jìn)行了一系列的架構(gòu)改造,支持?jǐn)?shù)據(jù)讀寫分離,消費(fèi)切換銜接,跨機(jī)房災(zāi)備,對(duì)機(jī)房間傳輸進(jìn)行了流量管控,減少跨機(jī)房的流量傳輸,針對(duì)數(shù)據(jù)安全,我們對(duì)安全認(rèn)證和權(quán)限管理做了針對(duì)性的升級(jí)。JDQ在經(jīng)歷了多次618和雙十一的考驗(yàn)后,性能表現(xiàn)非常穩(wěn)定。準(zhǔn)實(shí)時(shí)數(shù)據(jù)倉(cāng)庫(kù)將數(shù)據(jù)倉(cāng)庫(kù)的ETL部分用實(shí)時(shí)采集技術(shù)替代離線抽取技術(shù),將傳統(tǒng)的T+1模式的數(shù)據(jù)倉(cāng)庫(kù)升級(jí)為T+0模式,用同一張Hive表同時(shí)滿足實(shí)時(shí)和離線用戶的使用需求,與線上最新數(shù)據(jù)狀態(tài)有不超過(guò)5分鐘的延遲,可以查詢每條數(shù)據(jù)的INSERT,UPDATE,DELETE變更軌跡。JRC實(shí)時(shí)計(jì)算平臺(tái)京東選擇Storm、SparkStreaming和Flink同時(shí)作為實(shí)時(shí)計(jì)算平臺(tái)的技術(shù)框架,用戶可以根據(jù)自己的情況選擇合適的框架來(lái)實(shí)現(xiàn)實(shí)時(shí)計(jì)算。Storm作為第一代增量計(jì)算的高速事件處理框架,它的毫秒級(jí)延遲滿足對(duì)延遲要求較高的場(chǎng)景。而SparkStreaming的有狀態(tài)計(jì)算、對(duì)延要遲求不高以及圖形操作、機(jī)器學(xué)習(xí)、SQL支持等特性恰恰是對(duì)Storm的完美補(bǔ)充。Flink的出現(xiàn)可以說(shuō)是以上框架優(yōu)點(diǎn)的集大成者。Flink支持Storm式的增量迭代和毫秒級(jí)延,遲吞吐量比Storm高,并且具有對(duì)迭代自動(dòng)優(yōu)化的功能,支持ExactlyOnce、狀態(tài)管理和窗口統(tǒng)計(jì),在迭代式數(shù)據(jù)處理上,~39~京東大數(shù)據(jù)技術(shù)白皮書(shū)更是比Spark更突出。在技術(shù)層面,實(shí)時(shí)計(jì)算平臺(tái)不是對(duì)開(kāi)源技術(shù)的照搬。我們汲取社區(qū)開(kāi)源框架的優(yōu)勢(shì),取長(zhǎng)補(bǔ)短,對(duì)開(kāi)源技術(shù)進(jìn)行二次開(kāi)發(fā)。產(chǎn)品層面,通過(guò)支持SQL引擎,提升用戶體驗(yàn),提高使用效率,降低用戶的學(xué)習(xí)成本,讓用戶通過(guò)SQL方式體驗(yàn)實(shí)時(shí)技術(shù)所帶來(lái)的魅力。鑒于Flink在技術(shù)架構(gòu)上的天然優(yōu)勢(shì)以及批流統(tǒng)一技術(shù)上的日趨完善,我們會(huì)逐步推動(dòng)Flink成為未來(lái)統(tǒng)一的、通用的大數(shù)據(jù)實(shí)時(shí)計(jì)算引擎。2.6機(jī)器學(xué)習(xí)環(huán)境京東在機(jī)器學(xué)習(xí)平臺(tái)已經(jīng)深耕多年。平臺(tái)依托于大數(shù)據(jù)底層先進(jìn)的基礎(chǔ)架構(gòu)設(shè)施,有效地將大數(shù)據(jù)平臺(tái)的中計(jì)算、存儲(chǔ)、調(diào)度等系統(tǒng)協(xié)同起來(lái)。它可以為用戶提供數(shù)據(jù)標(biāo)注、數(shù)據(jù)清洗、數(shù)據(jù)建模、模型上線等一站式服務(wù)。依托這個(gè)平臺(tái),用戶可以輕松地在PB級(jí)數(shù)據(jù)上快速進(jìn)行算法的研究和落地。到目前為止,京東大數(shù)據(jù)的機(jī)器學(xué)習(xí)平臺(tái)廣泛應(yīng)用于供應(yīng)鏈、用戶畫(huà)像、無(wú)界零售等領(lǐng)域。京東的機(jī)器學(xué)習(xí)平臺(tái)由基礎(chǔ)架構(gòu)層、工具層、任務(wù)調(diào)度層、算法層以及API層組成,架構(gòu)圖如圖17所示。~40~京東大數(shù)據(jù)技術(shù)白皮書(shū)圖17:機(jī)器學(xué)習(xí)平臺(tái)基礎(chǔ)架構(gòu)層京東的機(jī)器學(xué)習(xí)平臺(tái)擁有調(diào)度大規(guī)模異構(gòu)計(jì)算資源的能力。為了滿足不同的機(jī)器學(xué)習(xí)算法的計(jì)算需求,基礎(chǔ)架構(gòu)層能同時(shí)支持CPU、GPU、高速存儲(chǔ)設(shè)備、高速網(wǎng)絡(luò)設(shè)備等不同硬件資源調(diào)度。借助虛擬化技術(shù),機(jī)器學(xué)習(xí)平臺(tái)可以將同一個(gè)硬件設(shè)備在不同的任務(wù)中進(jìn)行資源共享,有效地提高了硬件資源的利用率。高性能資源調(diào)度器能幫助不同的數(shù)據(jù)建模工具快速找到合適的計(jì)算資源,并且部署分發(fā)計(jì)算任務(wù),管理任務(wù)狀態(tài),按照約定的協(xié)議對(duì)分布式的任務(wù)進(jìn)行錯(cuò)誤恢復(fù)。工具層工具層給用戶提供了機(jī)器學(xué)習(xí)算法研發(fā)的一站式服務(wù)。用戶可以通過(guò)離線和實(shí)時(shí)數(shù)據(jù)處理平臺(tái)進(jìn)行海量數(shù)據(jù)的處理和分析,~41~京東大數(shù)據(jù)技術(shù)白皮書(shū)從數(shù)據(jù)中找到業(yè)務(wù)的價(jià)值。我們圍繞著統(tǒng)計(jì)學(xué)習(xí)和深度學(xué)習(xí)等領(lǐng)域,結(jié)合京東的基礎(chǔ)架構(gòu),對(duì)這些建模工具進(jìn)行了大量的改進(jìn)和優(yōu)化,使其充分適應(yīng)京東的計(jì)算環(huán)境,提升其算法的訓(xùn)練速度和訓(xùn)練數(shù)據(jù)集的規(guī)模。與此同時(shí),機(jī)器學(xué)習(xí)平臺(tái)還提供了超參數(shù)優(yōu)化等功能。依靠這些功能,用戶可以快速在海量數(shù)據(jù)上構(gòu)建上千億維度的模型。為了進(jìn)一步降低模型的落地門檻,京東的機(jī)器學(xué)習(xí)平臺(tái)還提供了統(tǒng)一的serving平臺(tái)。用戶可以在不需要做任何系統(tǒng)開(kāi)發(fā)的情況下,將算法模型變成穩(wěn)定高效的服務(wù)接口。serving平臺(tái)除了根據(jù)算法模型的特點(diǎn)進(jìn)行了大量的硬件層面和軟件層面的性能優(yōu)化之外,還給用戶提供了統(tǒng)一監(jiān)控報(bào)警、負(fù)載均衡、模型版本管理、多版本A/B測(cè)試等功能。用戶還可以借助跨平臺(tái)SDK對(duì)模型進(jìn)行壓縮和裁剪,以便應(yīng)用于移動(dòng)端及IOT設(shè)備之上。任務(wù)調(diào)度層隨著近幾年人工智能技術(shù)的快速發(fā)展,算法模型精度提升的同時(shí),模型的復(fù)雜性也在不斷地增加,用戶往往不能只依賴單一工具或單一任務(wù)來(lái)達(dá)到目標(biāo)。為了解決這一痛點(diǎn),京東的機(jī)器學(xué)習(xí)平臺(tái)利用任務(wù)調(diào)度系統(tǒng)將不同的工具連接到一起,幫助用戶完成復(fù)雜的DAG任務(wù)和定時(shí)任務(wù),降低用戶的使用難度。算法層京東的機(jī)器學(xué)習(xí)平臺(tái)內(nèi)置了上百個(gè)經(jīng)過(guò)優(yōu)化的算法模塊。這些算法模塊覆蓋了視覺(jué)、語(yǔ)音、自然語(yǔ)言、統(tǒng)計(jì)分析、圖運(yùn)算、~42~京東大數(shù)據(jù)技術(shù)白皮書(shū)特征處理等領(lǐng)域。每一個(gè)模塊都采用了統(tǒng)一的數(shù)據(jù)接口,同時(shí)提供了靈活的參數(shù)供用戶進(jìn)行調(diào)整。用戶可以通過(guò)命令行或者UI交互將不同的算法模塊鏈接到一起來(lái)完成一個(gè)復(fù)雜的機(jī)器學(xué)習(xí)任務(wù)。API層京東的機(jī)器學(xué)習(xí)平臺(tái)還為用戶提供了豐富的人工智能API服務(wù),如人臉識(shí)別、文字識(shí)別、評(píng)論分析等。用戶甚至不需要進(jìn)行任何模型開(kāi)發(fā)就可以直接使用。2.7任務(wù)管理和調(diào)度京東大數(shù)據(jù)應(yīng)用在各個(gè)業(yè)務(wù)當(dāng)中,大數(shù)據(jù)平臺(tái)上每天運(yùn)行的數(shù)據(jù)處理任務(wù)超過(guò)30萬(wàn)個(gè)。這些任務(wù)要完成各種復(fù)雜的邏輯運(yùn)算,任務(wù)之間有關(guān)聯(lián)、有順序、有依賴,要滿足不同條件的調(diào)度。京東分布式調(diào)度平臺(tái)很好地解決了這些問(wèn)題。如圖18所示,調(diào)度架構(gòu)基本分為以下幾個(gè)主要部分:NameNode、TaskNode、Web管理端和日志收集器。~43~京東大數(shù)據(jù)技術(shù)白皮書(shū)圖18:調(diào)度平臺(tái)基礎(chǔ)架構(gòu)圖NameNode作為控制節(jié)點(diǎn)主要負(fù)責(zé)將任務(wù)執(zhí)行命令發(fā)送給TaskNode,TaskNode會(huì)將任務(wù)真正執(zhí)行起來(lái),并將日志輸出到日志收集器,將結(jié)果返回到NameNode并寫入數(shù)據(jù)庫(kù),最終用戶通過(guò)瀏覽器打開(kāi)Web管理端查看、操作自己的任務(wù)。詳細(xì)功能如下:NameNodeNameNode是調(diào)度平臺(tái)的核心調(diào)度節(jié)點(diǎn),負(fù)責(zé)任務(wù)實(shí)例化、掃描符合執(zhí)行條件的實(shí)例、檢查依賴、分配任務(wù)執(zhí)行節(jié)點(diǎn)、處理任務(wù)執(zhí)行結(jié)果、管理TaskNode節(jié)點(diǎn)等核心工作。目前NameNode部分支持Alive-Alive方式的高可用,并可水平擴(kuò)展。TaskNodeNameNode按照一定的分配策略將任務(wù)分配到具體TaskNode后,TaskNode會(huì)主動(dòng)從NameNode領(lǐng)取任務(wù),并根據(jù)任務(wù)配置啟動(dòng)任務(wù)執(zhí)行代理器(TaskExec)。代理器會(huì)調(diào)起任務(wù)進(jìn)~44~京東大數(shù)據(jù)技術(shù)白皮書(shū)程執(zhí)行。TaskNode會(huì)監(jiān)聽(tīng)進(jìn)程執(zhí)行結(jié)果并反饋給NameNode,同時(shí)接收任務(wù)日志輸出流發(fā)送到JDQ。為防止大量任務(wù)因?yàn)橘Y源不足而執(zhí)行失敗,節(jié)點(diǎn)可設(shè)置同時(shí)執(zhí)行任務(wù)數(shù)(并發(fā)數(shù))來(lái)避免同時(shí)執(zhí)行大量任務(wù),另一方面通過(guò)cgroup實(shí)現(xiàn)節(jié)點(diǎn)級(jí)別和任務(wù)基本的資源隔離,保護(hù)機(jī)器和TaskNode進(jìn)程。(1)節(jié)點(diǎn)級(jí)別資源隔離節(jié)點(diǎn)可設(shè)置最大可用CPU和內(nèi)存,設(shè)置成功之后該節(jié)點(diǎn)上所有執(zhí)行的任務(wù)使用的資源總和不會(huì)超過(guò)配置的值。(2)任務(wù)基本資源隔離單個(gè)任務(wù)可以單獨(dú)設(shè)置任務(wù)要使用的CPU和內(nèi)存。任務(wù)執(zhí)行過(guò)程中使用的資源不會(huì)超過(guò)配置的值。Web管理端Web管理端為用戶提供了操作界面。用戶可通過(guò)UI便捷地實(shí)現(xiàn)創(chuàng)建、修改、終止、重跑、補(bǔ)錄等功能,極大簡(jiǎn)化用戶操作。日志收集器日志收集器是一個(gè)JRC任務(wù),從JDQ消費(fèi)任務(wù)日志并寫入Hbase供管理端查詢。京東大數(shù)據(jù)分布式調(diào)度平臺(tái)的技術(shù)特點(diǎn)包括:實(shí)例當(dāng)任務(wù)到達(dá)預(yù)定的執(zhí)行時(shí)間時(shí),會(huì)根據(jù)任務(wù)當(dāng)時(shí)的配置,生成一個(gè)任務(wù)實(shí)例。該實(shí)例實(shí)際上是當(dāng)時(shí)任務(wù)的一個(gè)快照。實(shí)例化時(shí)會(huì)將任務(wù)的時(shí)間參數(shù)、依賴等信息具體化。當(dāng)任務(wù)需要重新執(zhí)~45~京東大數(shù)據(jù)技術(shù)白皮書(shū)行時(shí),會(huì)按照當(dāng)時(shí)的實(shí)例來(lái)執(zhí)行,保證可重現(xiàn)當(dāng)時(shí)的場(chǎng)景。分配策略目前調(diào)度系統(tǒng)的TaskNode節(jié)點(diǎn)已超過(guò)800臺(tái),為了保證能將任務(wù)分配到合理的節(jié)點(diǎn)執(zhí)行,調(diào)度系統(tǒng)提供了多種策略,包括輪詢策略、并發(fā)數(shù)策略、機(jī)器資源策略等。調(diào)度系統(tǒng)中可以將多個(gè)TaskNode節(jié)點(diǎn)合并成一個(gè)虛擬節(jié)點(diǎn),每個(gè)虛擬節(jié)點(diǎn)可以單獨(dú)配置分配策略。(1)輪詢策略輪詢策略是最簡(jiǎn)單的策略,將任務(wù)輪流分配給虛擬節(jié)點(diǎn)中的TaskNode節(jié)點(diǎn)。(2)并發(fā)數(shù)策略每個(gè)TaskNode節(jié)點(diǎn)可以設(shè)置可同時(shí)運(yùn)行的任務(wù)數(shù)上限,我們稱為并發(fā)數(shù)。選擇該策略時(shí),會(huì)根據(jù)“并發(fā)度=節(jié)點(diǎn)上當(dāng)前在執(zhí)行任務(wù)數(shù)/節(jié)點(diǎn)并發(fā)數(shù)”的結(jié)果排序,選擇節(jié)點(diǎn)并發(fā)度小的節(jié)點(diǎn)執(zhí)行任務(wù)。(3)機(jī)器資源策略TaskNode節(jié)點(diǎn)會(huì)將節(jié)點(diǎn)目前機(jī)器的CPU和內(nèi)存信息上報(bào)到NameNode,選擇該策略時(shí),NameNode會(huì)選擇一個(gè)CPU和內(nèi)存使用最低的一個(gè)TaskNode節(jié)點(diǎn)來(lái)執(zhí)行任務(wù)。跨周期依賴任務(wù)上下游之間存在依賴,可以理解成為一個(gè)有向無(wú)環(huán)圖(DAG圖)。目前調(diào)度平臺(tái)可以很靈活地配置任務(wù)之間的關(guān)系,~46~京東大數(shù)據(jù)技術(shù)白皮書(shū)比如任務(wù)A執(zhí)行成功后才能將任務(wù)B調(diào)用起來(lái)。任務(wù)A、B可以配置為每分鐘、每小時(shí)、每天、每周、每年等周期運(yùn)行。調(diào)度平臺(tái)會(huì)自動(dòng)計(jì)算任務(wù)A的周期執(zhí)行成功后才將B任務(wù)調(diào)起。為了更好地理解這個(gè)概念,下面我們用個(gè)具體的例子進(jìn)行描述。示例1:A是小時(shí)任務(wù),B是天任務(wù)。A任務(wù)24個(gè)周期全部執(zhí)行成功后,B任務(wù)才會(huì)被執(zhí)行;示例2:A是小時(shí)任務(wù),B是天任務(wù)??梢灾付闄z查A任務(wù)5點(diǎn)到12點(diǎn)之間的周期全部執(zhí)行成功后,B任務(wù)才會(huì)被執(zhí)行;示例3:A任務(wù)是天任務(wù),B任務(wù)是小時(shí)任務(wù)。A任務(wù)當(dāng)天(也可以指定為昨天、前天、某一天或某個(gè)日期段)執(zhí)行成功后,B任務(wù)的24個(gè)周期才可以依次被執(zhí)行。示例4:A任務(wù)是天任務(wù),B任務(wù)是每月運(yùn)行一次。A任務(wù)當(dāng)月(也可以為上月或指定上月10號(hào)到當(dāng)月10號(hào))周期執(zhí)行成功后,B任務(wù)才會(huì)被執(zhí)行。諸如此類的場(chǎng)景,在調(diào)度平臺(tái)中被稱為跨周期依賴。數(shù)據(jù)依賴調(diào)度平臺(tái)還支持檢查某個(gè)HDFS目錄是否存在,來(lái)做為任務(wù)執(zhí)行前的判斷條件。比如某個(gè)部門通過(guò)自己的業(yè)務(wù)系統(tǒng)在HDFS產(chǎn)生了一份數(shù)據(jù),下游團(tuán)隊(duì)需要使用這份數(shù)據(jù)做離線計(jì)算分析,這可以讓業(yè)務(wù)系統(tǒng)把業(yè)務(wù)數(shù)據(jù)寫到HDFS某目錄,同時(shí)再生成一個(gè)ok或success(名字可以隨意指定)標(biāo)識(shí)文件,文件可允許為空。然后在調(diào)度平臺(tái)里設(shè)置檢查HDFS對(duì)應(yīng)路徑的ok或success~47~京東大數(shù)據(jù)技術(shù)白皮書(shū)文件,如果此文件不存在調(diào)度平臺(tái)會(huì)持續(xù)檢查,一旦發(fā)現(xiàn)此文件生成,下游任務(wù)就會(huì)馬上啟動(dòng)執(zhí)行。任務(wù)圖形化展現(xiàn)技術(shù)如何展示上千個(gè)任務(wù)的關(guān)系以及對(duì)任務(wù)進(jìn)行配置是個(gè)難點(diǎn)。調(diào)度系統(tǒng)利用graph和動(dòng)態(tài)圖形位置算法可支持上千個(gè)任務(wù)在界面中同時(shí)展現(xiàn)。主要包括:1、可以在圖中對(duì)任務(wù)進(jìn)行編輯、禁用、啟用的各種操作;2、圖形化配置技術(shù)可以方便直觀地看到整個(gè)任務(wù)的依賴情況;3、可以對(duì)整體任務(wù)依賴圖進(jìn)行放大、縮小、導(dǎo)出圖片等功能。用戶可以在圖形界面完成對(duì)于任務(wù)的所有屬性和依賴關(guān)系的配置。數(shù)據(jù)模板數(shù)據(jù)模板是指調(diào)度系統(tǒng)將相關(guān)的抽取數(shù)據(jù)和推送數(shù)據(jù)的邏輯固化到任務(wù)模板當(dāng)中,通過(guò)執(zhí)行固定的腳本,只需要通過(guò)簡(jiǎn)單的源數(shù)據(jù)信息和目標(biāo)數(shù)據(jù)信息的配置,就能實(shí)現(xiàn)不同數(shù)據(jù)庫(kù)之間數(shù)據(jù)抽取和推送。調(diào)度系統(tǒng)會(huì)動(dòng)態(tài)獲取抽數(shù)的參數(shù),執(zhí)行抽取和推送數(shù)據(jù)的邏輯。腳本倉(cāng)庫(kù)和任務(wù)動(dòng)態(tài)執(zhí)行技術(shù)調(diào)度系統(tǒng)為python、shell和zip包等腳本提供包括存儲(chǔ)、版本更新、下載腳本的倉(cāng)庫(kù)服務(wù)。倉(cāng)庫(kù)采用多hbase集群保存腳本信息,可以保證當(dāng)集群出現(xiàn)問(wèn)題的時(shí)候可以動(dòng)態(tài)地切換到另外一個(gè)集群當(dāng)中,保證腳本的安全性和可用性。任務(wù)執(zhí)行的時(shí)候調(diào)度會(huì)動(dòng)態(tài)地下載和更新腳本信息,保證每~48~京東大數(shù)據(jù)技術(shù)白皮書(shū)個(gè)任務(wù)執(zhí)行的腳本都是唯一的,并且是最新的,可有效提高任務(wù)的準(zhǔn)確率和安全性。京東大數(shù)據(jù)的任務(wù)調(diào)度和管理已基于Kubernetes進(jìn)行了升級(jí)和改造。升級(jí)后可由Kubernetes實(shí)現(xiàn)資源的統(tǒng)一管理和分配,提高了服務(wù)器的利用率,并實(shí)現(xiàn)適應(yīng)業(yè)務(wù)需求變化的彈性,能夠?qū)崿F(xiàn)不同業(yè)務(wù)間的資源混用,進(jìn)一步提高跨業(yè)務(wù)的服務(wù)器利用率。容器包含了運(yùn)行環(huán)境和可執(zhí)行程序,可以跨平臺(tái)和主機(jī)使用,使用鏡像管理任務(wù)代理,能夠?qū)崿F(xiàn)標(biāo)準(zhǔn)化應(yīng)用發(fā)布,方便持續(xù)集成和測(cè)試。2.8資源監(jiān)控和運(yùn)維管理萬(wàn)臺(tái)規(guī)模的集群,資源監(jiān)控和運(yùn)維體系變得非常重要,京東大數(shù)據(jù)平臺(tái)實(shí)現(xiàn)了對(duì)集群資源的全方位監(jiān)控,并研發(fā)了自動(dòng)部署系統(tǒng)和相關(guān)的集群運(yùn)維規(guī)范,保障了集群的可靠運(yùn)行。2.8.1統(tǒng)一監(jiān)控監(jiān)控系統(tǒng)是大數(shù)據(jù)平臺(tái)的一個(gè)重要組成部分。它采集被監(jiān)控的物理機(jī)器和其上運(yùn)行的軟件系統(tǒng),分析時(shí)間序列數(shù)據(jù),產(chǎn)生報(bào)警信號(hào)并通知相關(guān)系統(tǒng)負(fù)責(zé)人。京東大數(shù)據(jù)平臺(tái)監(jiān)控實(shí)現(xiàn)了對(duì)調(diào)度系統(tǒng)、集群任務(wù)管理、集群存儲(chǔ)資源、機(jī)房網(wǎng)絡(luò)專線、全集群服務(wù)器資源的全方位多維度統(tǒng)一監(jiān)控體系,并且實(shí)現(xiàn)了電話、短信、郵件以及其它IM的通~49~京東大數(shù)據(jù)技術(shù)白皮書(shū)知模式。統(tǒng)一監(jiān)控系統(tǒng)綜合考慮功能和穩(wěn)定性,選擇了Prometheus。該系統(tǒng)是一個(gè)開(kāi)源的監(jiān)控報(bào)警工具集,我們通過(guò)對(duì)其進(jìn)行架構(gòu)和功能上的優(yōu)化,完成平臺(tái)全方位的監(jiān)控和告警功能。統(tǒng)一監(jiān)控系統(tǒng)的架構(gòu)如圖19所示。整個(gè)系統(tǒng)分為4個(gè)部分:信號(hào)采集、信號(hào)存儲(chǔ)、報(bào)警、信息展示。圖19:統(tǒng)一監(jiān)控平臺(tái)架構(gòu)信號(hào)采集對(duì)于長(zhǎng)時(shí)間存活的監(jiān)控目標(biāo),按照約定的格式,通過(guò)HTTP導(dǎo)出信息,系統(tǒng)會(huì)按照設(shè)定的時(shí)間間隔采集信息。對(duì)于短時(shí)的任務(wù),需要在退出時(shí)將信息交給PushGateway,由它傳遞給系統(tǒng)。信號(hào)存儲(chǔ)~50~京東大數(shù)據(jù)技術(shù)白皮書(shū)Prometheus集群采用樹(shù)狀結(jié)構(gòu)部署。葉子節(jié)點(diǎn)會(huì)存儲(chǔ)一定時(shí)間內(nèi)的數(shù)據(jù)。父節(jié)點(diǎn)負(fù)責(zé)查詢。數(shù)據(jù)還會(huì)旁路一份給OpenTSDB,這是全量數(shù)據(jù),用于信息的展示和數(shù)據(jù)挖掘。報(bào)警采集后的序列,按照PromQL語(yǔ)言進(jìn)行加工,提取有用信息,包括聚集、過(guò)濾、集合運(yùn)算、計(jì)算分位數(shù)、排序等操作。提取后的報(bào)警信息通過(guò)指定的接口交給AlertManager。它對(duì)報(bào)警信息進(jìn)行合并、抑制、分組后再路由給正確的接受者,避免了重復(fù)信息的發(fā)送。接受信息的方式可以是電話、郵件、短信和即時(shí)通信工具。信息展示監(jiān)控平臺(tái)可以在Prometheus節(jié)點(diǎn)進(jìn)行簡(jiǎn)單的信息查詢和展示,也可以在Grafana進(jìn)行全面細(xì)致的展示。我們對(duì)于采集的信號(hào)進(jìn)行了分層,如圖20所示。信號(hào)分為5層:機(jī)器、存儲(chǔ)、調(diào)度、計(jì)算框架、業(yè)務(wù)。分層的目的是為了隔離,便于不同層次的獨(dú)立擴(kuò)展。當(dāng)需要擴(kuò)展的時(shí)候,相應(yīng)的監(jiān)控機(jī)器按照存儲(chǔ)和計(jì)算需求模塊化部署。物理層包括機(jī)器硬件信息,監(jiān)控這些資源的使用是否在合理的范圍內(nèi),同時(shí)還監(jiān)控操作系統(tǒng)的狀態(tài)。存儲(chǔ)、調(diào)度和計(jì)算框架是操作系統(tǒng)之上的軟件服務(wù),具體內(nèi)容如圖20所示。監(jiān)控的指標(biāo)大致包括延時(shí)、吞吐、錯(cuò)誤率、飽和程度,以及服務(wù)特定的指標(biāo)。業(yè)務(wù)層的監(jiān)控指標(biāo)由平臺(tái)的應(yīng)用方來(lái)決定。此外,對(duì)于采集的信號(hào),使用了統(tǒng)一的命名規(guī)~51~京東大數(shù)據(jù)技術(shù)白皮書(shū)范,便于管理和維護(hù)。2.8.2集群運(yùn)維京東大數(shù)據(jù)平臺(tái)通過(guò)自主研發(fā)服務(wù)器資產(chǎn)管理系統(tǒng)、自動(dòng)部署系統(tǒng)、監(jiān)控系統(tǒng),滿足了對(duì)現(xiàn)有40000臺(tái)以上規(guī)模服務(wù)器以及應(yīng)用軟件的高效管理。服務(wù)器資產(chǎn)管理系統(tǒng)作為整個(gè)平臺(tái)運(yùn)維的核心模塊,維護(hù)了大數(shù)據(jù)平臺(tái)所有服務(wù)器的配置信息、機(jī)房信息、應(yīng)用角色信息,并提供了對(duì)外以頁(yè)面、API形式的增刪改查,完成了與各個(gè)系統(tǒng)之間的數(shù)據(jù)打通,避免了外部系統(tǒng)進(jìn)行角色變更帶來(lái)的人為二次維護(hù),保證了數(shù)據(jù)的一致性及準(zhǔn)確性。自動(dòng)部署系統(tǒng)~52~京東大數(shù)據(jù)技術(shù)白皮書(shū)自動(dòng)部署系統(tǒng)實(shí)現(xiàn)了對(duì)大數(shù)據(jù)平臺(tái)軟件的統(tǒng)一管理工作,從軟件打包、配置文件修改到線上執(zhí)行一套流程完成,通過(guò)與服務(wù)器資產(chǎn)管理系統(tǒng)的打通完成了通過(guò)角色的方式進(jìn)行集群管理,并且針對(duì)集群各個(gè)組件研發(fā)了針對(duì)性的功能管理頁(yè)面。自動(dòng)部署系統(tǒng)通過(guò)整合流程管理和開(kāi)發(fā)自定義通用上線模塊,打通了統(tǒng)一服務(wù)器控制系統(tǒng)以及實(shí)現(xiàn)P2P+MD5傳輸校驗(yàn)、回調(diào)結(jié)果驗(yàn)證功能,完成了線上運(yùn)維的時(shí)效性、準(zhǔn)確性、安全性的規(guī)范操作。監(jiān)控系統(tǒng)通過(guò)與自動(dòng)部署系統(tǒng)、服務(wù)器資產(chǎn)管理系統(tǒng)全鏈路打通,實(shí)現(xiàn)了角色變更告警規(guī)則自動(dòng)修正、告警自動(dòng)觸發(fā)預(yù)先配置好的應(yīng)急處理模塊,滿足大數(shù)據(jù)平臺(tái)的自動(dòng)化、半自動(dòng)化運(yùn)維效率。大數(shù)據(jù)平臺(tái)建制了完善的運(yùn)維團(tuán)隊(duì),從數(shù)據(jù)運(yùn)維、數(shù)據(jù)運(yùn)營(yíng)、各組件運(yùn)維到系統(tǒng)運(yùn)維均有專業(yè)人員負(fù)責(zé),在制定標(biāo)準(zhǔn)運(yùn)維規(guī)范的同時(shí)各司其職,保障了整個(gè)大數(shù)據(jù)平臺(tái)的穩(wěn)定運(yùn)行。~53~京東大數(shù)據(jù)技術(shù)白皮書(shū)3京東大數(shù)據(jù)的數(shù)據(jù)管理數(shù)據(jù)管理是構(gòu)建一個(gè)統(tǒng)一的、高可用的、服務(wù)完善的數(shù)據(jù)環(huán)境的基本保障。企業(yè)通過(guò)建立良好的數(shù)據(jù)管理體系,完成對(duì)數(shù)據(jù)資產(chǎn)的管理、優(yōu)化和利用,建立常態(tài)化的數(shù)據(jù)管控機(jī)制,以應(yīng)對(duì)廣泛的數(shù)據(jù)應(yīng)用需求,保障數(shù)據(jù)質(zhì)量、安全,支撐企業(yè)的智能決策應(yīng)用。如圖21所示,我們從數(shù)據(jù)架構(gòu)設(shè)計(jì)、數(shù)據(jù)資產(chǎn)管理、數(shù)據(jù)安全管理、統(tǒng)一業(yè)務(wù)指標(biāo)、數(shù)據(jù)服務(wù)管理等五個(gè)方面構(gòu)建了數(shù)據(jù)管理框架,通過(guò)組織保障、規(guī)范流程、技術(shù)創(chuàng)新完成數(shù)據(jù)管理的目標(biāo)。圖21:數(shù)據(jù)管理框架~54~京東大數(shù)據(jù)技術(shù)白皮書(shū)3.1數(shù)據(jù)架構(gòu)設(shè)計(jì)3.1.1數(shù)據(jù)主題主題是對(duì)業(yè)務(wù)數(shù)據(jù)的一種抽象,是在較高層次上對(duì)京東信息系統(tǒng)中的數(shù)據(jù)進(jìn)行歸納、整理、綜合、歸類和分析利用的一個(gè)抽象概念。面向主題的數(shù)據(jù)組織和存儲(chǔ)包含兩個(gè)方面:一是根據(jù)業(yè)務(wù)的特點(diǎn)來(lái)抽象出主題。二是根據(jù)源系統(tǒng)業(yè)務(wù)數(shù)據(jù)的內(nèi)容確定每個(gè)主題所包含的數(shù)據(jù)內(nèi)容。分析得出的數(shù)據(jù)主題是對(duì)分析對(duì)象數(shù)據(jù)的一個(gè)完整并且一致的描述,能刻畫(huà)各個(gè)分析對(duì)象所涉及的企業(yè)數(shù)據(jù)。我們對(duì)京東所有業(yè)務(wù)數(shù)據(jù)進(jìn)行了逐一梳理,得到京東的數(shù)據(jù)主題如圖22所示。圖22:數(shù)據(jù)主題域劃分~55~京東大數(shù)據(jù)技術(shù)白皮書(shū)3.1.2數(shù)據(jù)模型數(shù)據(jù)模型設(shè)計(jì)要充分考慮性能、可用性和可維護(hù)性等。定義良好的數(shù)據(jù)模型可以反映業(yè)務(wù)模式的本質(zhì),滿足各類業(yè)務(wù)應(yīng)用的分析需要,確保為業(yè)務(wù)需求提供全面、一致、完整的高質(zhì)量數(shù)據(jù)。京東大數(shù)據(jù)平臺(tái)設(shè)計(jì)的數(shù)據(jù)模型層次如圖23所示,數(shù)據(jù)層次的說(shuō)明如表1所述。圖23:數(shù)據(jù)模型序數(shù)據(jù)架構(gòu)層簡(jiǎn)稱號(hào)次數(shù)據(jù)層次用途簡(jiǎn)述1數(shù)據(jù)緩沖層BDM源業(yè)務(wù)系統(tǒng)數(shù)據(jù)的快照,保存細(xì)節(jié)數(shù)據(jù),按天保存2基礎(chǔ)數(shù)據(jù)層FDM按業(yè)務(wù)概念組織細(xì)節(jié)數(shù)據(jù),并進(jìn)行~56~京東大數(shù)據(jù)技術(shù)白皮書(shū)名稱、代碼等標(biāo)準(zhǔn)化處理,同時(shí)對(duì)表進(jìn)行標(biāo)準(zhǔn)化處理。3通用數(shù)據(jù)層GDM根據(jù)京東核心業(yè)務(wù)價(jià)值鏈按照星型模型或雪花模型設(shè)計(jì)方式建設(shè)的最細(xì)業(yè)務(wù)粒度匯總層。在本層需要進(jìn)行度量與維度的標(biāo)準(zhǔn)化,保證度量數(shù)據(jù)的唯一性。4聚合數(shù)據(jù)層ADM根據(jù)不同的業(yè)務(wù)需求采用星型或雪花型模型設(shè)計(jì)方法構(gòu)建的數(shù)據(jù)匯總層5維度層DIM維度是對(duì)具體分析對(duì)象的分析角度,維度要具備豐富的屬性,歷史信息的可追溯性,對(duì)通用的維表要保持一致性。表1:數(shù)據(jù)模型的層次通過(guò)設(shè)計(jì)不同的數(shù)據(jù)層次和數(shù)據(jù)匯總粒度,可以滿足不同的業(yè)務(wù)應(yīng)用的需求,提高數(shù)據(jù)的可用性。3.2數(shù)據(jù)資產(chǎn)管理京東作為電商行業(yè)的標(biāo)桿企業(yè),有完整的倉(cāng)儲(chǔ)、物流、營(yíng)銷、交、易用戶、售后、金融等全鏈路數(shù)據(jù),經(jīng)過(guò)多年的沉淀已經(jīng)形成了寶貴的資產(chǎn)。數(shù)據(jù)資產(chǎn)管理的目的,就是強(qiáng)化數(shù)據(jù)的管理運(yùn)~57~京東大數(shù)據(jù)技術(shù)白皮書(shū)營(yíng)能力,提高數(shù)據(jù)質(zhì)量,更好地實(shí)現(xiàn)大數(shù)據(jù)賦能。數(shù)據(jù)資產(chǎn)管理從數(shù)據(jù)資產(chǎn)盤點(diǎn)出發(fā),厘清數(shù)據(jù)之間的關(guān)系,建立數(shù)據(jù)資產(chǎn)管控的標(biāo)準(zhǔn)和體系,實(shí)現(xiàn)京東全域數(shù)據(jù)的資產(chǎn)地圖,為數(shù)據(jù)進(jìn)一步的應(yīng)用和挖掘奠定基礎(chǔ)。3.2.1數(shù)據(jù)資產(chǎn)盤點(diǎn)盤活企業(yè)數(shù)據(jù)資產(chǎn),第一步就需要對(duì)已有數(shù)據(jù)進(jìn)行集中盤點(diǎn)。如圖24所示,通過(guò)盤點(diǎn)將散落的數(shù)據(jù)源信息匯聚到一起,在數(shù)據(jù)生產(chǎn)者和數(shù)據(jù)消費(fèi)者之間建立一個(gè)完整統(tǒng)一的數(shù)據(jù)地圖,標(biāo)識(shí)出有哪些數(shù)據(jù)可以消費(fèi)、如何進(jìn)行消費(fèi)。圖24:數(shù)據(jù)資產(chǎn)地圖通過(guò)資產(chǎn)盤點(diǎn),建立全公司的數(shù)據(jù)資產(chǎn)地圖,實(shí)現(xiàn)所有數(shù)據(jù)源的統(tǒng)一登記和展現(xiàn),消除因?yàn)樾畔⒉粚?duì)稱導(dǎo)致不同部門之間數(shù)據(jù)的重復(fù)存儲(chǔ)和抓取,共同完善底層數(shù)據(jù)資源擴(kuò)充和共享。~58~京東大數(shù)據(jù)技術(shù)白皮書(shū)3.2.2元數(shù)據(jù)管理數(shù)據(jù)分析師或BI人員每天都要與大量的數(shù)據(jù)模型打交道,如果數(shù)據(jù)模型沒(méi)有任何的表描述、字段說(shuō)明,數(shù)據(jù)使用將變得非常困難。即使數(shù)據(jù)開(kāi)發(fā)工程師維護(hù)了詳盡的表信息,也會(huì)存在大量的解釋成本,如果沒(méi)有輔助工具能夠記錄這些表的信息,數(shù)據(jù)分析師或BI人員需要到相應(yīng)的倉(cāng)庫(kù)或集市上去逐個(gè)查看表的基本信息,這將嚴(yán)重影響工作效率?;谝陨系目剂?,京東研發(fā)了自己的元數(shù)據(jù)管理平臺(tái)(think),用于管理數(shù)據(jù)模型的一些基本信息,方便分析師或BI人員快速查詢,從而更快了解表的信息,處理業(yè)務(wù)的數(shù)據(jù)需求。元數(shù)據(jù)管理平臺(tái)目前包含了以下的幾個(gè)功能:模型搜索、模型基本信息、血緣關(guān)系、相關(guān)調(diào)度任務(wù)等。下面將逐個(gè)進(jìn)行介紹。模型搜索數(shù)據(jù)開(kāi)發(fā)工程師在數(shù)據(jù)倉(cāng)庫(kù)或數(shù)據(jù)集市上開(kāi)發(fā)的模型,其元數(shù)據(jù)信息存儲(chǔ)在相應(yīng)的數(shù)據(jù)庫(kù)內(nèi),每個(gè)更新操作都會(huì)有相應(yīng)數(shù)據(jù)庫(kù)操作記錄。借助這些的信息,我們可以拿到模型當(dāng)前的實(shí)時(shí)狀態(tài),進(jìn)而將數(shù)據(jù)信息進(jìn)行實(shí)時(shí)維護(hù)。通過(guò)開(kāi)放數(shù)據(jù)模型查詢搜索的功能,用戶可以在元數(shù)據(jù)管理平臺(tái)上查詢搜索符合自己需求的相關(guān)模型。模型的基本信息數(shù)據(jù)分析師或BI人員通常希望快速地了解指標(biāo)模型的名稱、模型的描述、模型的字段以及模型的使用方法。因此在元數(shù)據(jù)管~59~京東大數(shù)據(jù)技術(shù)白皮書(shū)理平臺(tái)上就需要將這些信息展示出來(lái),方便分析師或者BI人員的使用。血緣關(guān)系一般數(shù)據(jù)分析師或者BI人員所使用的模型都是經(jīng)過(guò)多層加工后得到的。模型的加工流程、口徑、方式成為數(shù)據(jù)分析師或BI人員評(píng)估數(shù)據(jù)模型的有效性、正確性的重要依據(jù)。通過(guò)血緣關(guān)系圖,數(shù)據(jù)分析師或BI人員可以快速地跟蹤模型數(shù)據(jù)的上游、下游的使用情況,輕松了解數(shù)據(jù)的來(lái)龍去脈。相關(guān)調(diào)度任務(wù)目前京東數(shù)據(jù)倉(cāng)庫(kù)或集市上的模型基本都是通過(guò)調(diào)度任務(wù)處理得到。模型相關(guān)的元數(shù)據(jù)信息,例如分區(qū)情況、血緣關(guān)系等等信息,都與調(diào)度任務(wù)有著密切的關(guān)系。在元數(shù)據(jù)管理平臺(tái)中提供了一些輔助信息用于了解和模型關(guān)聯(lián)的調(diào)度任務(wù)的執(zhí)行情況。詳細(xì)了解相關(guān)調(diào)度任務(wù)的情況則可以通過(guò)調(diào)度平臺(tái)直接查看。除了以上的功能外,元數(shù)據(jù)管理平臺(tái)針對(duì)內(nèi)部用戶提供了收藏功能,方便公司內(nèi)部用戶可以快速地定位模型。管理平臺(tái)同時(shí)提供了評(píng)論功能,方便與模型負(fù)責(zé)人交流模型的具體用法或者對(duì)模型提供相應(yīng)的反饋信息。針對(duì)模型負(fù)責(zé)人則提供了模型編輯的功能,可以快速地補(bǔ)充和完善模型的基本信息、描述信息、表結(jié)構(gòu)說(shuō)明等等信息。針對(duì)集群管理者提供了當(dāng)前集市新增、修改、下線等等模型的清單,方便集市管理者跟進(jìn)模型的變化。~60~京東大數(shù)據(jù)技術(shù)白皮書(shū)3.2.3數(shù)據(jù)質(zhì)量管理數(shù)據(jù)質(zhì)量是有效分析和利用大數(shù)據(jù)的前提,是大數(shù)據(jù)產(chǎn)生跨區(qū)域、跨行業(yè)、跨部門價(jià)值的保障。引發(fā)數(shù)據(jù)質(zhì)量問(wèn)題的原因總結(jié)起來(lái)有以下幾種。數(shù)據(jù)創(chuàng)建產(chǎn)生如數(shù)值為空、數(shù)據(jù)內(nèi)容和描述不符、數(shù)據(jù)精度不足、數(shù)據(jù)默認(rèn)值使用不當(dāng)和數(shù)據(jù)錄入的校驗(yàn)規(guī)則不當(dāng)?shù)?。?shù)據(jù)獲取產(chǎn)生如數(shù)據(jù)結(jié)構(gòu)錯(cuò)誤、數(shù)據(jù)獲取不完整、數(shù)據(jù)采集點(diǎn)不正確、取數(shù)時(shí)點(diǎn)不正確等等。數(shù)據(jù)傳遞產(chǎn)生如接口數(shù)據(jù)傳遞延時(shí)、接口數(shù)據(jù)漏傳、網(wǎng)絡(luò)傳輸不可靠丟包、數(shù)據(jù)傳遞不及時(shí)等。數(shù)據(jù)加工產(chǎn)生如數(shù)據(jù)清洗和加工邏輯不正確、算法錯(cuò)誤導(dǎo)致數(shù)據(jù)多算、漏算等。圍繞上述數(shù)據(jù)質(zhì)量產(chǎn)生的原因,結(jié)合京東信息系統(tǒng)建設(shè)的特點(diǎn),京東大數(shù)據(jù)定義數(shù)據(jù)質(zhì)量好壞可以從以下幾個(gè)指標(biāo)來(lái)描述:及時(shí)性:數(shù)據(jù)平臺(tái)是否滿足業(yè)務(wù)應(yīng)用對(duì)數(shù)據(jù)的時(shí)間要求。完整性:數(shù)據(jù)平臺(tái)是否包含了業(yè)務(wù)應(yīng)用所需要的所有數(shù)據(jù);每份數(shù)據(jù)的記錄是否完整無(wú)缺。~61~京東大數(shù)據(jù)技術(shù)白皮書(shū)準(zhǔn)確性:獲取的每一份數(shù)據(jù)是否存在異?;蛘咤e(cuò)誤信息;數(shù)據(jù)平臺(tái)在數(shù)據(jù)的獲取、傳遞、加工過(guò)程中是否能保證數(shù)據(jù)的準(zhǔn)確??捎眯裕憾嗑S度、多渠道獲取的數(shù)據(jù)是否能夠易于理解并使用。京東大數(shù)據(jù)自研了數(shù)據(jù)質(zhì)量監(jiān)控平臺(tái),實(shí)現(xiàn)了對(duì)數(shù)據(jù)質(zhì)量的管理。主要功能如下:數(shù)據(jù)準(zhǔn)確性監(jiān)控針對(duì)每張數(shù)據(jù)表,可根據(jù)需要定制規(guī)則,對(duì)數(shù)據(jù)記錄行數(shù)和數(shù)據(jù)值進(jìn)行統(tǒng)計(jì),如訂單金額等??膳c歷史的數(shù)據(jù)值進(jìn)行比較,通過(guò)自定義的閾值進(jìn)行告警。比對(duì)的周期可以定義為日、周等不同周期,實(shí)現(xiàn)數(shù)據(jù)準(zhǔn)確性的預(yù)警。數(shù)據(jù)及時(shí)性監(jiān)控將數(shù)據(jù)加工任務(wù)按照服務(wù)的業(yè)務(wù)線歸類,根據(jù)服務(wù)SLA設(shè)置完成時(shí)間的閾值。用戶可以隨時(shí)觀察任務(wù)運(yùn)行的狀態(tài)、時(shí)間等,也可以通過(guò)設(shè)置閾值指標(biāo),將告警值通過(guò)郵件、短信等方式及時(shí)反饋給運(yùn)維人員。可根據(jù)應(yīng)用、業(yè)務(wù)、任務(wù)三層監(jiān)控對(duì)象進(jìn)行告警配置。數(shù)據(jù)完整性監(jiān)控針對(duì)單行數(shù)據(jù)記錄,可定義空值檢測(cè)、枚舉值范圍檢測(cè)等,可根據(jù)定義的規(guī)則進(jìn)行告警。數(shù)據(jù)質(zhì)量事件當(dāng)發(fā)生數(shù)據(jù)質(zhì)量異常告警后,將生成一個(gè)數(shù)據(jù)質(zhì)量事件。該事~62~京東大數(shù)據(jù)技術(shù)白皮書(shū)件由數(shù)據(jù)運(yùn)維人員發(fā)起,及時(shí)查明異常原因并記錄在知識(shí)庫(kù)中。該事件的完成必須經(jīng)過(guò)上級(jí)負(fù)責(zé)人的審批。數(shù)據(jù)質(zhì)量分析報(bào)告用戶可根據(jù)需要查詢數(shù)據(jù)表的質(zhì)量運(yùn)行報(bào)告,包括原因、狀態(tài)、處理結(jié)果等。生成的質(zhì)量分析報(bào)告對(duì)于數(shù)據(jù)質(zhì)量的改進(jìn)提供參考。除了在技術(shù)手段上進(jìn)行數(shù)據(jù)質(zhì)量管理外,在管理制度上我們也進(jìn)行了規(guī)范。如上游數(shù)據(jù)庫(kù)表變更通知、數(shù)據(jù)質(zhì)量問(wèn)題必須當(dāng)日進(jìn)行記錄及解決等。3.2.4資產(chǎn)管理平臺(tái)數(shù)據(jù)資產(chǎn)管理平臺(tái),如圖25所示,是在大數(shù)據(jù)平臺(tái)與業(yè)務(wù)場(chǎng)景應(yīng)用中間建立一個(gè)一統(tǒng)的數(shù)據(jù)管理中臺(tái)體系,加強(qiáng)對(duì)數(shù)據(jù)使用機(jī)制的管控,讓內(nèi)外部數(shù)據(jù)能匯聚融合、有序流通。圖25:數(shù)據(jù)資產(chǎn)管理平臺(tái)~63~京東大數(shù)據(jù)技術(shù)白皮書(shū)數(shù)據(jù)資產(chǎn)管理平臺(tái)的目標(biāo),主要有兩個(gè)方面:第一是資源管理的角度。一方面通過(guò)合理的數(shù)據(jù)使用流程和機(jī)制,幫助企業(yè)節(jié)省存儲(chǔ)和計(jì)算資源。另一方面,要豐富外部數(shù)據(jù)資源,實(shí)現(xiàn)全域數(shù)據(jù)資產(chǎn)的持續(xù)擴(kuò)充。第二是數(shù)據(jù)資產(chǎn)質(zhì)量提升的角度,通過(guò)數(shù)據(jù)資產(chǎn)管理來(lái)提高數(shù)據(jù)資產(chǎn)的質(zhì)量和數(shù)據(jù)服務(wù)質(zhì)量。數(shù)據(jù)資產(chǎn)的質(zhì)量,是通過(guò)持續(xù)跟蹤數(shù)據(jù)資產(chǎn)的使用狀況,形成從數(shù)據(jù)源頭到數(shù)據(jù)消費(fèi)的整條數(shù)據(jù)鏈路,了解數(shù)據(jù)資產(chǎn)使用的熱點(diǎn),不斷沉淀數(shù)據(jù)使用過(guò)程中的共性問(wèn)題,規(guī)范數(shù)據(jù)服務(wù)流程,指導(dǎo)數(shù)據(jù)架構(gòu)、模型、數(shù)據(jù)服務(wù)接口的優(yōu)化,提升使用效率,同時(shí)引入數(shù)據(jù)治理的策略和系,統(tǒng)提升數(shù)據(jù)資產(chǎn)的質(zhì)量。數(shù)據(jù)服務(wù)的質(zhì)量,主要是從滿足應(yīng)用的角度來(lái)監(jiān)控任務(wù)時(shí)效、響應(yīng)效率、數(shù)據(jù)一致性等問(wèn)題。京東通過(guò)數(shù)據(jù)資產(chǎn)運(yùn)營(yíng)、SLA監(jiān)控、指標(biāo)一統(tǒng)管理等組合手段,促進(jìn)數(shù)據(jù)的集中共享,保證口徑的一統(tǒng),讓數(shù)據(jù)消費(fèi)者減少找數(shù)和對(duì)數(shù)的問(wèn)題,更多地專注到數(shù)據(jù)創(chuàng)新應(yīng)用中。數(shù)據(jù)資產(chǎn)管理平臺(tái)的實(shí)現(xiàn),能夠在數(shù)據(jù)生產(chǎn)系統(tǒng)和業(yè)務(wù)應(yīng)用場(chǎng)景中間,通過(guò)數(shù)據(jù)源管理、數(shù)據(jù)治理、數(shù)據(jù)應(yīng)用管理幾個(gè)關(guān)鍵環(huán)節(jié),實(shí)現(xiàn)接入流程、開(kāi)發(fā)流程和數(shù)據(jù)應(yīng)用規(guī)范的一統(tǒng),從而達(dá)到上述提到的目標(biāo)。~64~京東大數(shù)據(jù)技術(shù)白皮書(shū)3.3統(tǒng)一指標(biāo)體系數(shù)據(jù)指標(biāo)口徑的管理,是數(shù)據(jù)應(yīng)用管理范疇里的核心一環(huán)。京東由于業(yè)務(wù)的快速發(fā)展和復(fù)雜場(chǎng)景,口徑迭代較快,加上數(shù)據(jù)開(kāi)發(fā)團(tuán)隊(duì)較多,導(dǎo)致相似指標(biāo)的實(shí)現(xiàn)邏輯存在差異,給業(yè)務(wù)運(yùn)營(yíng)和決策帶來(lái)挑戰(zhàn)。為了解決指標(biāo)口徑問(wèn)題,統(tǒng)一信息流建設(shè),為大家提供標(biāo)準(zhǔn)的數(shù)據(jù)指標(biāo)解讀和數(shù)據(jù)應(yīng)用規(guī)范,京東建立了指標(biāo)統(tǒng)一管理平臺(tái)。平臺(tái)對(duì)上百個(gè)數(shù)據(jù)產(chǎn)品的指標(biāo)口徑進(jìn)行盤點(diǎn)核對(duì),按照主題規(guī)范數(shù)據(jù)指標(biāo)口徑,明確差異,避免歧義和重復(fù)開(kāi)發(fā),提高數(shù)據(jù)共享和一致性。目前已經(jīng)形成了涵蓋交易、流、量財(cái)務(wù)、用戶、供應(yīng)鏈等十多個(gè)主題,500+原子指標(biāo)的標(biāo)準(zhǔn)口徑,建立了指標(biāo)白皮書(shū)和維度白皮書(shū),形成了統(tǒng)一的口徑標(biāo)準(zhǔn)。在統(tǒng)一的指標(biāo)口徑之上,為了便于數(shù)據(jù)消費(fèi)者系統(tǒng)化地共享和使用數(shù)據(jù),指標(biāo)統(tǒng)一管理平臺(tái)提供了統(tǒng)一的數(shù)據(jù)服務(wù)總線,支持標(biāo)準(zhǔn)化的數(shù)據(jù)模型檢索、離線和實(shí)時(shí)API服務(wù),以及人貨場(chǎng)標(biāo)簽的共享。隨著數(shù)據(jù)統(tǒng)一口徑標(biāo)準(zhǔn)的推行,避免了各業(yè)務(wù)部門的重復(fù)建設(shè)和計(jì)算,對(duì)集市計(jì)算資源有明顯的節(jié)省。例如流量明細(xì)層模型使用任務(wù)數(shù)與推廣時(shí)相比降幅為42.17%,任務(wù)內(nèi)存消耗GDM層降幅為37.16%,整體運(yùn)行時(shí)長(zhǎng)降低20%,效果如圖26所示。~65~京東大數(shù)據(jù)技術(shù)白皮書(shū)圖26:統(tǒng)一指標(biāo)推行后的效果3.4數(shù)據(jù)安全管理京東大數(shù)據(jù)平臺(tái)集中了京東業(yè)務(wù)運(yùn)營(yíng)中的所有數(shù)據(jù),其中包含用戶信息、商品成本、利潤(rùn)等信息。因此,數(shù)據(jù)的安全對(duì)于平臺(tái)來(lái)講非常重要,針對(duì)數(shù)據(jù)安全保護(hù)的措施主要圍繞以下幾個(gè)方面:敏感數(shù)據(jù)集市建設(shè)針對(duì)京東數(shù)以億計(jì)的用戶,京東大數(shù)據(jù)啟動(dòng)了敏感數(shù)據(jù)集市的建設(shè),將涉及用戶隱私的數(shù)據(jù)單獨(dú)設(shè)置了數(shù)據(jù)存儲(chǔ)區(qū)域,和其它的數(shù)據(jù)存儲(chǔ)進(jìn)行邏輯隔離。采用了國(guó)家認(rèn)證的密鑰算法,對(duì)用戶隱私信息進(jìn)行加密存儲(chǔ),并實(shí)現(xiàn)每1萬(wàn)行記錄換一次密鑰的方法。用戶隱私信息在數(shù)據(jù)抽取時(shí)即被加密,保證隱私信息落地即密文。在用戶隱私數(shù)據(jù)使用上采取嚴(yán)格的審批機(jī)制,必須經(jīng)過(guò)用戶需求部門、信息安全部門、大數(shù)據(jù)部門同時(shí)簽批才可使用敏感數(shù)據(jù)。IP黑白名單機(jī)制京東大數(shù)據(jù)平臺(tái)通過(guò)設(shè)立黑白名單機(jī)制限制非法IP訪問(wèn)集群~66~京東大數(shù)據(jù)技術(shù)白皮書(shū)的數(shù)據(jù)資源。用戶訪問(wèn)京東大數(shù)據(jù)平臺(tái)必須使用我們提供的產(chǎn)品與工具。在白名單中的用戶才會(huì)被授權(quán)通過(guò),不會(huì)被元數(shù)據(jù)服務(wù)器拒絕,未經(jīng)授權(quán)的產(chǎn)品和用戶的數(shù)據(jù)請(qǐng)求會(huì)被拒絕,并將惡意訪問(wèn)數(shù)據(jù)資源的行為記錄入黑名單中,讓安全人員立即采取行動(dòng)。員工賬號(hào)綁定所有登錄大數(shù)據(jù)平臺(tái)的用戶,無(wú)論是使用數(shù)據(jù)工具還是通過(guò)堡壘機(jī)登錄,必須使用公司發(fā)放的唯一員工賬號(hào),并且用戶在大數(shù)據(jù)平臺(tái)上每一步操作都將進(jìn)行日志記錄。記錄中包含有用戶的操作命令和員工賬號(hào),便于發(fā)生安全問(wèn)題時(shí)進(jìn)行追溯和查找。最小化授權(quán)策略大數(shù)據(jù)平臺(tái)權(quán)限系統(tǒng)提供了一個(gè)和HDFS原生權(quán)限相匹配適應(yīng)的授權(quán)模型管理訪問(wèn)策略,可以將用戶的授權(quán)細(xì)化到文件級(jí)別。用戶申請(qǐng)使用數(shù)據(jù)時(shí),需要詳細(xì)說(shuō)明數(shù)據(jù)的使用場(chǎng)景與用途,并明確操作權(quán)限。權(quán)限需要經(jīng)過(guò)上級(jí)領(lǐng)導(dǎo)、數(shù)據(jù)生產(chǎn)者、業(yè)務(wù)負(fù)責(zé)人、集市負(fù)責(zé)人等多層嚴(yán)格審批。所有授權(quán)記錄需有據(jù)可查,保證數(shù)據(jù)最小化的授權(quán)與授權(quán)可追溯。數(shù)據(jù)導(dǎo)出統(tǒng)計(jì)針對(duì)所有從平臺(tái)導(dǎo)出的數(shù)據(jù)以及集市之間交換的數(shù)據(jù)進(jìn)行統(tǒng)計(jì),制作分析報(bào)告,防范風(fēng)險(xiǎn)。全面的日志審計(jì)所有大數(shù)據(jù)平臺(tái)的日志都將保留并定期收集進(jìn)行審計(jì)。用戶保密協(xié)議~67~京東大

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論