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

?

基于Spark的大數(shù)據(jù)處理平臺的搭建與研究

2016-07-04 19:13:45許禮捷
電腦知識與技術(shù) 2016年15期
關(guān)鍵詞:集群大數(shù)據(jù)

摘要:該文闡述了Spark處理技術(shù)在大數(shù)據(jù)框架上的性能提升優(yōu)勢,分析了BDAS生態(tài)系統(tǒng)框架中Spark的任務處理流程圖。詳細說明了Spark集群的搭建過程和運行狀態(tài),并通過Spark Shell的交互界面進行交互式編程,實現(xiàn)對文本內(nèi)容中單詞出現(xiàn)次數(shù)的統(tǒng)計。

關(guān)鍵詞:大數(shù)據(jù); Spark; 集群; Yarn; 交互式編程

中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2016)15-0014-03

Abstract: The performance advantages of Spark processing technical in big data framework is described, the process flowchart of Spark in the framework of BDAS ecosystem is analyzed. The construction process and running state of Spark cluster are described in detail.Statistics on the number of words in the text content by interactive programming through the Shell Spark interactive interface.

Key words: big data; spark; cluster; yarn; interactive programming

隨著計算機和信息技術(shù)的迅猛發(fā)展和普及,傳統(tǒng)的計算技術(shù)和信息系統(tǒng)的處理能力已經(jīng)無法滿足數(shù)百TB甚至數(shù)十到數(shù)百PB規(guī)模的行業(yè)企業(yè)大數(shù)據(jù),因此,處于大數(shù)據(jù)時代的今天,更為高效的大數(shù)據(jù)處理技術(shù)、方法和手段取得了巨大的發(fā)展。

1 大數(shù)據(jù)處理技術(shù)概述

Hadoop和Spark兩者都是大數(shù)據(jù)框架。Hadoop實質(zhì)上更多是一個分布式數(shù)據(jù)基礎設施: 它將巨大的數(shù)據(jù)集分派到一個由普通計算機組成的集群中的多個節(jié)點進行存儲,意味著您不需要購買和維護昂貴的服務器硬件。而Spark是基于內(nèi)存計算的大數(shù)據(jù)并行計算框架,它基于內(nèi)存計算。相比Hadoop MapReduce,Spark在性能上提高了100倍[1],不僅提高了在大數(shù)據(jù)環(huán)境下數(shù)據(jù)處理的實時性,同時保證了高容錯性和高可伸縮性。

Hadoop的MapReduce在過去10年的時間成了大數(shù)據(jù)處理的代名詞,而Spark作為一個嶄新的大數(shù)據(jù)生態(tài)系統(tǒng),逐漸取代傳統(tǒng)的MapReduce而成為新一代大數(shù)據(jù)處理技術(shù)。以下通過Spark集群大數(shù)據(jù)處理平臺的搭建與測試來進行研究。

2 Spark技術(shù)分析

2.1 Spark生態(tài)系統(tǒng)BDAS

目前Spark已經(jīng)發(fā)展成為包含眾多子項目的大數(shù)據(jù)計算平臺。伯克利將Spark的整個生態(tài)系統(tǒng)成為伯克利數(shù)據(jù)分析棧(BDAS),其核心框架就是Spark,其他子項目在Spark上層提供了更高層、更豐富的計算范式。BDAS結(jié)構(gòu)框架,如圖1所示。

2.2 Spark的任務處理流程圖

Spark是整個BDAS的核心組件,是一個大數(shù)據(jù)分布式編程框架,不僅實現(xiàn)了MapReduce的算子map函數(shù)和reduce函數(shù)及計算模型,還提供更為豐富的算子,如filter、join、groupByKey等。Spark將分布式數(shù)據(jù)抽象為天性分布式數(shù)據(jù)集(RDD),實現(xiàn)了應用任務調(diào)度、RPC、序列化和壓縮,并為運行在其上的上層組件提供API。其底層采用Scala函數(shù)式語言編寫而成,并且所提供的API深度借鑒Scala函數(shù)式的編程思想,提供與Scala類似的編程接口。如圖2為Spark的任務處理流程。

3 Spark集群的安裝與部署

實際應用中,Spark主要部署在Linux系統(tǒng)的集群中。如果要完整使用Spark,需要預先安裝Hadoop,因此在Linux系統(tǒng)中安裝Spark需要預先安裝JDK、Scala等依賴。以1個Master節(jié)點和3個Slave節(jié)點進行部署,首先在主節(jié)點和子節(jié)點上完成基礎步驟的安裝,包括:JDK安裝、Scala安裝、配置SSH免密碼登錄、Hadoop安裝配置及啟動[3],然后再開始進行Spark集群的安裝與部署。

3.1 Spark集群的搭建

已經(jīng)完成基礎安裝的1個主節(jié)點和3個子節(jié)點IP地址分別為:Master:10.230.10.160;Slave1: 10.230.10.161;Slave2: 10.230.10.162;Slave3: 10.230.10.163。

1)下載并解壓Spark安裝文件

從官網(wǎng)下載spark1.3.1安裝文件(集群采用的軟件版本是Hadoop2.6.0和Spark1.3.1),并在主節(jié)點Master的usr/local/spark/spark1.3.1的目錄下,解壓下載好的spark-1.3.1-bin-hadoop2.6.tgz。命令行如下:

[root@Master ~]# tar -xzvf /root/down-spark/spark-1.3.1-bin-hadoop2.6.tgz /usr/local/spark

并將釋放后的文件夾名改為spark1.3.1。

2)配置spark的環(huán)境變量

配置Spark的環(huán)境變量,使用命令行:vi /etc/profile

在profile文件最后添加:

## SPARK

export SPARK_HOME=spark的絕對路徑(此處是:/usr/local/spark/spark1.3.1)

export PATH=$PATH:$SPARK_HOME/bin

然后保存退出

并重新運行profile,使其生效。命令行:

[root@Master spark1.3.1]# source /etc/profile

3)配置spark的相關(guān)文件

(1)slaves文件的配置

拷貝conf/slaves.template為slaves,并使用vi命令編輯slaves,將Worker節(jié)點添加進去。添加子節(jié)點slave名稱的內(nèi)容如下:

Master

Slave1

Slave2

Slave3

(2)spark-env.sh的配置

進入Spark的conf目錄,將spark-env.sh.template拷貝到spark-env.sh,并編輯該配置文件,將各種路徑添加進去。命令行:vi spark-env.sh。向文件添加:

export JAVA_HOME=Java安裝的絕對路徑(此處:/usr/lib/java/jdk1.8.0_45)

export SCALA_HOME=Scala安裝的絕對路徑(此處:/root/app/scala2.10)

export HADOOP_CONF_DIR=hadoop環(huán)境下的配置文件目錄etc/hadoop的絕對路徑(此處是:/usr/local/hadoop/hadoop-2.6.0/etc/Hadoop)

export SPARK_MASTER_IP=主節(jié)點IP或主節(jié)點IP映射名稱(此處是:Master)

export SPARK_MASTER_PORT=主節(jié)點啟動端口(默認7077)

export SPARK_MASTER_WEBUI_PORT=集群web監(jiān)控頁面端口(默認8080)

export SPARK_WORKER_CORES=從節(jié)點工作的CPU核心數(shù)目(默認1)

export SPARK_WORKER_PORT=從節(jié)點啟動端口(默認7078)

export SPARK_WORKER_MEMORY=分配給Spark master和 worker 守護進程的內(nèi)存空間(默認512m)

export SPARK_WORKER_WEBUI_PORT=從節(jié)點監(jiān)控端口(默認8081)

export SPARK_WORKER_INSTANCES=每臺從節(jié)點上運行的worker數(shù)量 (默認: 1)

該配置文件中的yarn部署是按照spark配置文件的默認部署的,如果想根據(jù)實際情況來部署的話,可以做相應的修改。

(3)Spark文件復制

將配置好的Spark文件復制到各個子節(jié)點slave對應的目錄上:即將spark下的spark1.3.1拷貝到子節(jié)點的對應目錄上。

[root@Master spark]# scp -r ./spark1.3.1/ root@Slave1:/usr/local/spark

[root@Master spark]# scp -r ./spark1.3.1/ root@Slave2:/usr/local/spark

[root@Master spark]# scp -r ./spark1.3.1/ root@Slave3:/usr/local/spark

至此,Spark集群的安裝搭建基本完成。

3.2 Spark On Yarn的集群啟動

(1)Yarn的啟動:

先進入hadoop目錄下,運行命令 ./sbin/start-all.sh,然后運行jps命令檢測yarn是否正常啟動,如果發(fā)現(xiàn)有ResourceManager進程,說明yarn啟動完成

(2)Spark的啟動

先進入spark目錄下,運行命令 ./sbin/start-all.sh,然后運行jps命令檢測spark是否正常啟動,如果發(fā)現(xiàn)主節(jié)點有Master進程,子節(jié)點有Worker進程,說明spark啟動完成。

(3)Spark集群監(jiān)控

Spark啟動之后,可以通過Web查看Spark集群的運行狀態(tài),一般都是masterIP:8080,如果打不開監(jiān)控頁面,則要檢查一下防火墻有沒有禁用。

如圖3所示,通過監(jiān)控頁面,可以看到由1個Master節(jié)點和3個Slave節(jié)點組成的Spark集群已經(jīng)正常運行。至此,Spark On Yarn的集群搭建完成。

3.3 Spark集群控制臺

(1)在Master端,進入spark-shell控制臺

啟動spark on yarn集群后,進入Spark的bin目錄,使用spark-shell進入控制臺,命令行為:[root@Master bin]# ./spark-shell ,執(zhí)行后出現(xiàn)操作符提示scala>。

而如果要在spark 客戶端(在 Slave節(jié)點),使用 spark-shell 連接集群,以Slave1為例,在子節(jié)點進入spark-shell控制臺的命令行:

[root@Slave1 bin]# ./spark-shell --master spark://Master:7077 --executor-memory 1g

說明:其中的“--executor-memory 1g”,根據(jù)實際內(nèi)存情況進行分配

(2)查看SparkUI情況

進入Spark的shell世界,根據(jù)輸出的提示信息,可以通過 http://Master:4040,從Web的角度看一下SparkUI的情況。包括:集群的Jobs、Stages、Storage、Environment、Executors等信息。

4 Spark集群的測試

完成Spark集群的搭建之后,可以通過Spark Shell的交互界面進行交互式編程[4],以下實例是對HDFS系統(tǒng)上的一個文本文檔readme.txt,統(tǒng)計一下“Spark”一共出現(xiàn)了多少次。

在Spark Shell交互界面 scala> 運行如下程序代碼

val file = sc.textFile("hdfs://10.230.10.160:9000/usr/xu/test/readme.txt")

val sparks = file.filter(line => line.contains("Spark"))

sparks.count

最后從執(zhí)行結(jié)果中我們發(fā)現(xiàn)“Spark”這個詞一共出現(xiàn)了19次。

此時,我們查看Spark Shell的Web控制臺,發(fā)現(xiàn)控制臺中顯示我們提交了一個任務并成功完成,點擊任務可以看到其執(zhí)行詳情。

那如何驗證Spark Shell對readme.txt這個文件中的“Spark”出現(xiàn)的19次是正確的呢?其實方法很簡單,我們可以使用Linux自帶的wc命令來統(tǒng)計,即如下命令:

[root@Master spark1.3.1]# grep Spark readme.txt|wc

19 156 1232

發(fā)現(xiàn)此時的執(zhí)行結(jié)果也是19次,和Spark Shell的計數(shù)是一樣的。

5 結(jié)束語

以上的Spark集群安裝是在CentOS6.5操作系統(tǒng)上完成,集群采用1個Master和3個Slaves。在實際行業(yè)企業(yè)應用中,可以根據(jù)需要增加子節(jié)點數(shù)量,通過Spark進行大規(guī)模機器學習、圖形計算以及流數(shù)據(jù)分析,以達到快速分布式計算的要求。基于Spark的應用已經(jīng)逐步落地,尤其是在互聯(lián)網(wǎng)領(lǐng)域,如淘寶、騰訊、網(wǎng)易等公司的發(fā)展已經(jīng)成熟,同時電信、銀行等傳統(tǒng)行業(yè)也開始逐步應用Spark并取得了較好的效果。因此,在大數(shù)據(jù)分析平臺中Spark技術(shù)將會得到更為廣泛的發(fā)展和應用。

參考文獻:

[1] 陳虹君.基于Hadoop平臺的Spark框架研究[J].電腦知識與技術(shù),2014(35).

[2] 高彥杰. Spark大數(shù)據(jù)處理技術(shù)、應用與性能優(yōu)化[M] .北京:機械工業(yè)出版社,2015.12.

[3] 許禮捷.基于CentOS的Hadoop分布式集群的構(gòu)建方法研究[J].沙洲職業(yè)工學院學報,2016(1):23-28.

[4] Spark編程指南[EB/OL].http://spark.apache.org/docs/1.3.1/programming-guide.html,2015.

猜你喜歡
集群大數(shù)據(jù)
集群式AUV可控分群控制算法
海上小型無人機集群的反制裝備需求與應對之策研究
一種無人機集群發(fā)射回收裝置的控制系統(tǒng)設計
電子制作(2018年11期)2018-08-04 03:25:40
Python與Spark集群在收費數(shù)據(jù)分析中的應用
勤快又呆萌的集群機器人
大數(shù)據(jù)環(huán)境下基于移動客戶端的傳統(tǒng)媒體轉(zhuǎn)型思路
新聞世界(2016年10期)2016-10-11 20:13:53
基于大數(shù)據(jù)背景下的智慧城市建設研究
科技視界(2016年20期)2016-09-29 10:53:22
數(shù)據(jù)+輿情:南方報業(yè)創(chuàng)新轉(zhuǎn)型提高服務能力的探索
中國記者(2016年6期)2016-08-26 12:36:20
對構(gòu)建智慧產(chǎn)業(yè)集群的幾點思考
學習月刊(2016年14期)2016-07-11 01:54:40
镇江市| 德保县| 彩票| 巴林左旗| 赤城县| 遵化市| 刚察县| 天峨县| 平湖市| 惠水县| 应城市| 新巴尔虎右旗| 英吉沙县| 富阳市| 南雄市| 乌鲁木齐县| 盘锦市| 红安县| 龙南县| 岳阳县| 新化县| 钟山县| 垫江县| 兴义市| 定安县| 永安市| 武乡县| 黄陵县| 蕲春县| 萝北县| 二手房| 犍为县| 台安县| 盐源县| 大兴区| 全南县| 阜康市| 五台县| 永济市| 霸州市| 大洼县|