李松濤
摘要:本文主要圍繞以Kudu為基礎(chǔ)結(jié)構(gòu)化的數(shù)據(jù)存儲(chǔ)整體方案設(shè)計(jì)開展深入地研究探討,希望能夠?yàn)榻窈蠓桨冈O(shè)計(jì)及完善相關(guān)實(shí)踐工作的有效進(jìn)展提供建議參考。
關(guān)鍵詞:Kudu;結(jié)構(gòu)化;數(shù)據(jù)存儲(chǔ);方案設(shè)計(jì)
中圖分類號(hào):TP311.13 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2019)10-0183-01
0 引言
因受到傳統(tǒng)數(shù)據(jù)庫(kù)的存儲(chǔ)架構(gòu)方面設(shè)計(jì)所限制,傳統(tǒng)模式下結(jié)構(gòu)化的數(shù)據(jù)在擴(kuò)展性、時(shí)效性方面均相對(duì)較差,優(yōu)化難度相對(duì)較高。對(duì)此,深入研究以Kudu為基礎(chǔ)結(jié)構(gòu)化的數(shù)據(jù)存儲(chǔ)整體方案設(shè)計(jì),對(duì)提升結(jié)構(gòu)化的數(shù)據(jù)在擴(kuò)展性、時(shí)效性各方面性能有著極大的現(xiàn)實(shí)意義及價(jià)值。
1 總體框架設(shè)計(jì)
結(jié)構(gòu)化的數(shù)據(jù)存儲(chǔ)方面分析引擎組成部分包括:接入數(shù)據(jù)、分布式Kudu存儲(chǔ)引擎、轉(zhuǎn)儲(chǔ)數(shù)據(jù)引擎、Hadoop Cluster、Hplsql、交互數(shù)據(jù)處理Impala引擎、分布式Spark計(jì)算引擎。如下,為各個(gè)功能系統(tǒng)模塊組件的功能詳細(xì)介紹[1]:
(1)接入數(shù)據(jù)。接入數(shù)據(jù)系統(tǒng)模塊,它主要是提供著標(biāo)準(zhǔn)化REST網(wǎng)關(guān),經(jīng)REST網(wǎng)關(guān)的隔離,將寫入Kudu數(shù)據(jù)要求必須連通著集群內(nèi)部全部Tablet Server網(wǎng)絡(luò)安全性及連通性方面問題妥善解決;同時(shí),還將Kudu接口處錯(cuò)誤調(diào)用所致集群方面穩(wěn)定性相關(guān)問題,可實(shí)現(xiàn)跨語(yǔ)言式調(diào)用操作。接入數(shù)據(jù)該系統(tǒng)模塊內(nèi),設(shè)計(jì)支持Kettle、Flume接入,F(xiàn)lume Agent當(dāng)中的sink即可實(shí)現(xiàn),經(jīng)avro協(xié)議、文件、命令等輸出各種方式接入數(shù)據(jù),促使Kettle 輸出轉(zhuǎn)換的操作接口可集成STE所輸出的插件,Kettle內(nèi)科直接拖拽應(yīng)用STE所輸出的組件,自關(guān)系的數(shù)據(jù)庫(kù)與文件等各種Kettle 支持輸入的方式,數(shù)據(jù)可被輸出至Kudu內(nèi)。(2)轉(zhuǎn)儲(chǔ)數(shù)據(jù)引擎。轉(zhuǎn)儲(chǔ)數(shù)據(jù)引擎,其主要是為把Kudu內(nèi)部歷史數(shù)據(jù)及時(shí)轉(zhuǎn)儲(chǔ)至Hadoop內(nèi),采用parquet的格式實(shí)現(xiàn)存儲(chǔ)操作。如此操作的好處即為:多數(shù)實(shí)時(shí)化查詢均已最近數(shù)據(jù)為基礎(chǔ),歷史數(shù)據(jù)全部歸檔至Hadoop內(nèi),則Kudu內(nèi)實(shí)際數(shù)據(jù)量存儲(chǔ)必然減少,它的實(shí)時(shí)化存儲(chǔ)及分析方面的能力能夠得到很好利用;同時(shí),數(shù)據(jù)全部歸檔成為parquet的格式,則Impala實(shí)際分析的速度 將會(huì)得到提升。因Impala 自身支持著parquet該格式查詢數(shù)據(jù),故僅需把Kudu內(nèi)部數(shù)據(jù)存儲(chǔ) 于Hadoop內(nèi)部,數(shù)據(jù)經(jīng)表UNION后,全量的數(shù)據(jù)分析即可實(shí)現(xiàn)。(3)分布式Kudu存儲(chǔ)引擎。存儲(chǔ)數(shù)據(jù)引擎,經(jīng)設(shè)計(jì)數(shù)據(jù)表,主要包含著列壓縮、分區(qū)、主鍵等設(shè)計(jì),數(shù)據(jù)存儲(chǔ)的空間占用得以縮小,系統(tǒng)的IO性能能夠得以提升,且數(shù)據(jù)實(shí)際的檢索效率也將得到提升。(4)Hadoop Cluster。通過Hadoop Cluster的使用,Kudu當(dāng)中的歷史數(shù)據(jù)均可實(shí)現(xiàn)較高可靠性的歸檔及存儲(chǔ)處理,它支持著Spark、Impala的數(shù)據(jù)訪問操作。(5)Hplsql。在提供著存儲(chǔ)期間,可充分滿足于傳統(tǒng)的數(shù)據(jù)庫(kù)在存儲(chǔ)期間遷移方面需求。(6)分布式Spark計(jì)算引擎。借助Kudu 當(dāng)中Spark Datasource,能支持著Spark的內(nèi)存計(jì)算,將Impala內(nèi)部部分復(fù)雜的SQL較慢查詢、復(fù)雜性的SQL維護(hù)等問題予以妥善處理,計(jì)算分析的能力能夠得到提升。(7)交互數(shù)據(jù)處理Impala引擎。提供著MPP架構(gòu)交互SQL的查詢引擎,經(jīng)查詢引擎,能夠?qū)?shù)據(jù)的聚合類計(jì)算分析妥善處理好,此引擎還支持著函數(shù)的自定義系統(tǒng)功能,經(jīng)函數(shù)的自定義該項(xiàng)功能,SQL功能能夠得到擴(kuò)展,促使傳統(tǒng)以SQL為基礎(chǔ)分析更具簡(jiǎn)單便捷性。
2 方案設(shè)計(jì)
2.1 存儲(chǔ)方面
依據(jù)數(shù)據(jù)時(shí)間屬性,數(shù)據(jù)的存儲(chǔ)設(shè)計(jì)可由兩個(gè)部分所構(gòu)成,即為:存儲(chǔ)于Kudu內(nèi)部實(shí)時(shí)化數(shù)據(jù)及頻繁分析的數(shù)據(jù)方面存儲(chǔ)設(shè)計(jì);parquet該格式下存儲(chǔ)于Hadoop內(nèi)部數(shù)據(jù)方面存儲(chǔ)設(shè)計(jì)[2]。
2.1.1 冷數(shù)據(jù)的存儲(chǔ)
(1)通過parquet該格式把表數(shù)據(jù)存儲(chǔ)至Hadoop內(nèi),可高效率過濾及壓縮處理數(shù)據(jù);(2)表通過snappy的壓縮處理,可折中數(shù)據(jù)的檢索及解壓方面性能;(3)設(shè)置parquet該文件的大小,以1GB為宜。為能夠?qū)arquet文件有效存儲(chǔ)至 Hadoop內(nèi)部,Hadoop塊大小一般可設(shè)256MB或126MB。故設(shè)為1GB,防止過于小所致Hadoop的存儲(chǔ)性方面問題,還可防止因過于大所致檢索性方面問題等。分別存儲(chǔ)數(shù)據(jù)經(jīng)劃分后的冷、暖數(shù)據(jù)后,可經(jīng)Impala實(shí)現(xiàn)分別外表映射處理,視圖可實(shí)現(xiàn)對(duì)外統(tǒng)一,如把Kudu內(nèi)數(shù)據(jù)表Table1于Impala當(dāng)中多對(duì)應(yīng)冷數(shù)據(jù),把它映射成Impala外表的Table1_Parquet,Impala內(nèi)構(gòu)建起視圖的Table1即為Table1_Kudu UNION Table1_Parquet,Table1的全量數(shù)據(jù)分析即可實(shí)現(xiàn)。
2.1.2 暖數(shù)據(jù)的存儲(chǔ)
(1)設(shè)計(jì)主鍵。因Kudu表有著主鍵牽引功能,對(duì)此,應(yīng)把條件查詢當(dāng)中關(guān)鍵詞當(dāng)初主鍵部分,促使數(shù)據(jù)的檢索效率得以提升;(2)實(shí)施分區(qū)設(shè)計(jì)。該Kudu,它支持著RANGE、HASH兩種分區(qū)的方式,以不同業(yè)務(wù)場(chǎng)景相結(jié)合,經(jīng)適宜分析來合理分布數(shù)據(jù),將數(shù)據(jù)檢索性及插入性提升;(3)實(shí)施列壓縮性設(shè)計(jì)。經(jīng)振動(dòng)于數(shù)據(jù)不同類型配置相應(yīng)壓縮算法,數(shù)據(jù)可實(shí)現(xiàn)高效化壓縮處理,磁盤的占用空間得以縮小,IO的訪問效率得以提升。Impala內(nèi)實(shí)施表JOIN的查詢期間,性能優(yōu)化較為突出。
2.2 轉(zhuǎn)儲(chǔ)方面
借助STE轉(zhuǎn)儲(chǔ)數(shù)據(jù)引擎,把Kudu內(nèi)部部分的歷史數(shù)據(jù)有效抽取至Hadoop內(nèi)成為冷數(shù)據(jù)的存儲(chǔ),Spark程序即為STE轉(zhuǎn)儲(chǔ)數(shù)據(jù)引擎設(shè)計(jì),經(jīng)Oozie相應(yīng)大數(shù)據(jù)的工作流式引擎調(diào)度周期任務(wù),STE引擎內(nèi)檢查該Kudu當(dāng)中所滿足相應(yīng)冷數(shù)據(jù)的標(biāo)準(zhǔn)數(shù)據(jù),從Kudu內(nèi)把數(shù)據(jù)抽取至Hadoop當(dāng)中,成功抽取后對(duì)于 Kudu內(nèi)部相關(guān)數(shù)據(jù)做好刪除處理。
2.3 分析方面
經(jīng)用戶的數(shù)據(jù)分析不同場(chǎng)景,用戶分析主要包含著實(shí)時(shí)化交互式的分析、內(nèi)存計(jì)算式分析、離線批的處理計(jì)算式分析,以下為具體設(shè)計(jì):
(1)實(shí)時(shí)化交互式的分析。此分析為用戶進(jìn)行查詢與分析條件的輸入,點(diǎn)擊查詢后觸發(fā)到分析,此分析方式需在秒級(jí)的時(shí)延之內(nèi)返回,針對(duì)該部分?jǐn)?shù)據(jù)查詢分析,分析引擎可選用Impala,用戶們可借助jdbc、odbc實(shí)現(xiàn)與Impala的連接,將查詢命令提交出去。(2)內(nèi)存計(jì)算式分析。該內(nèi)存計(jì)算式分析,它主要是為能夠?qū)⒉糠值姆治鋈蝿?wù)難以用過SQL實(shí)現(xiàn)編寫方面問題有效妥善處理,且還能處理SQL使用期間過慢的分析速度方面問題,此類型分析人物無需較高實(shí)時(shí)性要求,可分鐘級(jí)別內(nèi)完成,以Spark作為計(jì)算引擎,經(jīng)相關(guān)計(jì)算任務(wù)的編寫,可通過直接訪問Hadoop、Kudu內(nèi)部數(shù)據(jù)來實(shí)現(xiàn)。(3)離線批的處理計(jì)算式分析。該離線批的處理計(jì)算式分析,比較適合報(bào)表相關(guān)可靠性的結(jié)果需求情況下使用,但針對(duì)于時(shí)間分析方面要求并不是較高情況下,可實(shí)現(xiàn)分級(jí)別化實(shí)現(xiàn),直接通過Hadoop內(nèi)設(shè)Mapreduce的引擎實(shí)現(xiàn)高效處理。
3 結(jié)語(yǔ)
綜上所述,該方案設(shè)計(jì)式以Kudu作為基礎(chǔ)的引擎,借助城市的Spark、Hadoop大數(shù)據(jù)科學(xué)技術(shù),開發(fā)設(shè)計(jì)出一種比較適合結(jié)構(gòu)化海量數(shù)據(jù)的存儲(chǔ)分析實(shí)施方案,可廣泛應(yīng)用至網(wǎng)絡(luò)報(bào)文、海量日志、電子商務(wù)、物聯(lián)網(wǎng)的數(shù)據(jù)等各種數(shù)據(jù)的存儲(chǔ)分析相應(yīng)場(chǎng)合當(dāng)中,此方案具備較為突出的應(yīng)用優(yōu)勢(shì),值得廣泛推廣及應(yīng)用。
參考文獻(xiàn)
[1] 王博.面向全基因組關(guān)聯(lián)分析的大數(shù)據(jù)存儲(chǔ)架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)[D].華南理工大學(xué),2018.
[2] 寧群儀,周超.基于Kudu+Impala的交通大數(shù)據(jù)存儲(chǔ)和分析平臺(tái)[J].電腦編程技巧與維護(hù),2018(11):91-92+111.