◆張建業(yè)
?
從傳統(tǒng)架構(gòu)IOE到Hadoop云平臺(tái)的應(yīng)用遷移的實(shí)現(xiàn)探討
◆張建業(yè)
(國(guó)網(wǎng)新疆電力公司 新疆 830063)
隨著企業(yè)數(shù)據(jù)信息量的增加,大數(shù)據(jù)時(shí)代的到來(lái)為企業(yè)數(shù)據(jù)信息處理提供多種新型的技術(shù)。以往企業(yè)數(shù)據(jù)處理所用的傳統(tǒng)框架IOE是集IBM小型機(jī)、Oracle數(shù)據(jù)庫(kù)以及EMC存儲(chǔ)所組成的大型商用數(shù)據(jù)庫(kù)系統(tǒng)。在當(dāng)今該種系統(tǒng)架構(gòu)早已不能滿足企業(yè)數(shù)據(jù)處理需求,存在著較大的數(shù)據(jù)計(jì)算、處理、帶寬等方面的問(wèn)題。Hadoop云平臺(tái)的出現(xiàn),為企業(yè)數(shù)據(jù)信息處理提供更好的平臺(tái),能夠?qū)崿F(xiàn)信息高效應(yīng)用?;诖耍疚膹膫鹘y(tǒng)架構(gòu)IOE到Hadoop云平臺(tái)的應(yīng)用遷移實(shí)現(xiàn)角度進(jìn)行分析。
傳統(tǒng)架構(gòu)IOE;Hadoop云平臺(tái);應(yīng)用遷移;實(shí)現(xiàn)探索
在傳統(tǒng)架構(gòu)IOE中,關(guān)注的是單一系統(tǒng)規(guī)模,一旦系統(tǒng)出現(xiàn)問(wèn)題將會(huì)導(dǎo)致系統(tǒng)需要付出成倍的代價(jià)來(lái)解決系統(tǒng)問(wèn)題。在數(shù)據(jù)信息高速發(fā)展的當(dāng)今社會(huì)中,傳統(tǒng)架構(gòu)IOE存在著較大的不適應(yīng)性。而Hadoop云平臺(tái)的出現(xiàn)能夠有效的解決數(shù)據(jù)存儲(chǔ)、計(jì)算、網(wǎng)絡(luò)帶寬等問(wèn)題。借助Hadoop的良好架構(gòu)提升網(wǎng)絡(luò)系統(tǒng)的實(shí)際存儲(chǔ)能力等。從整體角度分析,傳統(tǒng)架構(gòu)IOE到Hadoop云平臺(tái)應(yīng)用遷移,能夠應(yīng)對(duì)未來(lái)一段時(shí)間內(nèi)數(shù)據(jù)量的增長(zhǎng),為網(wǎng)絡(luò)系統(tǒng)穩(wěn)定運(yùn)行“排憂解難”。
ETL在IOE傳統(tǒng)框架中常用的工具之一,實(shí)現(xiàn)傳統(tǒng)架構(gòu)IOE到Hadoop云平臺(tái)的轉(zhuǎn)換需要格外注意ETL工具的功能性遷移。ETL直接決定著數(shù)據(jù)倉(cāng)庫(kù)的構(gòu)建水平,在該倉(cāng)庫(kù)中包含了不同業(yè)務(wù)系統(tǒng)中的分散用戶原始數(shù)據(jù)的提取、清洗等,以及對(duì)于用戶數(shù)據(jù)信息的加載和定義等。通常情況下應(yīng)用傳統(tǒng)框架IOE中的ETL進(jìn)行數(shù)據(jù)抽取主要分為兩種形式:PULL和PUSH。PULL的數(shù)據(jù)抽取主要是通過(guò)從業(yè)務(wù)系統(tǒng)數(shù)據(jù)源中直接抽取數(shù)據(jù)信息,而PUSH則是源數(shù)據(jù)所在系統(tǒng),將數(shù)據(jù)借助預(yù)先定義的規(guī)則進(jìn)行數(shù)據(jù)信息的提取。在系統(tǒng)工具的幫助下直接生成了接口數(shù)據(jù)表和視圖。
那么在企業(yè)中應(yīng)用ETL工具的方式與數(shù)據(jù)抽取的方式不同。企業(yè)中應(yīng)用的ETL方式主要分為兩種:第一,ETL;第二,ELT。這種數(shù)據(jù)轉(zhuǎn)換工具的實(shí)際區(qū)別在于其轉(zhuǎn)換的位置不同。其中ETL的過(guò)程主要是從比較分散形式的業(yè)務(wù)系統(tǒng)中獲取數(shù)據(jù)信息。并且在工具中實(shí)現(xiàn)數(shù)據(jù)信息轉(zhuǎn)換,最終將轉(zhuǎn)換得到的結(jié)果應(yīng)用到數(shù)據(jù)表中。該種數(shù)據(jù)處理形式中所應(yīng)用的目標(biāo)庫(kù)壓力比較小。伴隨著數(shù)據(jù)倉(cāng)庫(kù)實(shí)際處理能力的提升,數(shù)據(jù)信息轉(zhuǎn)換工作也可以應(yīng)用到數(shù)據(jù)倉(cāng)庫(kù)中來(lái)實(shí)現(xiàn)其功能。該種數(shù)據(jù)處理過(guò)程實(shí)際上就是ELT過(guò)程,最為典型的方式為Hadoop云平臺(tái)的應(yīng)用[1]。
2.1 平臺(tái)介紹
2003年Apache軟件基金會(huì)旗下研發(fā)出開(kāi)源分布式計(jì)算平臺(tái)——Hadoop,該平臺(tái)能夠針對(duì)數(shù)據(jù)、帶寬等問(wèn)題進(jìn)行綜合性的處理,有效的提升網(wǎng)絡(luò)系統(tǒng)的性能。從功能上與傳統(tǒng)架構(gòu)IOE相比,更加具備優(yōu)勢(shì)。在該平臺(tái)技術(shù)中包含了兩大核心技術(shù),分別為MapReduce和HDFS。其中HDFS為Hadoop整個(gè)系統(tǒng)的底層支持,而MapReduce為分布式處理的實(shí)際計(jì)算框架[2]。
2.2 計(jì)算框架
MapReduce技術(shù)是谷歌所提出的一種并行性的計(jì)算模型,該模型能夠應(yīng)用于實(shí)際的數(shù)據(jù)信息處理以及的參數(shù)演化。同時(shí)該種模型以其數(shù)據(jù)信息的并行處理能力為系統(tǒng)提供較為高效的數(shù)據(jù)信息處理方案。該模型的實(shí)際應(yīng)用思想主要是從函數(shù)式編程和矢量編程語(yǔ)言中借鑒而來(lái),與計(jì)算機(jī)系統(tǒng)中的“分而治之”思想相互融合。Map能夠?qū)⑾到y(tǒng)中比較復(fù)雜的問(wèn)題分解為相互獨(dú)立各不干擾的子問(wèn)題。當(dāng)在數(shù)據(jù)信息處理系統(tǒng)中輸入關(guān)鍵值時(shí),可以通過(guò)合并數(shù)據(jù)信息的方式降低傳輸帶寬壓力[3]。
2.3 HDFS
HDFS與系統(tǒng)中其他的操作文件塊一致,在HDFS中的文件都需要被分割為若干塊進(jìn)行數(shù)據(jù)信息的存儲(chǔ)。在這其中的快就是HDFS文件處理環(huán)節(jié)中的基本邏輯單元。HDFS的應(yīng)用都是為對(duì)大文件的設(shè)計(jì)需求所進(jìn)行開(kāi)發(fā)。文件塊的處理具有以下幾個(gè)優(yōu)點(diǎn):(1)當(dāng)文件的總磁盤(pán)容量不超過(guò)HDFS總量時(shí)就可以直接進(jìn)行存儲(chǔ),并且不會(huì)受到單一節(jié)點(diǎn)磁盤(pán)容量的限制;(2)抽象塊是設(shè)計(jì)能夠有效地簡(jiǎn)化存儲(chǔ)子系統(tǒng)管理方式,保障文件塊與描述文件塊的源數(shù)據(jù)信息能夠分開(kāi);(3)系統(tǒng)中的容錯(cuò)力有效的提升[4]。
3.1 關(guān)系型數(shù)據(jù)庫(kù)與Hive之間的數(shù)據(jù)遷移
在ETL應(yīng)用遷移設(shè)計(jì)當(dāng)中,對(duì)于關(guān)系型數(shù)據(jù)庫(kù)與Hive之間的數(shù)據(jù)遷移比較關(guān)鍵。在該種關(guān)系數(shù)據(jù)遷移環(huán)節(jié)中,需要借助Sqoop所提供的API來(lái)實(shí)現(xiàn)。在該種數(shù)據(jù)遷移過(guò)程中會(huì)因權(quán)限的問(wèn)題產(chǎn)生數(shù)據(jù)傳導(dǎo)限制,在數(shù)據(jù)導(dǎo)入的過(guò)程中設(shè)計(jì)了Sever端和Client 端。從Sqoop的導(dǎo)入導(dǎo)出程序分析中能夠發(fā)現(xiàn),在Client端首先進(jìn)行參數(shù)配置文件的讀取,并且進(jìn)行相應(yīng)的參數(shù)驗(yàn)證,當(dāng)參數(shù)正確的時(shí)候,進(jìn)行下一步參數(shù)格式化處理,并且向系統(tǒng)端口中發(fā)出Post請(qǐng)求,注重編碼的設(shè)置。在Server端口中接受Post參數(shù),導(dǎo)入最新的Hadoop配置文件,并且直接調(diào)用Sqoop的RunTool方法。如果參數(shù)驗(yàn)證失敗,則需要退出。在Sqoop抽取數(shù)據(jù)時(shí)啟動(dòng)MapReduce過(guò)程,由于數(shù)據(jù)源自身的特殊性導(dǎo)致其數(shù)據(jù)信息可能會(huì)出現(xiàn)傾斜的情況。例如,當(dāng)以“A”開(kāi)頭的數(shù)據(jù)量是“M”開(kāi)頭的幾十倍時(shí),就會(huì)產(chǎn)生一定的數(shù)據(jù)傾斜[5]。
3.2 服務(wù)器與HDFS之間的數(shù)據(jù)遷移
當(dāng)前,能夠直接應(yīng)用于傳統(tǒng)架構(gòu)向著云平臺(tái)中傳輸數(shù)據(jù)遷移的文件大部分為第三方面的開(kāi)發(fā)包。比較常見(jiàn)的有:Apache FTP Client數(shù)據(jù)傳輸接口。對(duì)于該種傳輸文件,Linux ftp命令也能夠?qū)崿F(xiàn)文件的實(shí)際傳輸。Hadoop整套的系統(tǒng)中文編碼都是在UTF-8的基礎(chǔ)上,相應(yīng)的數(shù)據(jù)日志文件環(huán)境為GBK編碼。為了使得數(shù)據(jù)傳輸在HDFS上依然能夠?qū)崿F(xiàn),需要對(duì)文件進(jìn)行轉(zhuǎn)碼處理[6]。
3.3 遷移設(shè)計(jì)
在研究傳統(tǒng)架構(gòu)IOE到Hadoop云平臺(tái)的應(yīng)用遷移時(shí),以IBM WebSphere DataStage導(dǎo)出的結(jié)構(gòu)化配置文件和半結(jié)構(gòu)化的ETL函數(shù)式配置文件的轉(zhuǎn)換程序設(shè)計(jì)為研究對(duì)象,相應(yīng)的遷移規(guī)則按照SQL+TCL進(jìn)行遷移設(shè)計(jì)。首先,SQL是一種數(shù)據(jù)庫(kù)的查詢語(yǔ)言,該種語(yǔ)言的應(yīng)用執(zhí)行主要是按照語(yǔ)句執(zhí)行,將其實(shí)際語(yǔ)句應(yīng)用到TCL腳本語(yǔ)言當(dāng)中。邏輯程序開(kāi)始時(shí),按照TCL的處理邏輯,將SQL語(yǔ)句抽取出來(lái),然后進(jìn)行數(shù)據(jù)類型以及數(shù)據(jù)語(yǔ)句的替換。接下來(lái)對(duì)SQL語(yǔ)句進(jìn)行改寫(xiě),編寫(xiě)UDF函數(shù)實(shí)現(xiàn)關(guān)系,并且實(shí)際數(shù)據(jù)庫(kù)函數(shù)功能;當(dāng)HIVE不支持相應(yīng)語(yǔ)句的情況下,對(duì)其進(jìn)行同義轉(zhuǎn)換。
綜上所述,分布式計(jì)算平臺(tái)——Hadoop,該平臺(tái)能夠針對(duì)數(shù)據(jù)、帶寬等問(wèn)題進(jìn)行綜合性的處理,有效的提升網(wǎng)絡(luò)系統(tǒng)的性能。從功能上與傳統(tǒng)架構(gòu)IOE相比,更加具備優(yōu)勢(shì)。ETL為傳統(tǒng)架構(gòu)IOE的關(guān)鍵工具,在對(duì)其向Hadoop云平臺(tái)進(jìn)行遷移研究中,可以通過(guò)關(guān)系型數(shù)據(jù)庫(kù)與Hive之間的數(shù)據(jù)遷移、服務(wù)器與HDFS之間的數(shù)據(jù)遷移等進(jìn)行遷移設(shè)計(jì)。
[1]劉長(zhǎng)亮.從傳統(tǒng)架構(gòu)IOE到Hadoop云平臺(tái)的應(yīng)用遷移研究與實(shí)現(xiàn)[D].北京郵電大學(xué),2015.
[2]王華.基于YARN的數(shù)據(jù)挖掘系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京郵電大學(xué),2015.
[3]李青云.基于HBase的應(yīng)用平臺(tái)的研究與實(shí)現(xiàn)[D].北京郵電大學(xué),2015.
[4]劉珂.基于Hadoop平臺(tái)的大數(shù)據(jù)遷移與查詢方法研究及應(yīng)用[D].武漢理工大學(xué),2014.
[5]郭雷風(fēng).農(nóng)業(yè)科研云原型系統(tǒng)設(shè)計(jì)與應(yīng)用理論研究[D].中國(guó)農(nóng)業(yè)科學(xué)院,2011.
[6]張曉航.大數(shù)據(jù)時(shí)代電信運(yùn)營(yíng)商IT架構(gòu)的轉(zhuǎn)型與演進(jìn)方案探討[J].移動(dòng)通信,2014.