国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Linux平臺(tái)下的Hadoop和Spark集群搭建研究

2020-09-27 23:02:21林皓月段華瓊
電腦知識(shí)與技術(shù) 2020年23期
關(guān)鍵詞:分布式

林皓月 段華瓊

摘要:隨著云計(jì)算的興起,大數(shù)據(jù)受到越來越多的關(guān)注。為了將數(shù)據(jù)信息進(jìn)行專業(yè)化處理,引進(jìn)了Hadoop和Spark等大數(shù)據(jù)框架。其中Hadoop是最流行的處理平臺(tái),它主要解決了數(shù)據(jù)存儲(chǔ)和分布式計(jì)算的問題,而Spark是基于Hadoop中的分布式文件系統(tǒng)和Hadoop Yarn進(jìn)行計(jì)算。Hadoop和Spark的結(jié)合可以更好地提高計(jì)算速率和數(shù)據(jù)性能。該文首先介紹了Hadoop和Spark的特點(diǎn),然后對(duì)分布式集群的搭建進(jìn)行研究并實(shí)現(xiàn),給出了搭建步驟并完成了對(duì)集群的驗(yàn)證。

關(guān)鍵詞:Hadoop;Spark;分布式

中圖分類號(hào):TP311? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2020)23-0207-02

在網(wǎng)絡(luò)技術(shù)不斷發(fā)展的背景下,互聯(lián)網(wǎng)公司為了應(yīng)對(duì)大規(guī)模的信息與高吞吐的數(shù)據(jù)量,提出了Hadoop和Spark等大數(shù)據(jù)處理平臺(tái)。它們應(yīng)用范圍廣,給很多企業(yè),諸如騰訊、淘寶、Yahoo和優(yōu)酷等,帶來了豐厚的利潤(rùn)。因此,構(gòu)建一個(gè)高效的分布式大數(shù)據(jù)處理平臺(tái)是大數(shù)據(jù)研究的基礎(chǔ)。本文在Linux平臺(tái)下,將最流行的Hadoop框架和Spark框架結(jié)合起來,構(gòu)建了一個(gè)高效的大數(shù)據(jù)處理平臺(tái)。

1 Hadoop和Spark的簡(jiǎn)介

1.1 Hadoop的特點(diǎn)及MR的運(yùn)行過程

1) Hadoop的特點(diǎn)

Hadoop作為對(duì)大量數(shù)據(jù)分布式處理的基礎(chǔ)架構(gòu),其設(shè)計(jì)是為了用便宜的機(jī)器組成高可用的集群。它經(jīng)過多年的發(fā)展在大數(shù)據(jù)平臺(tái)上有一定地位,而且由于代碼開源,很多大數(shù)據(jù)開發(fā)人員還是會(huì)選擇基于Hadoop框架搭建項(xiàng)目。Hadoop工程包括HBase、Hive、Spark、Zookeeper等模塊,大多運(yùn)行在Linux系統(tǒng)上,其主要的特點(diǎn)是文件系統(tǒng)HDFS的分布式存儲(chǔ)和MapReduce的高性能計(jì)算。

2)MapReduce的運(yùn)行過程

MapReduce是面向大數(shù)據(jù)并行處理的計(jì)算模型、框架和平臺(tái),其運(yùn)行過程可以分為以下五點(diǎn)。

(1)將文件信息輸入,經(jīng)過split分割成數(shù)據(jù)塊和程序,并將這些塊和作業(yè)提交給一系列節(jié)點(diǎn)。Master節(jié)點(diǎn)負(fù)責(zé)調(diào)度,Map和Reduce負(fù)責(zé)執(zhí)行。

(2)Master節(jié)點(diǎn)接收到程序后,將數(shù)據(jù)提交給合適的Map節(jié)點(diǎn)和Reduce節(jié)點(diǎn)。

(3)Map節(jié)點(diǎn)啟動(dòng)執(zhí)行程序,讀取本地的數(shù)據(jù)塊,將數(shù)據(jù)進(jìn)行整理放在本地計(jì)算,同時(shí)告知Master節(jié)點(diǎn)Map已完成以及中間結(jié)果的存儲(chǔ)位置。

(4)Map輸出的鍵值對(duì)經(jīng)過shuffle混洗后,相同key的行會(huì)被直接輸送到企業(yè)同一個(gè)Reducer中,然后sort鍵,排好序后的值被放入其中一個(gè)信息列表中。

(5)Master節(jié)點(diǎn)等待Map節(jié)點(diǎn)完成,接著Reduce節(jié)點(diǎn)啟動(dòng),通過已知的存儲(chǔ)位置讀取數(shù)據(jù),并將數(shù)據(jù)處理后輸出結(jié)果。

1.2 Spark的特點(diǎn)及RDD的運(yùn)行過程

1)Spark的特點(diǎn)

Spark是基于MapReduce的第二代計(jì)算引擎,它通過優(yōu)化傳統(tǒng)的MapReduce模型來滿足之前HDFS以及MapReduce無法解決的問題,大大提高了效率,為處理流式數(shù)據(jù)以及其他需求提供了捷徑。它主要的特點(diǎn)是計(jì)算效率高,支持多種運(yùn)行模式,有高效的DAG引擎。雖然Saprk兼容性強(qiáng),但也不支持所有語(yǔ)言開發(fā)。因此,Hadoop和Spark等多個(gè)框架的結(jié)合可以更好地滿足用戶需求,提高產(chǎn)品效率。

2) RDD的運(yùn)行過程

RDD的運(yùn)行過程總結(jié)為以下三點(diǎn)。

(1)首先創(chuàng)建RDD,讀取文件。RDD可以從分布式文件系統(tǒng)、parallelize或本地文件系統(tǒng)創(chuàng)建。本研究中,Spark采用textFile方法從分布式文件系統(tǒng)中加載數(shù)據(jù)創(chuàng)建RDD。

(2)RDD的一系列轉(zhuǎn)換操作。RDD的Map():將每個(gè)元素傳遞到函數(shù)func中,并將研究結(jié)果返回為一個(gè)新的數(shù)據(jù)集;RDD的flatMap():與Map()相似,不同點(diǎn)在于每個(gè)輸入元素都可以映射到0或多個(gè)輸出結(jié)果;RDD的reduceByKey():應(yīng)用于map好的鍵值對(duì)(k,v),通過把每個(gè)key傳到函數(shù)中聚合后的結(jié)果,返回新的鍵值對(duì),它與groupByKey()的區(qū)別在于前者是使用函數(shù)合并相同鍵的值,可以自定義函數(shù),后者則是把同鍵的值分組,不能自定義函數(shù)。

(3)RDD進(jìn)行完以上操作后,經(jīng)行動(dòng)操作,把結(jié)果輸出。

2 Hadoop和Spark集群的搭建

2.1 配置Linux (切換到root用戶)

(1)準(zhǔn)備虛擬機(jī)。安裝三臺(tái)CentOS 7系統(tǒng)的虛擬機(jī),設(shè)置主機(jī)名為master,slave1,slave2。

(2)設(shè)置網(wǎng)絡(luò)和ip地址。在設(shè)置中點(diǎn)Wired Setting于ON,將三臺(tái)VM虛擬機(jī)的ip分別設(shè)置為192.168.100.100、192.168.100.101、192.168.100.102。

(3)配置時(shí)鐘同步。如果自動(dòng)配置則用命令 crontab -e 進(jìn)入編輯模式,輸入i插入“0 1 * * * /usr/sbin/ntpdate cn.pool.ntp.org”;如果手動(dòng)配置,則直接運(yùn)行命令 /user/sbin/ntpdate cn.pool.ntp.org。

(4)關(guān)閉防火墻。命令systemctl status firewalld.service可以查看防火墻狀態(tài);如果狀態(tài)處于running,則systemctl stop firewalld.service關(guān)閉防火墻;systemctl disable firewalld.service,可永久禁止防火墻服務(wù),下次重啟也不會(huì)開啟。

(5)配置host列表。在每臺(tái)虛擬機(jī)上執(zhí)行命令 vi /etc/hosts添加三行192.168.100.100 master 192.168.100.101 slave1 192.168.100.102 slave2保存。使用ping命令檢查是否互通。

(6)安裝JDK。首先移除系統(tǒng)自帶的jdk,將JDK安裝包解壓放至提前創(chuàng)建的/opt/SoftWare/Jdk下,然后配置環(huán)境變量JAVA_HOME和PATH,最后source文件后使用java -version測(cè)試JDK是否安裝。

(7)免密碼登錄。在master節(jié)點(diǎn)上執(zhí)行ssh-keygen -t rsa,然后復(fù)制公鑰文件cat~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys,接著將authorized_keys復(fù)制到slave1和slave2,同樣Slave節(jié)點(diǎn)也生成密鑰,將 authorized_keys 文件移動(dòng)到.ssh 目錄,最后驗(yàn)證免密鑰登錄。

2.2 Hadoop集群的搭建

(1)解壓安裝包。將安裝包解壓到提前創(chuàng)建的/opt/SoftWare/Hadoop下,使用命令vi /etc/profile 配置 Hadoop 的系統(tǒng)環(huán)境變量HADOOP_HOME和PATH。

(2)配置文件hadoop-env.sh和yarn-env.sh。將export JAVA_HOME=xxx這行代碼修改為下面的代碼 export JAVA_HOME=/opt/SoftWare/Jdk/jdk1.8.0_131/。

(3)配置核心組件core-site.xml和hdfs-site.xml,配置文件系統(tǒng)yarn-site.xml,配置計(jì)算框架 mapred-site.xml。其中hdfs-site.xml的核心代碼是

dfs.replication1 。

(4)配置slaves文件,加入從節(jié)點(diǎn)主機(jī)名。將已經(jīng)配置完成的Hadoop復(fù)制到從節(jié)點(diǎn).使用scp -r ... @savel1....命令。需要注意的是,因?yàn)橹耙呀?jīng)配置了SSH,這里可以無密碼地登錄。

(5)格式化namenode啟動(dòng)Hadoop集群。使用 start-all.sh啟動(dòng) Hadoop集群,然后啟動(dòng)jps可驗(yàn)證。在瀏覽器地址欄中輸入http://master:50070/檢查 namenode 和 datanode 是否正常。

2.3 Spark集群的搭建

(1)解壓Scala安裝包。將安裝包解壓在提前創(chuàng)建的/opt/SoftWare/Scala下,配置環(huán)境變量SCALA_HOME,PATH,保存退出,source /etc/profile后執(zhí)行Scala -version測(cè)試Scala是否安裝成功,注意Scala安裝版本和Spark版本要對(duì)應(yīng)。

(2)解壓Spark安裝包。將安裝包解壓到提前創(chuàng)建的/opt/SoftWare/Spark下,配置 Hadoop 啟動(dòng)的系統(tǒng)環(huán)境變量HADOOP_CONF_DIR,HDFS_CONF_DIR,YARN_CONF_DIR。

(3)修改配置文件spark-env.sh,配置JAVA_HOME,SPARK_MASTER_IP,SPARK_MASTER_PORT,SCALA_HOME,HADOOP_HOME,SPARK_HOME。

(4)修改slaves. template文件,添加主機(jī)名,刪掉主機(jī)名,插入從節(jié)點(diǎn)名字slave1 slave2。

(5)將配置好的 Spark 拷貝到其他節(jié)點(diǎn)上。使用scp -r ... @savel1....命令。

(6)啟動(dòng)Spark集群。進(jìn)入sbin目錄,運(yùn)行./start-all.sh,運(yùn)行jps,分別有進(jìn)程master,worker,worker。在瀏覽器中查看master:8080可知Spark安裝配置成功。

3 平臺(tái)的驗(yàn)證

單詞計(jì)數(shù)作為大數(shù)據(jù)學(xué)習(xí)的入門程序,相當(dāng)于C語(yǔ)言中的Hello World,它是用來統(tǒng)計(jì)信息經(jīng)分割后得到相同字段的次數(shù),即將原本文字轉(zhuǎn)換成形式。像統(tǒng)計(jì)某人訪問日志網(wǎng)站次數(shù),計(jì)算電影院某天的場(chǎng)數(shù)以及整合大數(shù)據(jù)集的數(shù)據(jù)種類等這些看似龐雜的任務(wù)都會(huì)涉及單詞計(jì)數(shù),掌握它對(duì)之后復(fù)雜框架的學(xué)習(xí)很有幫助。運(yùn)行此程序就可知MR和RDD是否工作,從而進(jìn)一步驗(yàn)證集群的成功。

3.1 在Hadoop集群中的驗(yàn)證

在Hadoop集群下MapReduce起到主要作用,它主要經(jīng)過了split的數(shù)據(jù)切片、Mapper的數(shù)據(jù)映射、Shuffle的數(shù)據(jù)混洗和Reduce的數(shù)據(jù)歸約這四個(gè)步驟。對(duì)于Driver是負(fù)責(zé)運(yùn)行Saprk應(yīng)用的組件,運(yùn)行流程分別是FileInputFormat、Mapper、Combine、Reduce、Partitioner、FileOutputFormat,其中最重要的是Mapper、Reduce和Driver函數(shù)的代碼,其運(yùn)行步驟如下:

(1)打開idea,新建MR工程,加入jar包導(dǎo)入。

(2)主要寫Mapper、Reducer和Driver函數(shù),在此展示Mapper函數(shù)的主要代碼:

Public void map(Object key, Text value, Context context )throws IOException, InterruptedException {

StringTokenizer itr = new StringTokenizer(value.toString());

while (itr.hasMoreTokens()) {

word.set(itr.nextToken());

context.write(word, one);}

}。

(3)使用工具選擇主函數(shù)打包成jar包,將jar傳至虛擬機(jī)并運(yùn)行hadoop jar命令。

(4)可通過Hadoop fs -cat在終端查看,也可用web網(wǎng)頁(yè)查看HDFS輸出信息。

3.2 在Spark集群中的驗(yàn)證

在Spark運(yùn)行單詞計(jì)數(shù)時(shí)需要RDD的幫助,RDD是為了解決數(shù)據(jù)復(fù)制和防止在不同計(jì)算階段之間重用中間結(jié)果的數(shù)據(jù)結(jié)構(gòu),它可以有多個(gè)分區(qū),從而保證在集群中的不同節(jié)點(diǎn)上進(jìn)行并行計(jì)算。RDD在Spark中的工作流程如下:首先創(chuàng)建RDD對(duì)象;通過RDD的轉(zhuǎn)換和動(dòng)作操作構(gòu)建DAG;然后主要由DAGScheduler負(fù)責(zé)將DAG拆分為多個(gè)stage;最后TaskScheduler負(fù)責(zé)通過集群管理器加載任務(wù),派發(fā)給worker。同時(shí)這個(gè)程序還將用到Hadoop的HDFS系統(tǒng),兩者結(jié)合,凸顯出Hadoop和Spark組合的魅力。運(yùn)行步驟如下:

(1)打開idea,新建工程,加入Spark包,其程序主要代碼如下:

val sc=new SparkContext(sparkconf)

val line=sc.textFile(args(0))

val words=line.flatMap(_.split(“ “))

val wordToOne=words.map((_,1))

val wordToCount=wordToOne.reduceByKey(_+_)

wordToCount.saveAsTextFile(args(1))

(2)構(gòu)建之后把代碼打jar包,然后將被測(cè)文件傳到HDFS目錄下。

(3)執(zhí)行spark -submit,最后用Hadoop fs -cat查看結(jié)果。

4 總結(jié)

Hadoop和Spark各有各的特點(diǎn),Spark雖然沒有像Hadoop一樣的文件管理系統(tǒng),但是在計(jì)算領(lǐng)域還是比MapReduce速率快。Hadoop 的本質(zhì)在于分布式系統(tǒng),而Spark對(duì)應(yīng)上Hadoop中的MapReduce,提出了RDD的思想。盡管Spark功能也比Hadoop多,但很多企業(yè)基于Hadoop搭建了整個(gè)系統(tǒng),要全部遷移到Spark還是要很長(zhǎng)時(shí)間,因此初學(xué)者可根據(jù)需求選擇適當(dāng)框架。本文介紹了兩個(gè)框架的特點(diǎn),如何搭建集群以及驗(yàn)證單詞詞頻統(tǒng)計(jì)的Word Count程序。

如今大數(shù)據(jù)是現(xiàn)代產(chǎn)業(yè)極具價(jià)值的重要資產(chǎn),采用Hadoop/Spark大數(shù)據(jù)構(gòu)架可提供一致的應(yīng)用服務(wù),它能較好地克服集中式計(jì)算架構(gòu)的缺陷,表現(xiàn)出良好的應(yīng)用效果。也許在未來,大數(shù)據(jù)領(lǐng)域最熱門的組合就是Hadoop/Spark。

參考文獻(xiàn):

[1] 張海濤.基于Hadoop的大數(shù)據(jù)計(jì)算之研究[J]電子測(cè)試,2019,(4).

[2] 林海,王強(qiáng),李英震.基于大數(shù)據(jù)下的Spark快速大數(shù)據(jù)分析[J].現(xiàn)代工業(yè)經(jīng)濟(jì)和信息化,2019,9(10).

[3] 楊秋鴻,潘曉衡,趙鐵柱, 等.面向大數(shù)據(jù)應(yīng)用的分布式服務(wù)平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[J].東莞理工學(xué)院學(xué)報(bào),2020,27(1):34-38.

【通聯(lián)編輯:朱寶貴】

猜你喜歡
分布式
分布式光伏發(fā)展的四大矛盾
能源(2017年7期)2018-01-19 05:05:03
分布式光伏熱錢洶涌
能源(2017年10期)2017-12-20 05:54:07
基于預(yù)處理MUSIC算法的分布式陣列DOA估計(jì)
分布式光伏:爆發(fā)還是徘徊
能源(2017年5期)2017-07-06 09:25:54
西門子 分布式I/O Simatic ET 200AL
家庭分布式儲(chǔ)能的發(fā)展前景
汽車電器(2014年5期)2014-02-28 12:14:10
水富县| 长春市| 永胜县| 循化| 大竹县| 蓝田县| 民权县| 兴山县| 天津市| 临朐县| 营口市| 石泉县| 共和县| 徐水县| 新绛县| 商城县| 温州市| 清河县| 扶风县| 陆丰市| 开封市| 正蓝旗| 青河县| 湟中县| 区。| 苍南县| 岚皋县| 麻城市| 澎湖县| 莆田市| 万源市| 玉树县| 宝应县| 田林县| 侯马市| 菏泽市| 重庆市| 台湾省| 山丹县| 察隅县| 中牟县|