文/王洋
廣播電視監(jiān)管事業(yè)經(jīng)歷了從模擬到數(shù)字、從地面到衛(wèi)星、從單機(jī)到網(wǎng)絡(luò)等一系列技術(shù)體系的重大變革,隨著技術(shù)的不斷發(fā)展,廣播電視節(jié)目的頻率數(shù)、頻道數(shù)、播出時(shí)長(zhǎng)也在快速增加,開(kāi)路電視、有線電視、衛(wèi)星電視、IPTV等多種傳輸方式也在快速出現(xiàn),因此,監(jiān)管工作所面臨的數(shù)據(jù)量在急劇膨脹,早期工作中是以結(jié)構(gòu)化的業(yè)務(wù)數(shù)據(jù)為主,主要是廣播電視節(jié)目在播出和傳輸過(guò)程中的相關(guān)技術(shù)性指標(biāo),廣播電視內(nèi)容以實(shí)時(shí)監(jiān)聽(tīng)監(jiān)看為主,錄音錄像保存時(shí)間很有限。在過(guò)去的十幾年中,大規(guī)模海量數(shù)據(jù)的存儲(chǔ)和處理方案在商業(yè)公司和開(kāi)源軟件社區(qū)中涌現(xiàn)出來(lái),這源于互聯(lián)網(wǎng)的發(fā)展導(dǎo)致互聯(lián)網(wǎng)公司迫切需要發(fā)展適合于大數(shù)據(jù)環(huán)境下的全新技術(shù)體系,達(dá)到低成本、易擴(kuò)展、并發(fā)性高、兼容不同類(lèi)型數(shù)據(jù)的目的?,F(xiàn)實(shí)的應(yīng)用需求使得一些技術(shù)方案快速成熟,這樣就為廣播電視監(jiān)管工作提供了可行的解決方案,大量音視頻節(jié)目的存儲(chǔ)成為可能。與此同時(shí),海量數(shù)據(jù)處理技術(shù)和分析技術(shù)的發(fā)展也能夠滿足不斷提升的監(jiān)管業(yè)務(wù)需求。
圖1 數(shù)據(jù)資產(chǎn)管理系統(tǒng)技術(shù)架構(gòu)圖
就目前來(lái)講,廣電監(jiān)管工作主要用到兩大類(lèi)數(shù)據(jù),一類(lèi)是對(duì)應(yīng)廣播電視節(jié)目的音視頻文件,另一類(lèi)是相關(guān)監(jiān)管業(yè)務(wù)數(shù)據(jù),如廣播效果情況、電視節(jié)目播出表等,前者為非結(jié)構(gòu)化數(shù)據(jù),后者為結(jié)構(gòu)化數(shù)據(jù)。音視頻文件的存儲(chǔ)容量已經(jīng)達(dá)到PB級(jí),每天的增量達(dá)到了TB級(jí),包括了大部分的衛(wèi)星和有線廣播電視節(jié)目,由于存儲(chǔ)容量已達(dá)極限,需要定期從存儲(chǔ)中刪除舊的音視頻文件,業(yè)務(wù)數(shù)據(jù)雖然容量只是GB級(jí),但某些數(shù)據(jù)增長(zhǎng)快速,已經(jīng)達(dá)到億級(jí)的條目數(shù)。隨著以上兩類(lèi)數(shù)據(jù)的積累,對(duì)數(shù)據(jù)存儲(chǔ)的擴(kuò)展性和安全性要求逐漸提升,必須要在數(shù)據(jù)讀取性能和可靠性之間取得平衡,需要以較低成本較簡(jiǎn)單的操作實(shí)現(xiàn)較高的并發(fā)訪問(wèn)和分布式存儲(chǔ)。此外,海量數(shù)據(jù)帶來(lái)數(shù)據(jù)分析的需求,需要新的技術(shù)方案彌補(bǔ)現(xiàn)有系統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)能力不足的問(wèn)題。最后,類(lèi)似Oracle這樣的傳統(tǒng)商業(yè)型數(shù)據(jù)庫(kù)雖然能很好地滿足關(guān)系型數(shù)據(jù)管理和分析的需求,但使用成本較高,分布式架構(gòu)操作復(fù)雜,源代碼不開(kāi)放,存在數(shù)據(jù)資產(chǎn)的安全性問(wèn)題。綜上所述,我們需要針對(duì)音視頻文件和相關(guān)業(yè)務(wù)數(shù)據(jù)組成的數(shù)據(jù)資產(chǎn)管理需求,利用開(kāi)源軟件社區(qū)的成熟大數(shù)據(jù)技術(shù)方案彌補(bǔ)已有技術(shù)體系的不足,實(shí)現(xiàn)性?xún)r(jià)比更高、更加安全的數(shù)據(jù)資產(chǎn)管理系統(tǒng)。
各個(gè)監(jiān)管業(yè)務(wù)系統(tǒng)之間彼此封閉,每個(gè)系統(tǒng)內(nèi)形成封閉的回路,沒(méi)有達(dá)到有效的數(shù)據(jù)共享,因此,首先需要對(duì)數(shù)據(jù)進(jìn)行有效整合,消除數(shù)據(jù)孤島,建立統(tǒng)一規(guī)范的數(shù)據(jù)標(biāo)準(zhǔn),形成對(duì)數(shù)據(jù)的全景統(tǒng)計(jì),在此基礎(chǔ)上開(kāi)發(fā)可視化數(shù)據(jù)統(tǒng)計(jì)分析功能,實(shí)現(xiàn)對(duì)數(shù)據(jù)資產(chǎn)的準(zhǔn)確掌握和有效管理,輔助建立跨系統(tǒng)、跨部門(mén)、跨地區(qū)的溝通協(xié)調(diào)機(jī)制。下圖是根據(jù)上述需求形成的技術(shù)架構(gòu)圖,目前已經(jīng)完全實(shí)現(xiàn)并正常運(yùn)行。
下面一層是原有的數(shù)據(jù)存儲(chǔ)系統(tǒng),包括音視頻數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù),中間一層是以大數(shù)據(jù)一體機(jī)為形式的新系統(tǒng),包括用于存放音視頻文件的Hadoop平臺(tái)和存放文件元數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù)的MPP數(shù)據(jù)庫(kù),基于這些數(shù)據(jù)建立數(shù)據(jù)資產(chǎn)管理系統(tǒng),包括數(shù)據(jù)資產(chǎn)目錄、數(shù)據(jù)存量統(tǒng)計(jì)、數(shù)據(jù)增量統(tǒng)計(jì)、數(shù)據(jù)流量監(jiān)控、作業(yè)監(jiān)控等功能,這些功能經(jīng)過(guò)防火墻在上面一層呈現(xiàn)在用戶終端上。
集中存儲(chǔ)系統(tǒng)采用的是浪潮的Lustre系統(tǒng),存放著歷年的廣播電視節(jié)目音視頻文件,廣播數(shù)據(jù)庫(kù)是指廣播播出的技術(shù)性業(yè)務(wù)數(shù)據(jù),節(jié)目播出數(shù)據(jù)庫(kù)是指廣播電視節(jié)目編目數(shù)據(jù),中間庫(kù)是其他系統(tǒng)同步過(guò)來(lái)的技術(shù)性業(yè)務(wù)數(shù)據(jù),這三個(gè)數(shù)據(jù)庫(kù)均采用Oracle一體機(jī),以RAC(Real Application Cluster)方式進(jìn)行存儲(chǔ)。以上兩類(lèi)數(shù)據(jù)經(jīng)過(guò)大數(shù)據(jù)一體機(jī)中的Hadoop軟件和ETL工具,實(shí)現(xiàn)了數(shù)據(jù)轉(zhuǎn)移和提取,形成數(shù)據(jù)資產(chǎn)管理系統(tǒng)可以直接利用的數(shù)據(jù)源。
圖2 數(shù)據(jù)資產(chǎn)管理系統(tǒng)軟件結(jié)構(gòu)圖
根據(jù)技術(shù)架構(gòu)的要求,我們接下來(lái)要決定采用哪些關(guān)鍵技術(shù)實(shí)現(xiàn)其中的數(shù)據(jù)同步、ETL等功能。下圖體現(xiàn)了不容軟件模塊之間的數(shù)據(jù)流向和用到的一些技術(shù)或產(chǎn)品。
集中存儲(chǔ)系統(tǒng)中的Lustre系統(tǒng)是一種基于Linux的開(kāi)源分布式文件系統(tǒng),Lustre的最大特點(diǎn)是讀寫(xiě)能力很強(qiáng),特別是對(duì)于大文件,利用Stripe條帶化技術(shù)實(shí)現(xiàn)文件的并行訪問(wèn),元數(shù)據(jù)服務(wù)器存儲(chǔ)文件的元數(shù)據(jù)信息,對(duì)象存儲(chǔ)服務(wù)器用于存儲(chǔ)文件,Lustre的主要問(wèn)題是對(duì)數(shù)據(jù)的保護(hù)比較差,底層的對(duì)象存儲(chǔ)結(jié)構(gòu)不支持?jǐn)?shù)據(jù)的備份和回復(fù),另外,元數(shù)據(jù)存在單點(diǎn)故障的問(wèn)題,采用了共享存儲(chǔ)層支持主備切換,一旦共享存儲(chǔ)層出現(xiàn)問(wèn)題導(dǎo)致元數(shù)據(jù)無(wú)法訪問(wèn),進(jìn)而影響整個(gè)系統(tǒng)。我們選擇了Hadoop 2.0來(lái)讀取和存放音視頻文件,HDFS支持多個(gè)副本在不同節(jié)點(diǎn)的存儲(chǔ),可以實(shí)現(xiàn)數(shù)據(jù)的保護(hù),并具有數(shù)據(jù)校驗(yàn)的功能,文件的操作雖然不像Lustre支持POSIX接口,只能通過(guò)API實(shí)現(xiàn),讀取性能不如Lustre,但適合需要長(zhǎng)期保存的文件以及建立數(shù)據(jù)倉(cāng)庫(kù)。另外,HDFS生態(tài)環(huán)境非常豐富,有很多強(qiáng)大的開(kāi)源框架可以使用,這一點(diǎn)要比Lustre好很多。在這個(gè)項(xiàng)目中我們使用了2個(gè)管理節(jié)點(diǎn)和20個(gè)數(shù)據(jù)節(jié)點(diǎn),管理節(jié)點(diǎn)使用Zookeeper實(shí)現(xiàn)平臺(tái)集群的負(fù)載均衡,數(shù)據(jù)節(jié)點(diǎn)通過(guò)HDFS存放了數(shù)百TB的音視頻文件。
集中存儲(chǔ)系統(tǒng)文件信息讀取的接口采用MapReduce實(shí)現(xiàn),MapReduce程序?qū)写鎯?chǔ)系統(tǒng)的內(nèi)容進(jìn)行解析,提取出集中存儲(chǔ)系統(tǒng)的音視頻文件的元數(shù)據(jù),并完成兩項(xiàng)任務(wù),一是將音視頻文件同步到大數(shù)據(jù)Hadoop平臺(tái)上;二是獲取到音視頻文件的屬性信息并同步到MPP數(shù)據(jù)庫(kù)中。數(shù)據(jù)同步管理策略包括文件同步和元數(shù)據(jù)同步兩個(gè)方面,元數(shù)據(jù)同步每15分鐘進(jìn)行一次,主要是通過(guò)find命令查詢(xún)當(dāng)天日期目錄下最近一個(gè)小時(shí)新增的文件,并將元數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中。同步定時(shí)任務(wù)通過(guò)Linux的crontab命令實(shí)現(xiàn),元數(shù)據(jù)抽取的日志文件位于與jar包同級(jí)的logs文件夾里。文件同步每天晚上0點(diǎn)進(jìn)行,根據(jù)數(shù)據(jù)庫(kù)中前一天的元數(shù)據(jù)信息,將前一天所有的文件復(fù)制到HDFS中,在主要文件完成之后根據(jù)文件增加情況和同步需求不定期執(zhí)行文件同步。
對(duì)于結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)我們采用了基于MysSQL的MPP(Massively Parallel Processor)數(shù)據(jù)庫(kù),MPP是大規(guī)模并行處理的意思,系統(tǒng)由很多松耦合處理單元組成,每個(gè)單元內(nèi)的CPU都有自己的私有資源,在每個(gè)單元內(nèi)都有操作系統(tǒng)和管理數(shù)據(jù)庫(kù)的實(shí)例副本。MPP架構(gòu)數(shù)據(jù)庫(kù)具有的特征是任務(wù)并行執(zhí)行、數(shù)據(jù)分布式存儲(chǔ)、分布式計(jì)算、私有資源、橫向擴(kuò)展和Share Nothing架構(gòu)。橫向擴(kuò)展是MPP數(shù)據(jù)庫(kù)的主要設(shè)計(jì)目標(biāo),MPP數(shù)據(jù)庫(kù)支持嚴(yán)格的關(guān)系模型,比如SQL92、加擴(kuò)展、加存儲(chǔ)過(guò)程,支持事務(wù)、保證數(shù)據(jù)強(qiáng)一致性,所解決的問(wèn)題包括提升數(shù)據(jù)處理性能和數(shù)據(jù)處理量。與各個(gè)節(jié)點(diǎn)使用自己私有資源的Shared Nothing架構(gòu)不同,原有數(shù)據(jù)庫(kù)采用的Oracle RAC屬于Shared Disk架構(gòu),各個(gè)節(jié)點(diǎn)使用自己的CPU和內(nèi)存,磁盤(pán)存儲(chǔ)共享,也就是數(shù)據(jù)共享,當(dāng)存儲(chǔ)性能達(dá)到瓶頸時(shí),增加節(jié)點(diǎn)便不能獲得并行能力的擴(kuò)展,另外,Oracle RAC源代碼不開(kāi)放,存放于Oracle一體機(jī)中,這種一體機(jī)價(jià)格較為昂貴。
MPP數(shù)據(jù)庫(kù)集群共有6個(gè)節(jié)點(diǎn),共分為三類(lèi),即管理節(jié)點(diǎn)、數(shù)據(jù)節(jié)點(diǎn)和SQL節(jié)點(diǎn)。管理節(jié)點(diǎn)有2個(gè),作用是管理集群內(nèi)的其他節(jié)點(diǎn),如提供配置數(shù)據(jù)、啟動(dòng)并停止節(jié)點(diǎn)、運(yùn)行備份等,由于這類(lèi)節(jié)點(diǎn)負(fù)責(zé)管理其他節(jié)點(diǎn)的配置,應(yīng)在啟動(dòng)其他節(jié)點(diǎn)之前首先啟動(dòng)這類(lèi)節(jié)點(diǎn),管理節(jié)點(diǎn)用命令ndb_mgmd啟動(dòng)。數(shù)據(jù)節(jié)點(diǎn)有4個(gè),用于保存集群中的數(shù)據(jù),數(shù)據(jù)節(jié)點(diǎn)的數(shù)目與副本的數(shù)目相關(guān),用命令ndbc啟動(dòng)。SQL節(jié)點(diǎn)有4個(gè),用于訪問(wèn)集群數(shù)據(jù),通常SQL節(jié)點(diǎn)使用命令mysqld -ndbcluster啟動(dòng),或?qū)dbcluster添加到my.cnf后使用mysqld啟動(dòng)。管理節(jié)點(diǎn)負(fù)責(zé)管理集群配置文件和集群日志,集群中的每個(gè)節(jié)點(diǎn)從管理節(jié)點(diǎn)檢索配置數(shù)據(jù),并請(qǐng)求確定管理節(jié)點(diǎn)所在位置,數(shù)據(jù)節(jié)點(diǎn)內(nèi)出現(xiàn)新的事件時(shí),將關(guān)于這類(lèi)時(shí)間的信息傳輸?shù)焦芾砉?jié)點(diǎn),然后將這類(lèi)信息寫(xiě)入集群日志。
從Oracle RAC到MPP數(shù)據(jù)庫(kù)的ETL過(guò)程采用了開(kāi)源ETL工具 Kettle,ETL即數(shù)據(jù)抽?。‥xtract)、轉(zhuǎn)換(Transform)、裝載(Load)的過(guò)程,它是構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)的重要環(huán)節(jié)。傳統(tǒng)的ETL工具有集中執(zhí)行、對(duì)服務(wù)器性能要求高等缺點(diǎn),針對(duì)這些缺點(diǎn),本項(xiàng)目采用了一種基于分布式原理的ETL技術(shù),該系統(tǒng)在分布式文件系統(tǒng)基礎(chǔ)上實(shí)現(xiàn)了集群分布式ETL流程。該分布式ETL系統(tǒng)具有較高的可擴(kuò)展性和吞吐效率,同時(shí)能夠自動(dòng)實(shí)現(xiàn)負(fù)載均衡,執(zhí)行效率高。分布式ETL技術(shù)包括四個(gè)組件:Spoon、Pan、Chef、Kithcen。Spoon實(shí)現(xiàn)了通過(guò)圖形界面來(lái)設(shè)計(jì)ETL轉(zhuǎn)換過(guò)程,通過(guò)SPoon設(shè)計(jì)ETL工作的轉(zhuǎn)換和作業(yè),轉(zhuǎn)換定義了ETL抽取地源、目標(biāo)和抽取規(guī)則,是ETL的主體,作業(yè)控制著轉(zhuǎn)換的執(zhí)行,Pan實(shí)現(xiàn)了批量運(yùn)行由Spoon設(shè)計(jì)的ETL轉(zhuǎn)換;Pan是一個(gè)后臺(tái)執(zhí)行的程序,沒(méi)有圖形界面,Chef可以創(chuàng)建任務(wù),任務(wù)通過(guò)允許每個(gè)轉(zhuǎn)換、任務(wù)、腳本等,更有利于自動(dòng)化更新數(shù)據(jù)倉(cāng)庫(kù)的復(fù)雜工作,任務(wù)將會(huì)被檢查,看看是否正確地運(yùn)行了;Kitchen允許你批量使用CHEF設(shè)計(jì)的任務(wù),例如使用一個(gè)時(shí)間調(diào)度器,Kitchen也是一個(gè)后臺(tái)運(yùn)行的程序。分布式ETL集群共有8個(gè)節(jié)點(diǎn),2個(gè)主節(jié)點(diǎn)和6個(gè)從節(jié)點(diǎn)。
以上我們從業(yè)務(wù)發(fā)展的需要出發(fā),介紹了數(shù)據(jù)資產(chǎn)管理系統(tǒng)的技術(shù)架構(gòu)和關(guān)鍵技術(shù),以及一些具體的實(shí)現(xiàn)方式,經(jīng)過(guò)這個(gè)項(xiàng)目,音視頻和業(yè)務(wù)數(shù)據(jù)資源得到了整合,數(shù)據(jù)存儲(chǔ)容量更大并且更加安全,而且易于擴(kuò)展,為進(jìn)一步的數(shù)據(jù)挖掘工作奠定了良好的基礎(chǔ)。隨著大數(shù)據(jù)開(kāi)源軟件社區(qū)新的成熟項(xiàng)目不斷出現(xiàn),數(shù)據(jù)資產(chǎn)管理系統(tǒng)可以充分融合新的工具實(shí)現(xiàn)功能的不斷增加。