亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        大數(shù)據(jù)Hadoop框架核心技術(shù)對(duì)比與實(shí)現(xiàn)

        2021-03-23 10:41:08張國(guó)華王自然周婷婷
        實(shí)驗(yàn)室研究與探索 2021年2期
        關(guān)鍵詞:數(shù)據(jù)處理代碼集群

        張國(guó)華,葉 苗,王自然,周婷婷

        (南京師范大學(xué)泰州學(xué)院信息工程學(xué)院,江蘇泰州 225300)

        0 引言

        Hadoop[1]是一個(gè)軟件框架模型,主要用于以高效和可擴(kuò)展的方式對(duì)大數(shù)據(jù)進(jìn)行分布式信息處理,具有可靠性高、容錯(cuò)能力強(qiáng)、搭建成本低、跨平臺(tái)等特點(diǎn)。它在處理半結(jié)構(gòu)化,非結(jié)構(gòu)化的數(shù)據(jù)方面優(yōu)勢(shì)明顯,目前得到了廣泛應(yīng)用,社會(huì)對(duì)于這方面的技術(shù)人才需求量巨大,因其概念繁多,原理復(fù)雜,掌握其核心技術(shù)的人才較少。為將Hadoop生態(tài)系統(tǒng)理順,本文從整體框架(見(jiàn)圖1)分析,在整個(gè)生態(tài)系統(tǒng)中最為核心的兩個(gè)技術(shù),一個(gè)是HDFS[2]實(shí)現(xiàn)的基礎(chǔ)數(shù)據(jù)的分布式存儲(chǔ),它利用集群存儲(chǔ)數(shù)據(jù)的能力,擴(kuò)展了計(jì)算機(jī)的存儲(chǔ)能力。這個(gè)技術(shù)對(duì)比單機(jī)版的文件系統(tǒng),例如Windows的文件系統(tǒng)FAT32,NTFS等就能區(qū)分其區(qū)別。其次是實(shí)現(xiàn)分布式并行編程模型MapReduce[3],它是利用廉價(jià)的計(jì)算機(jī)集群的綜合處理能力來(lái)處理HDFS上的數(shù)據(jù),相對(duì)于傳統(tǒng)并行計(jì)算框架,無(wú)須昂貴的服務(wù)器就可批處理非實(shí)時(shí)的海量數(shù)據(jù)。

        圖1 Hadoop生態(tài)系統(tǒng)

        仔細(xì)分析圖1 及查閱相關(guān)文獻(xiàn),不難發(fā)現(xiàn)涉及對(duì)底層HDFS 數(shù)據(jù)處理的技術(shù)主要有MapReduce、Spark[4]、Hive、Pig等。為研究上述數(shù)據(jù)處理技術(shù)的區(qū)別及優(yōu)勢(shì)。本文以最為經(jīng)典的分布式程序WordCount為例,設(shè)計(jì)了不同技術(shù)方法下的實(shí)驗(yàn),對(duì)比其適用場(chǎng)景及優(yōu)勢(shì),幫助學(xué)生迅速理解并掌握相關(guān)技術(shù)原理及方法。

        1 技術(shù)原理與對(duì)比

        1.1 MapReduce

        MapReduce 是一種分布式并行編程模型,是Hadoop 生態(tài)系統(tǒng)中的最為核心和最早出現(xiàn)的計(jì)算模型,MapReduce借助集群的力量解決大型數(shù)據(jù)處理問(wèn)題,其基本理念是“計(jì)算向數(shù)據(jù)靠攏”,采用分而治之的辦法,首先數(shù)據(jù)分割Split,接著由集群中的計(jì)算節(jié)點(diǎn)進(jìn)行本地Map 處理數(shù)據(jù),Shuffle 分類數(shù)據(jù),再Reduce匯總結(jié)果,該種模型可輕松解決TB 級(jí)別數(shù)據(jù)處理。基本流程如下圖2 所示。

        圖2 MapReduce工作流程

        這種技術(shù)也存在以下問(wèn)題:①頻繁訪問(wèn)HDFS,造成執(zhí)行速度相對(duì)較慢;②過(guò)于低層化且笨重,所有的數(shù)據(jù)處理均需要編寫(xiě)Map 和Reduce 函數(shù),技術(shù)復(fù)雜且耗費(fèi)時(shí)間,也并不是所有的數(shù)據(jù)邏輯均可編寫(xiě)成這兩個(gè)關(guān)鍵性函數(shù);③在實(shí)時(shí)數(shù)據(jù)處理方面相對(duì)于傳統(tǒng)技術(shù)無(wú)優(yōu)勢(shì)。為解決上述問(wèn)題,出現(xiàn)了第2 代的計(jì)算技術(shù)代表Spark。

        1.2 Spark

        Spark技術(shù)并不是完全摒棄MapReduce 技術(shù),而是對(duì)于MapReduce 技術(shù)的優(yōu)化,具體優(yōu)化體現(xiàn)在:①計(jì)算性能[5],Spark 充分利用服務(wù)器內(nèi)存,減少頻繁磁盤(pán)I/O讀寫(xiě)來(lái)提升性能;②應(yīng)用程序非常靈活,更容易實(shí)現(xiàn)。Spark核心代碼是非常輕量級(jí)的Scala 文件[6],同時(shí)它也可以在各種編程語(yǔ)言中使用,包括目前流行的Java 和Python 語(yǔ)言,也可在Shell中進(jìn)行交互式查詢,更加精煉,易于掌握;③具備很強(qiáng)的處理實(shí)時(shí)數(shù)據(jù)能力。Spark通過(guò)Spark Streaming 技術(shù)進(jìn)行數(shù)據(jù)的實(shí)時(shí)處理,包含了很多功能強(qiáng)大的應(yīng)用程序接口,用戶可以快速開(kāi)發(fā)相關(guān)應(yīng)用程序。對(duì)于數(shù)據(jù)處理,無(wú)論是MapReduce還是Spark 都離不開(kāi)Map 和Reduce 的思想束縛,因此Hadoop生態(tài)系統(tǒng)中出現(xiàn)了更容易掌握類似于輕量級(jí)腳本語(yǔ)言[7]的技術(shù)Pig,及類似于通用關(guān)系型數(shù)據(jù)庫(kù)語(yǔ)言Sql的技術(shù)Hive。

        1.3 Hive

        Hive是Hadoop 生態(tài)系統(tǒng)中的數(shù)據(jù)倉(cāng)庫(kù)工具,可以把數(shù)據(jù)文件抽象成數(shù)據(jù)表,并能提供類似傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)結(jié)構(gòu)化查詢語(yǔ)言功能的專用語(yǔ)言HIVESQL(簡(jiǎn)稱HQL),底層將HQL 語(yǔ)句轉(zhuǎn)換為對(duì)應(yīng)邏輯的MapReduce任務(wù)進(jìn)行運(yùn)行。主要適用場(chǎng)景為數(shù)據(jù)報(bào)表、頻繁數(shù)據(jù)分析等領(lǐng)域,由于HQL 與SQL 類似,促使其成為Hadoop與其他智能工具進(jìn)行結(jié)合的理想點(diǎn),具備傳統(tǒng)數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)即可快速掌握。

        1.4 Pig

        Pig[8]是比Hive 更加輕量級(jí)技術(shù),可不涉及數(shù)據(jù)表,在大數(shù)據(jù)領(lǐng)域信息處理具備更加靈活、通用等特性,其核心主要采用了非常簡(jiǎn)潔的Pig Latin 腳本語(yǔ)言來(lái)轉(zhuǎn)換數(shù)據(jù)流嵌入到較大程序中,適用于數(shù)據(jù)管道、機(jī)器學(xué)習(xí)等領(lǐng)域。

        2 實(shí)驗(yàn)環(huán)境搭建與數(shù)據(jù)準(zhǔn)備

        WordCount程序[9]是分布式程序中的最經(jīng)典和最簡(jiǎn)單的案例,類似于單機(jī)入門(mén)級(jí)程序HelloWord,主要是統(tǒng)計(jì)HDFS上出現(xiàn)單詞的個(gè)數(shù)(區(qū)分單詞是根據(jù)單詞間空格),依次介紹在MapReduce、Spark、Hive、Pig的具體實(shí)現(xiàn),并且易于還原,直觀感受技術(shù)細(xì)節(jié)和區(qū)別,幫助深刻領(lǐng)悟技術(shù)特點(diǎn)和優(yōu)勢(shì)。

        2.1 實(shí)驗(yàn)環(huán)境搭建

        Hadoop有單機(jī)、偽分布式、完全分布式3 種運(yùn)行模式,單機(jī)模式無(wú)集群的思維,無(wú)太大研究意義,不選擇,完全分布式方式實(shí)現(xiàn)較為煩瑣暫不采用而偽分布式能夠使用一臺(tái)計(jì)算機(jī)模擬集群工作,具備分布式思維且易于還原實(shí)現(xiàn),且流程基本等同完全分布式系統(tǒng),本文使用偽分布式完成以下實(shí)驗(yàn),Hadoop 偽分布式及相關(guān)軟件快速搭建步驟如下:

        步驟1Windows 操作系統(tǒng)下安裝虛擬機(jī)VirtualBox-5.2.16。

        步驟2在虛擬機(jī)中導(dǎo)入互聯(lián)網(wǎng)提供的(安裝配置好Hadoop相關(guān)軟件)Ubuntu 版操作系統(tǒng)的鏡像文件。(下載URL:http://dblab.xmu.edu.cn/blog/),如有軟件報(bào)錯(cuò),根據(jù)虛擬機(jī)下方警告提示點(diǎn)擊更換硬件配置即可。

        步驟3跨操作系統(tǒng)數(shù)據(jù)存儲(chǔ)解決辦法,在虛擬機(jī)VirtualBox中通過(guò)設(shè)置選擇USB設(shè)備,插入U(xiǎn)盤(pán),點(diǎn)擊圖3 紅圈內(nèi)添加對(duì)應(yīng)品牌外部存儲(chǔ)器至虛擬機(jī)中,可實(shí)現(xiàn)不同操作系統(tǒng)下文件的存儲(chǔ)(見(jiàn)圖3)。

        圖3 虛擬機(jī)中共享外部存儲(chǔ)器

        步驟4網(wǎng)絡(luò)使用問(wèn)題解決方法,在虛擬機(jī)VirtualBox中通過(guò)設(shè)置網(wǎng)絡(luò),選擇橋接網(wǎng)絡(luò)并全部允許,見(jiàn)圖4 紅圈,即可在Windows 和Ubuntu 操作系統(tǒng)中同時(shí)上網(wǎng)。

        圖4 虛擬機(jī)中網(wǎng)絡(luò)配置

        2.2 數(shù)據(jù)準(zhǔn)備

        在Ubuntu系統(tǒng)[10]隨機(jī)生成100 個(gè)含有單詞的txt文件,為了便于實(shí)現(xiàn),采用了復(fù)制文件方式進(jìn)行,并上傳至HDFS中。具體實(shí)驗(yàn)步驟如下:

        步驟1通過(guò)start-dfs.sh命令來(lái)啟動(dòng)整個(gè)hadoop集群(JPS查看集群?jiǎn)?dòng)結(jié)果)。

        步驟2通過(guò)input 命令將本地系統(tǒng)的文件復(fù)制到集群HDFS 文件系統(tǒng),將所有數(shù)據(jù)放入HDFS Myinput目錄中。

        步驟3通過(guò)URL 查看數(shù)據(jù)準(zhǔn)備結(jié)果(http://localhost:50070)。

        Hadoop軟件安裝配置復(fù)雜,很多初學(xué)者僅僅因?yàn)樽约喊惭b配置無(wú)法完成,購(gòu)買(mǎi)相關(guān)大數(shù)據(jù)實(shí)驗(yàn)設(shè)備昂貴,因而放棄學(xué)習(xí),本文通過(guò)上述方法,無(wú)須額外軟硬件資本,即可完成基礎(chǔ)實(shí)驗(yàn)平臺(tái)搭建及數(shù)據(jù)準(zhǔn)備。

        3 實(shí)驗(yàn)核心代碼與結(jié)果

        以下實(shí)驗(yàn)均在偽分布式[11]下實(shí)現(xiàn),使用單核Intel core i5-2450M CPU,內(nèi)存8GB,SSD 硬盤(pán),其中內(nèi)存4GB分配給虛擬機(jī)。

        3.1 WordCount—MapReduce版本

        (1)核心代碼。

        (2)實(shí)驗(yàn)步驟與結(jié)果。將核心代碼Mywordcount.java編譯打包成Mywordcount.jar包。進(jìn)入相關(guān)目錄通過(guò)執(zhí)行./bin/Hadoop/jar Mywordcount.jar Myinput Myoutput。在Myoutput文件夾中會(huì)出現(xiàn)統(tǒng)計(jì)結(jié)果為兩個(gè)文件,最后通過(guò)dfs -cat Myoutput/*命令顯示詞頻,如圖5所示結(jié)果,分別標(biāo)出了詞頻次數(shù)和對(duì)應(yīng)的單詞,此實(shí)驗(yàn)如果重復(fù)執(zhí)行MapReduce,應(yīng)注意初始化名稱節(jié)點(diǎn)并刪除臨時(shí)文件夾,否則統(tǒng)計(jì)結(jié)果無(wú)法覆蓋。MapReduce編寫(xiě)的代碼量較長(zhǎng),時(shí)間復(fù)雜度也較高。通過(guò)實(shí)驗(yàn)過(guò)程和結(jié)果證明了本文1.1所述的特點(diǎn)和問(wèn)題。

        圖5 MapReduce執(zhí)行結(jié)果

        3.2 WordCount—Spark版本

        Spark實(shí)現(xiàn)的方式可以有多種,例如Scala 語(yǔ)言,Spark本地類庫(kù),JAVA 語(yǔ)言等,本文采用了Scala 語(yǔ)言,統(tǒng)計(jì)與3.1 相同的數(shù)據(jù)集。

        (1)核心代碼。

        (2)實(shí)驗(yàn)步驟與結(jié)果。創(chuàng)建一個(gè)SparkConf 對(duì)象[12],設(shè)置處理數(shù)據(jù)的地址等主要配置信息,接著創(chuàng)建SparkContext 對(duì)象,它是Spark 所有功能的入口,無(wú)論采用何種方式均需實(shí)現(xiàn),最后啟動(dòng)HDFS 和相關(guān)服務(wù),編寫(xiě)執(zhí)行核心代碼,實(shí)驗(yàn)結(jié)果類似圖5,時(shí)間復(fù)雜度降低。通過(guò)實(shí)驗(yàn)過(guò)程和結(jié)果證明了本文1.2 所述的特點(diǎn)和問(wèn)題。

        3.3 WordCount—Hive版本

        (1)核心代碼。

        (2)實(shí)驗(yàn)步驟與結(jié)果。在Hive[12]中創(chuàng)建一個(gè)臨時(shí)表Mytable,其次通過(guò)執(zhí)行shell命令load data inpath'/1.txt'overwrite into table Mytable將數(shù)據(jù)導(dǎo)入到表中,最后通過(guò)執(zhí)行Hivesql命令即可完成統(tǒng)計(jì),統(tǒng)計(jì)類似圖5。通過(guò)實(shí)驗(yàn)過(guò)程和結(jié)果證明了本文1.3 所述的特點(diǎn)和問(wèn)題。

        3.4 WordCount—Pig版本

        (1)核心代碼

        (2)實(shí)驗(yàn)步驟與結(jié)果。該實(shí)驗(yàn)直接使用簡(jiǎn)潔的腳本語(yǔ)言Pig Latin[13],主要步驟為數(shù)據(jù)加載,區(qū)分單詞,單詞分組統(tǒng)計(jì)等,無(wú)論是書(shū)寫(xiě)代碼的難度、通用性還是靈活性都大大提升。實(shí)驗(yàn)結(jié)果類似圖5,通過(guò)實(shí)驗(yàn)過(guò)程和結(jié)果證明了本文1.4 所述的特點(diǎn)和問(wèn)題。

        3.5 實(shí)驗(yàn)結(jié)果對(duì)比

        通過(guò)對(duì)上述4 個(gè)實(shí)驗(yàn)實(shí)現(xiàn),學(xué)生對(duì)比實(shí)驗(yàn)步驟和核心代碼,可清楚了解分布式并行計(jì)算的MapReduce的工作原理及問(wèn)題,但其Map 和Reduce 函數(shù)較難編寫(xiě)和理解,通過(guò)Spark 優(yōu)化了MapReduce 實(shí)時(shí)數(shù)據(jù)處理等問(wèn)題,而Hive 使用了類似傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)Sql的Hivesql語(yǔ)言[14]來(lái)解決分布式數(shù)據(jù)庫(kù)HIVE 表中數(shù)據(jù)處理問(wèn)題,有數(shù)據(jù)庫(kù)基礎(chǔ)的學(xué)生易于適應(yīng)和掌握,最后的腳本語(yǔ)言Pig Latin 通過(guò)腳本能自動(dòng)生成底層MapReduce程序,并且無(wú)需考慮函數(shù)參數(shù)限制,具備更強(qiáng)的通用型[15],大大降低了程序開(kāi)發(fā)難度。

        4 結(jié)語(yǔ)

        通過(guò)上述4 個(gè)對(duì)比實(shí)驗(yàn),使得學(xué)生理解分布式并行處理技術(shù)的核心框架,循序漸進(jìn)掌握Hadoop核心處理技術(shù),理順大數(shù)據(jù)關(guān)鍵技術(shù)之間的關(guān)系,通過(guò)對(duì)經(jīng)典分布式程序WordCount案例的技術(shù)對(duì)比,直觀體會(huì);領(lǐng)悟技術(shù)優(yōu)化過(guò)程、適用場(chǎng)景,希望通過(guò)對(duì)比試驗(yàn)不僅能給學(xué)生帶來(lái)一些技術(shù)和原理上的開(kāi)拓性思考,而且也能給教師培養(yǎng)創(chuàng)新且務(wù)實(shí)的大數(shù)據(jù)人才提供一些啟示。

        猜你喜歡
        數(shù)據(jù)處理代碼集群
        認(rèn)知診斷缺失數(shù)據(jù)處理方法的比較:零替換、多重插補(bǔ)與極大似然估計(jì)法*
        ILWT-EEMD數(shù)據(jù)處理的ELM滾動(dòng)軸承故障診斷
        海上小型無(wú)人機(jī)集群的反制裝備需求與應(yīng)對(duì)之策研究
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        一種無(wú)人機(jī)集群發(fā)射回收裝置的控制系統(tǒng)設(shè)計(jì)
        電子制作(2018年11期)2018-08-04 03:25:40
        Python與Spark集群在收費(fèi)數(shù)據(jù)分析中的應(yīng)用
        勤快又呆萌的集群機(jī)器人
        天躁夜夜躁狼狠躁| 免费国产调教视频在线观看| 亚洲春色视频在线观看| 国产日产桃色精品久久久| 久久久久久夜精品精品免费啦| 色88久久久久高潮综合影院| 色一情一乱一伦| 荡女精品导航| 日韩av在线不卡一区二区三区| 中文字幕一区二区三区四区久久| 日本中文字幕婷婷在线| 国产av无码专区亚洲av中文| 久久久久99精品成人片试看| 久久久久久久国产精品电影| 一本色道加勒比精品一区二区| 国产亚洲精品色婷婷97久久久| 免费无码毛片一区二区app| 午夜福利电影| а的天堂网最新版在线| 三级国产高清在线观看| 无码孕妇孕交在线观看| 久久婷婷综合色丁香五月| 日本视频精品一区二区| 亚洲不卡一区二区视频| 狠狠噜天天噜日日噜无码| 国产mv在线天堂mv免费观看| 亚洲自拍另类欧美综合| 国产日韩一区二区精品| 亚洲熟女一区二区三区250p| 无码成人一区二区| 国产精品主播视频| 久久久精品亚洲懂色av| 中文字幕中文字幕777| 图片小说视频一区二区| 又白又嫩毛又多15p| 国产一区二区精品尤物| 精品一区二区三区老熟女少妇| 日韩精品中文一区二区三区在线| 中文字幕一区在线观看视频| 午夜久久精品国产亚洲av| 亚洲天堂一区二区三区视频|