楊 丹,姜 華,張玉軍,趙 驥
“大數(shù)據(jù)技術(shù)”實(shí)驗(yàn)教學(xué)環(huán)境構(gòu)建研究
楊 丹,姜 華,張玉軍,趙 驥
(遼寧科技大學(xué) 計(jì)算機(jī)與軟件工程學(xué)院,遼寧 鞍山 114051)
該文研究了大數(shù)據(jù)技術(shù)課程實(shí)驗(yàn)教學(xué)環(huán)境的構(gòu)建。在綜合考慮已有實(shí)驗(yàn)設(shè)備和各種影響因素的條件下,提出在Linux虛擬機(jī)下安裝Hadoop集群,并安裝用Scala編程語言編寫的Spark計(jì)算框架,從而實(shí)現(xiàn)Hadoop+Spark的大數(shù)據(jù)技術(shù)實(shí)驗(yàn)教學(xué)環(huán)境構(gòu)建方案。該實(shí)驗(yàn)環(huán)境有助于提升大數(shù)據(jù)技術(shù)課程的理論教學(xué)效果,有助于學(xué)生更好地掌握分析和處理大數(shù)據(jù)的關(guān)鍵技術(shù),從而有助于達(dá)到培養(yǎng)創(chuàng)新型人才的目標(biāo)。
大數(shù)據(jù)技術(shù);Linux;實(shí)驗(yàn)教學(xué);Hadoop;Spark
近年來,大數(shù)據(jù)[1-4]的應(yīng)用遍布各領(lǐng)域、各行業(yè),大數(shù)據(jù)技術(shù)快速發(fā)展,國內(nèi)外高校計(jì)算機(jī)專業(yè)相繼開設(shè)了大數(shù)據(jù)相關(guān)課程,我校計(jì)算機(jī)與軟件工程學(xué)院將其作為本科生專業(yè)選修課。但是作為新興技術(shù)和學(xué)科方向,缺少相應(yīng)的實(shí)驗(yàn)教學(xué)環(huán)境和平臺。本文綜合考慮搭建成本、實(shí)驗(yàn)室已有設(shè)備和系統(tǒng)環(huán)境,以及學(xué)生的接受能力等,提出了在Linux虛擬機(jī)下安裝Hadoop[5-9]集群的搭建方案,但由于Hadoop的MapReduce[10-11]在運(yùn)算時(shí),需要將中間產(chǎn)生的數(shù)據(jù)存儲在硬盤中,磁盤的輸入和輸出往往成為性能上的瓶頸,造成讀寫數(shù)據(jù)延遲問題,因此安裝了基于內(nèi)存的Spark[12-14]計(jì)算框架,大幅提高了運(yùn)算性能。通過搭建Hadoop+Spark的大數(shù)據(jù)技術(shù)實(shí)驗(yàn)教學(xué)環(huán)境,能夠很好地解決學(xué)生理論學(xué)習(xí)與實(shí)踐脫節(jié)的問題,并大大降低了學(xué)生學(xué)習(xí)大數(shù)據(jù)技術(shù)的門檻。
由于本學(xué)院現(xiàn)有的實(shí)驗(yàn)室主機(jī)均為Windows操作系統(tǒng),而Hadoop主要是在Linux操作系統(tǒng)環(huán)境下運(yùn)行。而Ubuntu是Linux操作系統(tǒng)眾多版本中的一種,所以先下載安裝Ubuntu來提供Linux系統(tǒng)環(huán)境(如果電腦操作系統(tǒng)為Linux,則無需進(jìn)行下面1.1節(jié)的配置),而后再搭建Hadoop環(huán)境。本節(jié)提供2種Hadoop安裝方式,分別是Hadoop單節(jié)點(diǎn)安裝和多節(jié)點(diǎn)的集群安裝方式,單節(jié)點(diǎn)方式在運(yùn)算時(shí)無法達(dá)到多節(jié)點(diǎn)并行運(yùn)算時(shí)的速度,讀者可根據(jù)實(shí)際情況自行選擇安裝方式。
主要包括以下步驟:
(1)打開瀏覽器輸入 Ubuntu 的官網(wǎng)下載地址http://www.ubuntu.com/download/alternative_downloads,保存在計(jì)算機(jī)的某個(gè)目錄下;
(2)在虛擬機(jī)中導(dǎo)入下載文件;
(3)輸入用戶名、密碼,啟動(dòng)Ubuntu。
單節(jié)點(diǎn)Hadoop環(huán)境的安裝步驟如下:
(1)安裝JDK,使用命令首先查看Java版本,然后連接到APT Server接口,并更新軟件包,使用命令sudo apt-get install default-jdk安裝JDK;
(2)設(shè)置SSH管理節(jié)點(diǎn)用于管理計(jì)算節(jié)點(diǎn),使用命令sudo apt-get install ssh 安裝SSH;
(3)下載安裝Hadoop,設(shè)置Hadoop環(huán)境變量,編輯/.~bashrc將環(huán)境變量寫到該文件中,每次登錄無須重復(fù)設(shè)置環(huán)境變量,環(huán)境變量設(shè)置如圖1所示;
圖1 配置Hadoop的安裝與環(huán)境變量
(4)修改Hadoop配置文件,添加命令export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64,分別修改core-site.xml文件、yarn-site.xml文件、mapred-site. xml文件、hdfs-site.xm文件如圖2所示;
圖2 修改Hadoop配置文件
(5)使用命令start-all.sh啟動(dòng)Hadoop中的HDFS和YARN。
Hadoop集群架構(gòu)示意圖如圖3所示。
圖3 Hadoop集群架構(gòu)示意圖
Hadoop集群安裝需要至少4臺實(shí)體服務(wù)器,才能發(fā)揮其并行處理的優(yōu)勢。但考慮學(xué)院的實(shí)驗(yàn)室環(huán)境,為了方便大家實(shí)機(jī)演練,通過創(chuàng)建虛擬機(jī)master、data1、data2、data3予以解決。雖然一臺主機(jī)無法實(shí)現(xiàn)并行計(jì)算,但配置方法可以完全應(yīng)用于創(chuàng)建實(shí)體主機(jī)集群。由于配置data1、data2和data3的操作基本相同,下面只介紹data1的配置操作。
Hadoop安裝步驟如下:
(1)復(fù)制1.2節(jié)所創(chuàng)建的單節(jié)點(diǎn)Hadoop創(chuàng)建data1;
(2)配置data1的網(wǎng)卡和主機(jī)名,配置網(wǎng)卡使用命令sudo gedit /etc/network/interfaces,配置主機(jī)名使用命令sudo gedit /etc/hostname hosts,配置各節(jié)點(diǎn)主機(jī)名與對應(yīng)的IP使用命令sudo gedit /etc/hosts;
(3)分別修改配置文件core-site.xml、yarn- site.xml、mapred-site.xml和 hdfs-site.xml,其中core- site.xml和hdfs-site.xml配置與圖2(a)和圖2(d)相同,mapred-site.xml、yarn-site.xml的配置如圖4所示;
(4)使用命令sudo init 0重新啟動(dòng)后,查看data1的網(wǎng)絡(luò)配置是否成功,如果有eth0和eth1網(wǎng)卡同時(shí)出現(xiàn),表示網(wǎng)絡(luò)配置成功,同時(shí)可看到內(nèi)部網(wǎng)絡(luò)為172.16.100.101;
(5)復(fù)制data1服務(wù)器到data2、data3和master節(jié)點(diǎn),data2和data3操作步驟與data1操作相同;
(6)master節(jié)點(diǎn)使用SSH連接到data1,檢測 data1是否成功,啟動(dòng)HDFS和MapReduce。
圖4 mapred-site.xml和yarn-site.xml配置文件
以Hadoop自帶的經(jīng)典計(jì)算單詞數(shù)量的任務(wù)WordCount為測試程序。具體測試步驟如下:
(1)編輯WordCount.java;
(2)編譯并打包WordCound.java程序;
(3)使用Hadoop目錄下的LICENSE.txt文件作為測試文件,并上傳文本文件至HDFS;
(4)在Hadoop環(huán)境下運(yùn)行WordCount;
(5)輸出文件并存儲到HDFS中,可使用HDFS命令查看每個(gè)單詞出現(xiàn)的數(shù)量。
Spark可實(shí)現(xiàn)數(shù)據(jù)在內(nèi)存中存儲,并可對數(shù)據(jù)進(jìn)行重復(fù)利用。Spark支持Scala、Java、Python等語言,由于是由Scala語言開發(fā),所以安裝Spark前應(yīng)先安裝Scala。安裝步驟如下:
(1)下載Scala文件并解壓,將Scala移動(dòng)到/usr/local目錄下,設(shè)置Scala用戶環(huán)境變量,使用以下2條命令export SCALA_HOME=/usr/local/scala、export PATH=$PATH:${SCALA_HOME}/bin,并使用source ~/.bashrc命令讓環(huán)境變量生效;
(2)下載Spark并解壓,保存到目錄/usr/local/ spark,然后設(shè)置Spark用戶環(huán)境變量,使用命令export SCALA_HOME=/usr/local/spark和export PATH=$PATH: $SPARK_HOME/bin,使環(huán)境變量生效,并啟動(dòng)spark-shell交互界面;
(3)設(shè)置saprk-shell顯示信息,將log4j. rootCategory原本的INFO信息改為WARN,用于提示錯(cuò)誤或警告信息。
運(yùn)行程序步驟如下:
(1)使用命令start-all.sh啟動(dòng)Hadoop;
(2)使用命令spark-shell --master local[4],local[N]表示本地運(yùn)行且使用N個(gè)線程;
(3)讀取本地文件README.md,并列出數(shù)據(jù)記錄數(shù);
(4)讀取HDFS文件LICENSE.txt,并列出數(shù)據(jù)記錄數(shù)。
Spark的模式架構(gòu)如圖5所示。其中,Driver Program是程序員設(shè)計(jì)的Spark程序,每個(gè)程序必須定義SparkContext,它是開發(fā)Spark應(yīng)用程序的入口。Cluster Manager管理整個(gè)集群,集群中包含多個(gè)Worker Node,每個(gè)Worker Node都由Executor負(fù)責(zé)執(zhí)行任務(wù)。
圖5 Spark的集群模式結(jié)構(gòu)圖
Spark Standalone集群執(zhí)行環(huán)境構(gòu)建步驟如下:
(1)Spark系統(tǒng)中提供了環(huán)境變量的模板文件,復(fù)制該模板文件創(chuàng)建Spark-env.sh,設(shè)置環(huán)境配置文件spark-env.sh的IP為master,設(shè)置每個(gè)Worker使用的CPU核心和內(nèi)存的大小以及每個(gè)Worker的實(shí)例數(shù)量;
(2)將master的spark復(fù)制到data1,首先,使用SSH連接至data1,連接成功后創(chuàng)建spark目錄,更改所有者為hduser,使用命令sudo scp -r /usr/local/spark/ hduser@data1:/usr/local;
(3)將master的spark復(fù)制到data2和data3,操作步驟同(2);
(4)配置slave文件,使Spark Standalone Cluser所擁有的服務(wù)器為data1、data2和data3。
在Spark集群中運(yùn)行spark-shell的執(zhí)行步驟如下:
(1)啟動(dòng)master和salves節(jié)點(diǎn),使用命令/usr/local/spark/sbin/start-all.sh,再使用命令$spark- shell --master spark://master:7077運(yùn)行spark-shell程序;
(2)使用Spark Standalone Web UI界面,查看啟動(dòng)的worker與當(dāng)前spark-shell的狀態(tài)。
針對“大數(shù)據(jù)技術(shù)”課程實(shí)驗(yàn)教學(xué)的特點(diǎn)與學(xué)生培養(yǎng)目標(biāo),研究Linux系統(tǒng)下Hadoop+Spark教學(xué)實(shí)驗(yàn)環(huán)境的搭建。使學(xué)生通過該項(xiàng)實(shí)踐教學(xué),加深對大數(shù)據(jù)技術(shù)理論知識的理解和掌握,使學(xué)生能夠?qū)崿F(xiàn)從感性認(rèn)識到動(dòng)手實(shí)踐開發(fā)的躍升,避免紙上談兵,達(dá)到提高教學(xué)效果、培養(yǎng)學(xué)生工程實(shí)踐能力的目的。
[1] 呂立昌. 大數(shù)據(jù)技術(shù)在計(jì)算機(jī)信息安全中的應(yīng)用[J]. 電子技術(shù)與軟件工程,2019(15): 181–182.
[2] 原建偉,何玉輝,丁潔. 大數(shù)據(jù)實(shí)驗(yàn)云平臺的設(shè)計(jì)與實(shí)現(xiàn)[J]. 信息技術(shù),2018(2): 68–71.
[3] 韋程馨. 基于云計(jì)算的云數(shù)據(jù)管理技術(shù)[J]. 電子技術(shù)與軟件工程,2019(5): 145.
[4] 陳磊,吳曉暉. 基于Hadoop的分布式集群大數(shù)據(jù)動(dòng)態(tài)存儲系統(tǒng)設(shè)計(jì)[J]. 中國電子科學(xué)研究院學(xué)報(bào),2019,14(6): 593–598.
[5] 夏靖波,韋澤鯤,付凱,等. 云計(jì)算中Hadoop技術(shù)研究與應(yīng)用綜述[J]. 計(jì)算機(jī)科學(xué),2016, 43(11): 6–11, 48.
[6] 張逸然,陳龍,安向哲,等. 面向GPU計(jì)算平臺的歸約算法的性能優(yōu)化研究[J]. 計(jì)算機(jī)科學(xué),2019, 46(2): 306–314.
[7] 何沖. Hadoop集群調(diào)度優(yōu)化的研究[D]. 上海:上海師范大學(xué),2015.
[8] 王成,閆紅. 基于Hadoop技術(shù)的電信大數(shù)據(jù)平臺設(shè)計(jì)[J]. 電子技術(shù)與軟件工程,2019(15): 132–133.
[9] 李秋虹. 基于MapReduce的大規(guī)模數(shù)據(jù)挖掘技術(shù)研究[D]. 上海: 復(fù)旦大學(xué),2013.
[10] 米允龍,李金海,劉文奇,等. MapReduce框架下的粒概念認(rèn)知學(xué)習(xí)系統(tǒng)研究[J]. 電子學(xué)報(bào),2018,46(2): 289–297.
[11] 李港,劉玉程. Hadoop的兩大核心技術(shù)HDFS和MapReduce[J]. 電子技術(shù)與軟件工程,2018(7): 180.
[12] 卞琛,于炯,修位蓉,等. Spark框架并行度推斷算法[J]. 電子科技大學(xué)學(xué)報(bào),2019, 48(4): 567–574.
[13] 陳佳. 基于Spark的閉合序列模式手機(jī)病毒挖掘系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 北京: 北京郵電大學(xué),2019.
[14] 田璐,齊林海,李青,等. 基于Spark Streaming的電力流式大數(shù)據(jù)分析架構(gòu)及應(yīng)用[J]. 電力信息與通信技術(shù),2019, 17(2): 23–29.
Research on construction of experimental teaching environment for “Big data technology”
YANG Dan, JIANG Hua, ZHANG Yujun, ZHAO Ji
(School of Computer and Software Engineering, University of Science and Technology Liaoning, Anshan 114051, China)
The construction of experimental teaching environment is studied for the Big Data Technology course. Considering the existing experimental equipment and various influencing factors, this paper proposes to install Hadoop cluster under Linux virtual machine and Spark computing framework written in Scala programming language, realizing the construction of Hadoop+Spark experimental teaching environment for the big data technology. This experimental environment is helpful to improve the theoretical teaching effect of the Big Data Technology course, which helps students to better grasp the key technology of analyzing and processing big data and has achieved the goal of training innovative talents.
big data technology; Linux; experimental teaching; Hadoop; Spark
G642.423
A
1002-4956(2019)11-0193-04
10.16791/j.cnki.sjg.2019.11.047
2019-08-18
教育部“數(shù)啟科教 智見未來”產(chǎn)教聯(lián)合基金項(xiàng)目(2017B00007);教育部產(chǎn)學(xué)合作協(xié)同育人項(xiàng)目(201702124017,201702124008);遼寧省創(chuàng)新創(chuàng)業(yè)教育改革試點(diǎn)專業(yè)項(xiàng)目(遼教函[2017]838號);遼寧省普通本科高等學(xué)校向應(yīng)用型轉(zhuǎn)變示范專業(yè)項(xiàng)目(遼教函[2017]779號);遼寧省普通高等教育本科教學(xué)改革研究項(xiàng)目(遼教函[2018]471號);遼寧科技大學(xué)研究生教育改革與創(chuàng)新項(xiàng)目(2016YJSCX20)
楊丹(1978—),女,遼寧鞍山,博士,副教授,研究方向?yàn)榉植际接?jì)算、大數(shù)據(jù)管理等。E-mail: asyangdan@163.com