張黎平,段淑萍,俞占倉
(甘肅機(jī)電職業(yè)技術(shù)學(xué)院,甘肅天水,741000)
Hadoop屬于一個(gè)開源、可靠穩(wěn)定、可擴(kuò)展、低成本的分布式計(jì)算存儲系統(tǒng),主要通過Apache基金會(huì)開發(fā)的分布式系統(tǒng)基本架構(gòu)。Hadoop允許采用簡單的編程模型跨計(jì)算機(jī)群分布式處理大規(guī)模數(shù)據(jù)集,同時(shí)能夠?yàn)閼?yīng)用提供安全穩(wěn)定性和數(shù)據(jù)移動(dòng),保證共享存儲和分析系統(tǒng)的可靠性,主要功能包含文件系統(tǒng)HDFS、MapReduce軟件架構(gòu)[1]。HDFS提供高吞吐量的數(shù)據(jù)訪問,在大型數(shù)據(jù)集上具有良好的適應(yīng)性,同時(shí)MapReduce在大型數(shù)據(jù)集上能夠有效并行運(yùn)算,提供良好的數(shù)據(jù)分析支持;HDFS能夠有效提供存儲支持。
Hadoop提供數(shù)據(jù)概要、查詢和分析數(shù)據(jù)倉庫基本架構(gòu)的Apache Hive。Hive定義了簡單的類SQL查詢語言,簡稱HQL,支持用戶通過其查詢數(shù)據(jù),同時(shí)對Hadoo文件系統(tǒng)中儲存的數(shù)據(jù)進(jìn)行直接適用,借助解釋器將HQL語句直接轉(zhuǎn)變成MapReduce作業(yè)上傳到Hadoop集群中,Hadoop能夠針對作業(yè)執(zhí)行的全流程進(jìn)行監(jiān)控管理,之后向用戶反饋?zhàn)鳂I(yè)執(zhí)行結(jié)果。Hive最優(yōu)應(yīng)用場合是大數(shù)據(jù)集的批處理作業(yè)。另外,Apache基于Hadoop組織開發(fā)的HBase數(shù)據(jù)查詢系統(tǒng),主要目標(biāo)是處理和存儲大規(guī)模數(shù)據(jù),同時(shí)針對大規(guī)模數(shù)據(jù)提供實(shí)時(shí)的讀寫訪問,屬于一種高性能、可伸縮的分布式存儲系統(tǒng),呈現(xiàn)出較強(qiáng)的負(fù)載均衡管控和容錯(cuò)性能。
(1)功能性需求分析
①數(shù)據(jù)采集模塊設(shè)計(jì)要保證其魯棒性,減少其需要修改的代碼,實(shí)現(xiàn)數(shù)據(jù)源、目錄、用戶名和密碼等設(shè)計(jì)成可配參數(shù),同時(shí)爬取的數(shù)據(jù)傳輸通常是利用T+1的方式,當(dāng)需要傳送的數(shù)據(jù)量保持30-50G/天,記錄數(shù)在千萬到億之間,這是每天爬取的全部業(yè)務(wù)數(shù)據(jù)總和,保持業(yè)務(wù)數(shù)大約10個(gè)/天,當(dāng)前總業(yè)務(wù)大約有39個(gè),包含每天的更新和一周的更新,需要將其分配在相對應(yīng)的日期進(jìn)行處理。
②數(shù)據(jù)處理、存儲模塊。數(shù)據(jù)處理模塊需要完成數(shù)據(jù)清洗和加工過程,數(shù)據(jù)源從互聯(lián)網(wǎng)上搜集的數(shù)據(jù),呈現(xiàn)出參差不齊的特點(diǎn),需要通過繁雜的清洗過程才能應(yīng)用,保持?jǐn)?shù)據(jù)處理加工效率,需要做到以下幾點(diǎn):
A.高效處理億級數(shù)據(jù);
B.減少數(shù)據(jù)清洗代碼開發(fā)成本,代碼量,便于維護(hù),具備復(fù)用性;
C.業(yè)務(wù)數(shù)據(jù)不斷增加,綜合考慮整個(gè)平臺系統(tǒng)能夠迅速添加新業(yè)務(wù)流程,具備較強(qiáng)的擴(kuò)展性,呈現(xiàn)出較高效率。
③數(shù)據(jù)同步模塊設(shè)計(jì)過程中能夠?qū)崿F(xiàn)數(shù)據(jù)同步過程,將處理完成的數(shù)據(jù)同步到關(guān)系形數(shù)據(jù)庫中,便于對外實(shí)時(shí)提供查詢服務(wù),呈現(xiàn)出良好的數(shù)據(jù)庫支持,支持持市場上全部主流數(shù)據(jù)庫,更加符合業(yè)務(wù)需求。
④系統(tǒng)調(diào)度模塊,主要針對以上幾個(gè)模塊整個(gè)FTL過程進(jìn)行自動(dòng)化,防止程序員重復(fù)工作,提高工作質(zhì)效,避免手工啟動(dòng)任務(wù)出現(xiàn)問題,同時(shí)保證系統(tǒng)持續(xù)自動(dòng)化運(yùn)行,降低運(yùn)維成本,能夠在數(shù)據(jù)處理產(chǎn)生錯(cuò)誤的情況下以郵件的形式發(fā)出警報(bào)。
(2)非功能性需求分析
①適用性,基于hadoop大數(shù)據(jù)處理平臺設(shè)計(jì)過程中需要增強(qiáng)全處理流程的自動(dòng)化,保持其全天持續(xù)自動(dòng)化運(yùn)行,不需要對現(xiàn)有數(shù)據(jù)流程進(jìn)行管理,同時(shí)需要考慮將來業(yè)務(wù)需求增加問題,確保其能夠迅速開發(fā)部署。
②使用性能。該平臺設(shè)計(jì)進(jìn)行數(shù)據(jù)ETL過程應(yīng)用的時(shí)間控制在1h之內(nèi),實(shí)現(xiàn)數(shù)據(jù)迅速同步,對外提供服務(wù)。
③易用性。該平臺全流程的部署情況可以通過web界面全面展現(xiàn),明確每個(gè)流程,數(shù)據(jù)處理流程報(bào)錯(cuò)的情況下能夠迅速定位錯(cuò)誤點(diǎn),找到錯(cuò)誤原因[2]。因此,設(shè)計(jì)者在實(shí)際操作中具有合理的注釋,確保其他開發(fā)設(shè)計(jì)人員接手能夠迅速掌握項(xiàng)目。
(1)數(shù)據(jù)采集模塊系統(tǒng)設(shè)計(jì)。該模塊的數(shù)據(jù)源主要是爬蟲集群Master節(jié)點(diǎn)上的文本文件,主要設(shè)計(jì)目標(biāo)將其傳送到hadoop集群上。Flume是良好的大量文件同步工具,具有可靠性、豐富采集格式、高吞吐量、松耦合性,同時(shí)支持?jǐn)?shù)據(jù)直接同步到HDFS的特點(diǎn),更加符合該平臺系統(tǒng)設(shè)計(jì)要求。該模塊中設(shè)計(jì)雙層Flume agent結(jié)構(gòu),首層agent能夠從爬蟲集群上的多個(gè)監(jiān)控目錄中采數(shù)據(jù)據(jù),傳送到二次agent,之后將數(shù)據(jù)傳送到HDFS上。
(2)數(shù)據(jù)處理、存儲模塊系統(tǒng)設(shè)計(jì)。該模塊具有一定的功能性和非功能性需求,系統(tǒng)設(shè)計(jì)過程中選擇hadoop大數(shù)據(jù)框架當(dāng)作平臺的存儲、計(jì)算系統(tǒng);選擇Hive清洗加工數(shù)據(jù),提高大型數(shù)據(jù)集處理的有效性。關(guān)系形數(shù)據(jù)庫中的數(shù)據(jù)存儲通常利星星型、雪花模型,能夠有效降低數(shù)據(jù)冗余程度,應(yīng)用兩個(gè)模型的數(shù)據(jù)庫進(jìn)行查詢的過程中關(guān)聯(lián)多個(gè)表獲得相應(yīng)結(jié)果[3]。該數(shù)據(jù)庫中的主鍵為關(guān)鍵件,實(shí)行關(guān)聯(lián)作業(yè)時(shí)才能優(yōu)化算法,同時(shí)能夠針對主鍵字創(chuàng)建索引,關(guān)聯(lián)操作的查詢性能影響不大。但是,Hive中沒有主鍵,索引支持較差,關(guān)聯(lián)操作大大降低查詢性能,需要設(shè)計(jì)者針對其進(jìn)行數(shù)據(jù)模型創(chuàng)建盡可能地的不采用星型、雪花模型,利用一個(gè)業(yè)務(wù)數(shù)據(jù)需要的信息全部存儲在相同表中,在一定程度上產(chǎn)生數(shù)據(jù)冗余,但是能夠有效提高Hive中的查詢性能。
(3)數(shù)據(jù)同步模塊系統(tǒng)設(shè)計(jì)。該模塊的源數(shù)據(jù)是HDFS,目標(biāo)是關(guān)系型數(shù)據(jù)庫Posrgre SQL,業(yè)務(wù)數(shù)據(jù)規(guī)模增大時(shí),企業(yè)可能會(huì)采用其他數(shù)據(jù)庫,要求該模塊能夠有效支市場上主流關(guān)系型數(shù)據(jù)庫,可以選擇Sqoop當(dāng)作數(shù)據(jù)同步工具,獲得較高工作效率,呈現(xiàn)出較強(qiáng)的適用性。
(4)系統(tǒng)調(diào)度模塊系統(tǒng)設(shè)計(jì)。該模塊需要計(jì)劃調(diào)度大數(shù)據(jù)處理流程,在出現(xiàn)錯(cuò)誤時(shí)以發(fā)送郵件的方式提醒,同時(shí)有助于開發(fā)設(shè)計(jì)人員迅速定位錯(cuò)誤位置,找到相關(guān)原因,采用針對性措施進(jìn)行妥善處理和修復(fù)。本設(shè)計(jì)中選擇Oozie當(dāng)作計(jì)劃調(diào)度工具,能夠支持多項(xiàng)任務(wù)調(diào)度,同時(shí)包括大數(shù)據(jù)處理平臺全部流程的技術(shù),支持失敗工作流,及時(shí)從任何節(jié)點(diǎn)重新運(yùn)轉(zhuǎn),有助于修復(fù)工資,最大程度地降低失敗產(chǎn)生的影響。另外,設(shè)計(jì)人員結(jié)合該平臺非功能性需求,增強(qiáng)整個(gè)數(shù)據(jù)采集、處理和存儲等全流程的可視化,便于使用和運(yùn)維,可以選擇HUE+Oozie高效完成系統(tǒng)調(diào)度工作。HUE能夠支持圖形化界面,以拖拉節(jié)點(diǎn)的方式創(chuàng)建Oozie工作流,同時(shí)實(shí)現(xiàn)增加、刪除和修改的功能,在實(shí)際操作中迅速找到Oozie工作流的任意節(jié)點(diǎn)日志,便于系統(tǒng)管理和開發(fā)設(shè)計(jì)人員的調(diào)試和運(yùn)維。
(1)Apache Hadoop,是當(dāng)前被廣泛運(yùn)用的版本,呈現(xiàn)出代碼開源、免費(fèi)應(yīng)用、活躍社區(qū)、更新速度快、大量顯示文檔等優(yōu)勢,但是在實(shí)際運(yùn)用過程中具有版本管理復(fù)雜混亂、集群部署和安裝、運(yùn)維繁雜、生態(tài)環(huán)境復(fù)雜等缺陷。因此,hadoop第三方發(fā)行版本對其進(jìn)行相應(yīng)的優(yōu)化和完善,如Cloudera的CDH運(yùn)用范圍較廣,效果較好,版本管理清晰,具有較強(qiáng)的安全穩(wěn)定性和兼容性,提供相應(yīng)的集群部署、安裝和配置工具,提高工作質(zhì)效,同時(shí)便于維護(hù)。因此,該大數(shù)據(jù)處理平臺創(chuàng)建中選擇Cloudera的CDH5.9.0版本,穩(wěn)定性較強(qiáng)。
(2)合理配置服務(wù)器環(huán)境。該平臺創(chuàng)建過程中設(shè)計(jì)ip地址網(wǎng)關(guān)地址子網(wǎng)掩碼等,保持靜態(tài)地址,設(shè)置命令:vim/etc/sysconfig/network-scirpts/ifcfg-eml
設(shè)計(jì)主機(jī)名,命令為vim/etc/sysconfig/network
配置和修改hosts文件,配置集群中主機(jī)名和ip對應(yīng)關(guān)系,命令:vim/etc/hosts配置ssh免密碼登錄,命令為cd/root/ssh ssh-keygen-trsa ssh-cppy-id mujinkeji2
配置時(shí)間同步,從主節(jié)點(diǎn)配置服務(wù)器端:vim/etc/ntp/conf
同時(shí)#讓190.168.100.0/24網(wǎng)段上機(jī)器能和被本機(jī)實(shí)現(xiàn)時(shí)間同步,
命令為:restrict 192.168.100.0mask255.255.255.0.nomodify notrap
安裝MySQL rpm-ivh MySQL-server-5.6.36-1.e17.x86-64.rpm
rpm-ivh MySQL-server-5.6.36-1.e17.x86-64.rpm
配置jdk 解壓安裝包:tar-xzvf jdk-8v102-linvxx64.tar.gz-C/opt。
(3)集節(jié)點(diǎn)電配置。當(dāng)前企業(yè)提供相關(guān)服務(wù)器進(jìn)行集群,正式創(chuàng)建集群之前,需要設(shè)計(jì)者明確不同節(jié)點(diǎn)上需要部署的全部逐漸,避免節(jié)點(diǎn)上組件分布不合理對集群的安全可靠性和使用性能產(chǎn)生不良影響。設(shè)計(jì)人員結(jié)合集群中多個(gè)組件的特征、性能要求,未來能否成為系統(tǒng)瓶頸,同時(shí)在集群中扮演的相關(guān)角色的關(guān)鍵程度等多個(gè)方面,科合理地配置不同節(jié)點(diǎn)上需要部署的相關(guān)組件,同時(shí)明確不同節(jié)點(diǎn)上服務(wù)器性能需求。
該平臺的數(shù)據(jù)采集模塊應(yīng)用flum監(jiān)控爬蟲集群上相對應(yīng)的業(yè)務(wù)數(shù)據(jù)存儲,在監(jiān)控目錄有數(shù)據(jù)的情況下能夠及時(shí)進(jìn)行同步。在這個(gè)過程中需要明確采集數(shù)據(jù)的實(shí)際情況,數(shù)據(jù)存放在非Hadoop集群服務(wù)器的機(jī)器上,業(yè)務(wù)數(shù)據(jù)保持存儲在相同目錄中,數(shù)據(jù)需要傳送到HDFS目錄上。數(shù)據(jù)處理模塊主要利用Hive實(shí)現(xiàn),同時(shí)編寫Hive QL進(jìn)行開發(fā),數(shù)據(jù)存儲模塊需要借助Hive實(shí)現(xiàn),將數(shù)據(jù)存放在Hive表中。
數(shù)據(jù)同步模塊主要通過Sqoop進(jìn)行實(shí)現(xiàn),數(shù)據(jù)同步涉及兩個(gè)位置:數(shù)據(jù)位置,在該大數(shù)據(jù)處理平臺的原數(shù)據(jù)位置在HDFS上的一個(gè)目錄下,需要將該目錄的全部文件的數(shù)據(jù),目錄命名規(guī)則:user/spqoop/export/業(yè)務(wù)數(shù)據(jù)名稱/如虛假號碼業(yè)務(wù)目錄:user/spqoop/export/fraud-phone/目標(biāo)位置,在該大數(shù)據(jù)處理平臺中的目標(biāo)位置為PostreSQL數(shù)據(jù)庫中的表,表明主要是業(yè)務(wù)數(shù)據(jù)名稱,進(jìn)而明確Sqoop的導(dǎo)入語句。
系統(tǒng)調(diào)度模塊主要是借助HUE+Oozie的組合進(jìn)行實(shí)現(xiàn),其中Oozie主要負(fù)責(zé)任務(wù)的調(diào)度,同時(shí)HUE能夠有效提供圖形化界面建立流程,不需要編寫繁雜的代碼,同時(shí)便于管理和查詢目前運(yùn)行的流程。采用HUE+Oozie的組合能夠迅速有效地部署新業(yè)務(wù)流程,實(shí)現(xiàn)所有業(yè)務(wù)流程的管理,隨時(shí)查詢歷史的任務(wù)執(zhí)行狀況。