大數(shù)據(jù)技術(shù)之Spark_第1頁
大數(shù)據(jù)技術(shù)之Spark_第2頁
大數(shù)據(jù)技術(shù)之Spark_第3頁
大數(shù)據(jù)技術(shù)之Spark_第4頁
大數(shù)據(jù)技術(shù)之Spark_第5頁
已閱讀5頁,還剩173頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

大數(shù)據(jù)技術(shù)之Spark

第1部分Spark基礎(chǔ)

第1章Spark概述

本章介紹Spark的一些基本認(rèn)識.

SpAPcACiHrEKT<

1.1什么是Spark

Spark是一個(gè)快速(基于內(nèi)存),通用,可擴(kuò)展的集群計(jì)算引擎

并且Spark目前已經(jīng)成為Apache最活躍的開源項(xiàng)目,有超過1000個(gè)活躍的貢獻(xiàn)者.

1.1.1歷史

1.2009年,Spark誕生于UCBerkeley(加州大學(xué)伯克利分校,CAL)的

AMP實(shí)驗(yàn)室,項(xiàng)目采用Scala編程語言編寫.

2.2010年,Spark正式對外開源

3.2013年6月,進(jìn)入Apache孵化器

4.2014年,成為Apache的頂級項(xiàng)目.

5.目前最新的版本是2.4.4(2.1.1)

參考:/history.html

1.2Spark特點(diǎn)

1.2.1快速

與Hadoop的MapReduce相比,Spark基于內(nèi)存的運(yùn)算是MapReduce的100倍.基

于硬盤的運(yùn)算也要快10倍以上.

Spark實(shí)現(xiàn)了高效的DAG執(zhí)行引擎,可以通過基于內(nèi)存來高效處理數(shù)據(jù)流

Speed

Runworkloads100xfaster,■Hadoop

■Spark

ApacheSparkachieveshighperformanceforbothbatchandstreaming

data,usingastate-of-the-artDAGscheduler,aqueryoptimizer,anda

physicalexecutionengine.

LogisticregressioninHadoopandSpark

1.2.2易用

Spark支持Scala,Java,Python,R和SQL腳本,并提供了超過80種高性能的算法,

非常容易創(chuàng)建并行App

而且Spark支持交互式的Python和Scala的shell,這意味著可以非常方便地在這些

shell中使用Spark集群來驗(yàn)證解決問題的方法,而不是像以前一樣需要打包,上傳集群,

驗(yàn)證等.這對于原型開發(fā)非常重要.

EaSeOfUsedf=spark.read.jsonciogs.json")

df.where("age>21")

WriteapplicationsquicklyinJava,Scala,Python,R,.seiect(uname.first1').show()

andSQL.Spark'sPythonDataFrameAPI

ReadJSONfileswithautomaticschemainference

Sparkoffersover80high-leveloperatorsthatmakeiteasytobuildparallel

apps.AndyoucanuseitinteractivelyfromtheScala,Python,R,andSQL

shells.

1.2.3通用

Spark結(jié)合了SQL,Streaming和復(fù)雜分析.

Spark提供了大量的類庫,包括SQL和DataFrames,機(jī)器學(xué)習(xí)(MLlib),圖計(jì)算

(GraphicX),實(shí)時(shí)流處理(SparkStreaming).

可以把這些類庫無縫的柔和在一個(gè)App中.

減少了開發(fā)和維護(hù)的人力成本以及部署平臺的物力成本.

Generality

CombineSQL,streaming,andcomplexanalytics.SparkSparkMLlibGraphX

SQLStreaming(machine(graph)

SparkpowersastackoflibrariesincludingSQLandDataFrames,MUibforlearning)

machinelearning,GraphX,andSparkStreaming.Youcancombinethese

librariesseamlesslyinthesameapplication.ApacheSpark

1.2.4可融合性

Spark可以非常方便的與其他開源產(chǎn)品進(jìn)行融合.

比如,Spark可以使用Hadoop的YARN和AppacheMesos作為它的資源管理和調(diào)度

器,并且可以處理所有Hadoop支持的數(shù)據(jù),包括HDFS,HBase等.

RunsEverywhere

SparkrunsonHadoop,ApacheMesos,Kubemetes,

standalone,orinthecloud.ItcanaccessdiversedataSpark

sources,

YoucanrunSparkusingitsstandaloneclustermode,onEC2,onHadoopcassandra

YARN,onMesos,oronKubemetes.AccessdatainHDFS,Alluxio,Apache

Cassandra,ApacheHBase,ApacheHive,andhundredsofotherdataMESOS

sources.

kubernetes

1.3Spark內(nèi)置模塊介紹

SparkSpark

SparkMlib

StreamingGraghX

機(jī)器學(xué)習(xí)

實(shí)時(shí)計(jì)算圖計(jì)算

SparkCore

獨(dú)立調(diào)度器YARNMesos

1.3.1集群管理器(ClusterManager)

Spark設(shè)計(jì)為可以高效地在一個(gè)計(jì)算節(jié)點(diǎn)到數(shù)千個(gè)計(jì)算節(jié)點(diǎn)之間伸縮計(jì)算。

為了實(shí)現(xiàn)這樣的要求,同時(shí)獲得最大靈活性,Spark支持在各種集群管理器(Cluster

Manager)上運(yùn)行,目前Spark支持3種集群管理器:

1.HadoopYARN(在國內(nèi)使用最廣泛)

2.ApacheMesos(國內(nèi)使用較少,國外使用較多)

3.Standalone(Spark自帶的資源調(diào)度器,需要在集群中的每臺節(jié)點(diǎn)上配置

Spark)

1.3.2SparkCore

實(shí)現(xiàn)了Spark的基本功能,包含任務(wù)調(diào)度、內(nèi)存管理、錯(cuò)誤恢復(fù)、與存儲系統(tǒng)交互等模塊。

SparkCore中還包含了對彈性分布式數(shù)據(jù)集(ResilientDistributedDataSet,簡稱RDD)的

API定義。

1.3.3SparkSQL

是Spark用來操作結(jié)構(gòu)化數(shù)據(jù)的程序包。通過SparkSql,我們可以使用SQL或者

ApacheHive版本的SQL方言(HQL)來查詢數(shù)據(jù)。SparkSQL支持多種數(shù)據(jù)源,比如

Hive表、Parquet以及JSON等。

1.3.4SparkStreaming

是Spark提供的對實(shí)時(shí)數(shù)據(jù)進(jìn)行流式計(jì)算的組件。提供了用來操作數(shù)據(jù)流的API,并且與

SparkCore中的RDDAPI高度對應(yīng)。

1.3.5SparkMLlib

提供常見的機(jī)器學(xué)習(xí)(ML)功能的程序庫。包括分類、回歸、聚類、協(xié)同過濾等,還提供

了模型評估、數(shù)據(jù)導(dǎo)入等額外的支持功能。

Spark

ClusterManager

(YARN,Mesos,Standalone)

~~T~~r~

DistributedStorage

(Cassandra,S3,HDFS)

111

Spark得到了眾多大數(shù)據(jù)公司的支持,這些公司包括Hortonworks舊M、Intel、

Cloudera.MapR、Pivotal,百度、阿里、騰訊、京東、攜程、優(yōu)酷土豆。

當(dāng)前百度的Spark已應(yīng)用于大搜索、直達(dá)號、百度大數(shù)據(jù)等業(yè)務(wù);

阿里利用GraphX構(gòu)建了大規(guī)模的圖計(jì)算和圖挖掘系統(tǒng),實(shí)現(xiàn)了很多生產(chǎn)系統(tǒng)的推薦算法;

騰訊Spark集群達(dá)到8000臺的規(guī)模,是當(dāng)前已知的世界上最大的Spark集群。

第2章Spark運(yùn)行模式

本章介紹在各種運(yùn)行模式如何運(yùn)行Spark應(yīng)用.

首先需要下載Spark

1.官網(wǎng)地址/

2.文檔查看地址https://spark.apache.Org/docs/2.1.1/

3.下載地址/dist/spark/

目前最新版本為2.4.4,考慮到國內(nèi)企業(yè)使用情況我們?nèi)匀贿x擇211來學(xué)習(xí).不過2.X.X

的版本差別都不大.

2.1Local模式

Local模式就是指的只在一臺計(jì)算機(jī)上來運(yùn)行Spark.

通常用于測試的目的來使用Local模式,實(shí)際的生產(chǎn)環(huán)境中不會使用Local模式.

2.1.1解壓Spark安裝包

把安裝包上傳至!]/。口亡/5。,上卬(7廣6/下,并解壓至!]/opt/moduLe/目錄下

tar-zxvfspark-2.1.1-bin-hadoop2.7.tgz-C/opt/module

然后復(fù)制剛剛解壓得到的目錄,并命名為spark-LocaL:

cp-rspark-2.1.1-bin-hadoop2.7spark-local

2.1.2運(yùn)行官方求P工的案例

bin/spark-submit\

--cLassorg.apache.spark.examples.SparkPi\

--masterLocaL[2]\

,/exampLes/jars/spark-exampLes_2.11-2.1.1.jar100

注意:

?如果你的sheLL是使用的zsh,則需要把力口上弓I號:‘LOCQH2J'

說明:

?使用spark-submit來發(fā)布應(yīng)用程序.

-語法:

./bin/spark-submit\

--cLass<main-cLass>\

--master<master-urL>\

--deploy-mode<depLoy-mode>\

--conf<hey>=<vaLue>\

???#otheroptions

<appLication-jar>\

[appLication-arguments]

---master指定master的地址,默認(rèn)為LocaL.表示在本機(jī)運(yùn)行.

---cLass你的應(yīng)用的啟動類(如

org.apache.sparh.exampLes.SparkPi)

?--depLoy-mode是否發(fā)布你的驅(qū)動到worker節(jié)點(diǎn)(cluster模式)或者作

為一個(gè)本地客戶端(cLient模式)(default:cLient)

?--conf:任意的Spark配置屬性,格式如果值包含空格,可

以加引號"hey=vaLue"

?appLication-jar:打包好的應(yīng)用jar,包含依賴.這個(gè)URL在集群中全局

可見。比如hdfs://共享存儲系統(tǒng),如果是于tie://path,那么所有的

節(jié)點(diǎn)的path都包含同樣的jar

?appLieation-arguments:傳給勿at”方法的參數(shù)

?--executor-memory1G指定每個(gè)executor可用內(nèi)存為1G

?--totaL-executor-cores6指定所有executor使用的epu核數(shù)為6個(gè)

?--executor-cores表示每個(gè)executor使用的epu的核數(shù)

關(guān)于MasterURL的說明

MasterURLMeaning

LocaL

RunSparklocallywithoneworkerthread(i.e.noparallelismat

all).

LocaL[K]

RunSparklocallywithKworkerthreads(ideally,setthistothe

numberofcoresonyourmachine).

LocaL[*]

RunSparklocallywithasmanyworkerthreadsaslogicalcores

onyourmachine.

spark://HOST:PORT

ConnecttothegivenSparkstandaloneclustermaster.Theport

mustbewhicheveroneyourmasterisconfiguredtouse,whichis

7077bydefault.

mesos://HOST:PORT

ConnecttothegivenMesoscluster.Theportmustbewhichever

oneyourisconfiguredtouse,whichis5050bydefault.Or,fora

MesosclusterusingZooKeeper,usemesos://zk://....To

submitwith--depLoy-modeduster,theHOSTPORTshould

beconfiguredtoconnecttotheMesosClusterDispatcher.

yarn

ConnecttoaYARNclusterincLientorcLustermode

dependingonthevalueof-deploy-mode.Theclusterlocation

willbefoundbasedontheHADOOPCONFDIRor

YARNCONFDIRvariable.

2.1.2.1結(jié)果展ZK

該算法是利用蒙特?卡羅算法求PI

LOCAL,6026bytes)

19/01/3121:49:44INFOTaskSetManager:Finishedtask97.0instage0.0(TID97)in27msonlocalhc

19/01/3121:49:44INFOExecutor:Runningtask99.0instage0.0(TID99)

19/01/3121:49:44INFOExecutor:Finishedtask99.0instage0.0(TID99).1041bytesresultsentt

19/01/3121:49:44INFOTaskSetManager:Finishedtask99.0instage0.0(TID99)in18msonlocalhc

19/01/3121:49:44INFOExecutor:Finishedtask98.0instage0.0(TID98).1041bytesresultsentt

19/01/3121:49:44INFOTaskSetManager:Finishedtask98.0instage0.0(TID98)in41msonlocalhc

19/01/3121:49:44INFOTaskSchedulerlmpl:RemovedTaskSet0.0,whosetaskshaveallcompleted,fron

19/01/3121:49:44INFODAGScheduler:Resultstage0(reduceatSparkPi.scala:38)finishedin1.852s

19Z0JLZ31-21:49J44INEQJDAGScheduler:Job0finished:reduceatSparkPi.scala:38,took2.195049s

Piisroughly3.1425879142587916

卬EFoppedSparkwebUIathttp://192.168.43.201:4040

19/01/3121:49:44INFOMapOutputTrackerMasterEndpoint:MapOutputTrackerMasterEndpointstopped!

19/01/3121:49:44INFOMemoryStore:MemoryStorecleared

19/01/3121:49:44INFOBlockManager:BlockManagerstopped

19/01/3121:49:44INFOBlockManagerMaster:BlockManagerMasterstopped

19/01/3121:49:44INFOOutputCommitCoordinatorJOutputCommitCoordinatorEndpoint:OutputCommitCoordir

19/01/3121:49:44INFOSparkContext:SuccessfullystoppedSparkContext

19/01/3121:49:44INFOShutdownHookManager:Shutdownhookcalled

19/01/3121:49:44INFOShutdownHookManager:Deletingdirectory/tmp/spark-536f79e0-bc9a-4899-97ad-c

備注:也可以使用rur-exa/npLes來運(yùn)行

bin/run-exampleSparkPi100

2.1.3使用Spark-shell

Spark-shell是Spark給我們提供的交互式命令窗口(類似于Scala的REPL)

本案例在Spark-shell中使用Spark來統(tǒng)計(jì)文件中各個(gè)單詞的數(shù)量.

步驟1:創(chuàng)建2個(gè)文本文件

mkdirinput

cdinput

touchl.txt

touch2.txt

分別在1.txt和2.txt內(nèi)輸入一些單詞.

步驟2:打開Spark-shell

bin/spark-shell

??bin/spork-shell

UsingSpark'sdefaultlog4jprofile:org/apache/spark/log4j-defaperties

Settingdefaultloglevelto"WARN".

Toadjustlogginglevelusesc.setLogLevel(newLevel).ForSparkR,usesetLogLevel(newLevel).

19/01/3123:58:39WARNNativeCodeLoader:Unabletoloadnative-hadooplibraryforyourplatform...usingbuiltin-javaclasseswher

eapplicable

19/01/3123:58:45WARNObjectstore:Versioninformationnotfoundinmetastore,hive.metastore.schema.verificotionisnotenabled

sorecordingtheschemaversion1.2.0

19/01/3123:58:46WARNObjectStorc:Failedtogetdatabasedefault,returningNoSuchObjectException

19/01/3123:58:46WARNObjectstore:Failedtogetdatabaseglobal_temp,returningNoSuchObjectException

SparkcontextWebUIavailableathttp://192.168.43.201:4040

Sparkcontextavailableas'sc*(master-local[*],oppid-local-1548950320710).

Sparksessionavailableas'spark'.

Welcometo

/一/.一八/_人\version2.1.1

/」

UsingScalaversion2.11.8(JavaHotSpot(TM)64-BitServerVM,Java1.8.0_172)

Typeinexpressionstohavethemevaluated.

Type:helpformoreinformation.

seals|

步驟3:查看進(jìn)程和通過web查看應(yīng)用程序運(yùn)行情況

”bin/spark-shell

UsingSpark'sdefaultlog4jprofile:org/apache/spark/log4j-defaults.properties

Settingdefaultloglevelto"WARN”.

Toadjustlogginglevelusesc.setLogLevel(newLevel).ForSparkR,usesetLogLevel(newLevel).

19/01/3123:58:39WARNNativeCodeLoader:Unabletoloadnotive-hadooplibraryforyourplatform...usingbuiltin-javaclasseswher

eapplicable

19/01/3123:58:45WARNObjectstore:Versioninformationnotfoundinmetastore,hive.metastore.schema.verificationisnotenabled

sorecordingtheschemaversion1.2.0

19/01/3123:58:46WARNObjectstore:Failedtogetdatabasedefault,returningNoSuchObjectException

19/01/3123:58:46WARNObjectStore:Failedtogetdatabaseglobal_te呷,returningNoSuchObjectException

SparkcontextWebUiavailableathttp://192.168.43.201:4040

Sparkcontextovailabreas^c*(master-localf*],oppid-local-1548950320710).

Sparksessionavailableas'spark'.

Welcometo

/T7_______/-7_

v_v_v_/1_/

/___//、、」」/_A-\version2.1.1

1J

UsingScalaversion2.11.8(JavaHotSpot(TM)64-BitServerVM,Java1.8.0_172)

Typeinexpressionstohavethemevaluated.

Type:helpformoreinformation.

seals|

地址:http://hadoop201:4040

JobsStagesStorageEnvironmentExecutorsSQL

SparkJobs⑺

Useratguigu

TotalUptime:6.1min

SchedulingMode:FIFO

?EventTimeline

步驟4:運(yùn)行Mordcount程序

sc.textFiLe("input/").fLatMap(_.spLit("")).map((__j1)).reduceByKey(_

+_).coLLect

scala>sc.textFile("input/").flatMap(_.split("w)).map(1)).reduceByKey(_-i-_).collect

res7:Array[(String,Int)]=Array((are,2)f(how,2),(hello,4),(atguigu,2)7(world,2),(you,2))

步驟5:登錄hadoop201:4040查看程序運(yùn)行

SparkJobs⑺

UMcatguigu

TotalUptime:,2EM

SchedulingMode:FIFO

CompletedJobs:1

?Ewn'Dmaln*

CompletedJobs(1)

JobM?DMcriptkxi

0coSactat<corwolv>252O1WO2AJ100:44:200.4a2/2

2.1.4提交流程

Spark通用運(yùn)行簡易流程

汐Spark通用運(yùn)行簡易流程◎尚硅谷

2.1.5wordcount數(shù)據(jù)流程分析:

WordCount案例分析

sc.textFile("input"),flatMap(_.split("")),map((_,l)).reduceByKey(_+_).collect

1.textFiLe("input"):讀取本地文件input文件夾數(shù)據(jù);

2.")).?壓平操作,按照空格分割符將一行數(shù)據(jù)映射成一個(gè)

個(gè)單詞;

3.加.?對每一個(gè)元素操作,將單詞映射為元組;

4.reduceByKey(_+_):按照key將值進(jìn)行聚合,相加;

5.coLLect:將數(shù)據(jù)收集到Driver端展示。

2.2Spark核心概念介紹

2.2.1Master

Spark特有資源調(diào)度系統(tǒng)的Leader。掌管著整個(gè)集群的資源信息,類似于Yarn框架中

的ResourceManager,主要功能:

1.監(jiān)聽Worker,看Worker是否正常工作;

2.Master對Worker>Application等的管理(接收Worker的注冊并管理所有的

Worker,接收Client提交的Application,調(diào)度等待的Application并向

Worker提交)。

2.2.2Worker

Spark特有資源調(diào)度系統(tǒng)的Slave,有多個(gè)。每個(gè)Slave掌管著所在節(jié)點(diǎn)的資源信息,

類似于Yarn框架中的NodeManager,主要功能:

1.通過RegisterWorker注冊到Master;

2.定時(shí)發(fā)送心跳給Master;

3.根據(jù)Master發(fā)送的Application配置進(jìn)程環(huán)境,并啟動ExecutorBackend(執(zhí)行

Task所需的臨時(shí)進(jìn)程)

2.2.3driverprogram(驅(qū)動程序)

每個(gè)Spark應(yīng)用程序都包含一個(gè)驅(qū)動程序;驅(qū)動程序負(fù)責(zé)把并行操作發(fā)布到集群上.

驅(qū)動程序包含Spark應(yīng)用程序中的主函數(shù)定義了分布式數(shù)據(jù)集以應(yīng)用在集群中.

在前面的wordcou戊案例集中,spark?shell就是我們的驅(qū)動程序,所以我們可以在其中鍵

入我們?nèi)魏蜗胍牟僮鳎缓笥伤?fù)責(zé)發(fā)布.

驅(qū)動程序通過SparkContext對象來訪問Spark,SparkContext對象相當(dāng)于一個(gè)到

Spark集群的連接.

在spark-shell中,會自動創(chuàng)建一個(gè)對象,并把這個(gè)對象命名為5c

11

Sparkcontextavailableassc(master=local[*]zappid=local-1548988913574

).

Sparksessionavailableas'sparz*.

Welcometo

_\V'J

/____/?_/'_,_/_//_八_\version2.1.1

~J—

UsingScalaversion2.11.8(JavaHotspot(TM)64-BitServerVM,Java1.8.0_172)

Typeinexpressionstohavethemevaluated.

Type:helpformoreinformation.

scala>sc

resO:org?apache.spark.SparkContext=org,apache,spark,SparkContext@12811f95

2.2.4executor(執(zhí)行器)

SparkContext對象一旦成功連接到集群管理器,就可以獲取到集群中每個(gè)節(jié)點(diǎn)上的執(zhí)行

^(executor).

執(zhí)行器是一個(gè)進(jìn)程(進(jìn)程名:ExecutorBackend,運(yùn)行在Worker節(jié)點(diǎn)上),用來執(zhí)行計(jì)算和

為應(yīng)用程序存儲數(shù)據(jù).

然后,Spark會發(fā)送應(yīng)用程序代碼(比如:jar包)到每個(gè)執(zhí)行器.最后,Spar/?Co“text對象發(fā)

送任務(wù)到執(zhí)行器開始執(zhí)行程序.

DriverProgram

SparkContextClusterManager

2.2.5RDDs(ResilientDistributedDataset)彈性分布式數(shù)據(jù)集

一旦擁有了SparkContext對象,就可以使用它來創(chuàng)建RDD了.在前面的例子中,我們

調(diào)用sc.textFile(...)來創(chuàng)建了一個(gè)RDD,表示文件中的每一行文本.我們可以對這些文本

行運(yùn)行各種各樣的操作.

在第二部分的SparkCore中,我們重點(diǎn)就是學(xué)習(xí)RDD.

2.2.6clustermanagers(集群管理器)

為了在一個(gè)Spark集群上運(yùn)行計(jì)算,SparkContext對象可以連接到幾種集群管理器

(Spark'sownstandaloneclustermanager,MesosorYARN).

集群管理器負(fù)責(zé)跨應(yīng)用程序分配資源.

2.2.7專業(yè)術(shù)語列表

TermMeaning

ApplicationUserprogrambuiltonSpark.Consistsofadriverprogramandexecutors

onthecluster.(構(gòu)建于Spark之上的應(yīng)用程序.包含驅(qū)動程序和運(yùn)行在集

群上的執(zhí)行器)

ApplicationAjarcontainingtheuser'sSparkapplication.Insomecasesuserswillwant

jartocreatean“uberjar5'containingtheirapplicationalongwithits

dependencies.Theuser'sjarshouldneverincludeHadooporSpark

libraries,however,thesewillbeaddedatruntime.

DriverThethreadrunningthemain()functionoftheapplicationandcreatingthe

programSparkContext

ClusterAnexternalserviceforacquiringresourcesonthecluster(e.g.standalone

managermanager,Mesos,YARN)

DeployDistinguisheswherethedriverprocessruns.In"cluster"mode,the

modeframeworklaunchesthedriverinsideofthecluster.In“client”mode,the

submitterlaunchesthedriveroutsideofthecluster.

WorkerAnynodethatcanrunapplicationcodeinthecluster

node

ExecutorAprocesslaunchedforanapplicationonaworkernode,thatrunstasks

andkeepsdatainmemoryordiskstorageacrossthem.Eachapplication

hasitsownexecutors.

TaskAunitofworkthatwillbesenttooneexecutor

JobAparallelcomputationconsistingofmultipletasksthatgetsspawnedin

responsetoaSparkaction(e.g.save,collect);youllseethistermused

inthedriver'slogs.

StageEachjobgetsdividedintosmallersetsoftaskscalledstagesthatdepend

oneachother(similartothemapandreducestagesinMapReduce);youll

seethistermusedinthedriver'slogs.

2.3Standalone模式

構(gòu)建一個(gè)由Master+Slave構(gòu)成的Spark集群,Spark運(yùn)行在集群中。

這個(gè)要和Hadoop中的Standalone區(qū)別開來.這里的Standalone是指只用Spark來

搭建一個(gè)集群,不需要借助其他的框架.是相對于Yarn和Mesos來說的.

2.3.1配置Standalone模式

步驟1:復(fù)制spark,并命名為

cp-rspark-2.I.l-bin-hadoop2.7spark-standalone

步驟2:進(jìn)入配置文件目錄corf,配置spar/?-evr).5?

cdconf/

cpspark-env,sh?templatespark-env.sh

在spark-env.sh文件中配置如下內(nèi)容:

SPARK_MASTER_HOST=hadoop201

SPARK_MASTER_PORT=7077#默認(rèn)端口就是7077,可以省略不配

步驟3:修改slaves文件,添加worker節(jié)點(diǎn)

cpslaves.templateslaves

在staves文件中配置如下內(nèi)容:

hadoop201

hadoop202

hadoop203

步驟4:分發(fā)spark-standaLone

步驟5:啟動Spark集群

sbin/start-all.sh

/opt/module/spark-standalone?myjps

hadoop201

21204Master

21387Jps

21295Worker

-hadoop202

16321Worker

16408Jps

hadoop203

25299Worker

25389Jps

可能碰到的問題

如果啟動的時(shí)候報(bào):isnotset,貝ij在sbtn/spar/?-config.s/?中添力口

入變量即可.不要忘記分發(fā)修改的文件

hodoop201:JAVA_HOMEisnotset

hadoopZOl:fulllogin/opt/module/spark-standalone/logs/spark-atguigu-org.apache.spark.deploy.worker.Worker-l-hadoop201.out

hadoop202:failedtolaunch:nice-n0/opt/module/spork-standalone/bin/spark-classorg.apache.spark.deploy.worker.Worker--webui-

port8081spark://hadoop201:7077

hadoop202:JAVA_H0MEisnotset

hodoop202:fulllogin/opt/module/spark-standalone/logs/spark-otguigu-org.apache.spork.deploy.worker.Worker-l-hadoop202.out

hadoop203:failedtolaunch:nice-n0/opt/module/spark-standalone/bin/spark-classorg.opache.spark.deploy.worker.Worker--webui-

port8081spark://hadoopZ01:7077

hadoop203:JAVA_H0MEisnotset

hadoop203:fulllogin/opt/module/5park-standalone/logs/sp"k-Qtguigu-org.apache.spark.dep'loy.worker.Worker-l-hadoop203.out

5PARK_H0ME=

SPARK_CONF_DIR-

PYTHONPATH=

PYTHONPATH-

PYSPARK_PYTHONPATH_SET-

JAVA_HOME=/opt/module/jdkl..0.172

步驟6:在網(wǎng)頁中查看Spark集群情況

地址:http://hadoop201:8080

SparkMasteratspark://hadoop201:7077

URL:apartc/A?tfoop201:7077

RESTURL:SpvfcV/hadoop201:8066仁moot)

ANwWoriura:3

CormInUM:6Totti.0Used

Memoryknuse:3.0GBTotal.0.08Uwd

AppKcaUon*:0Running,0Comptotad

Ortvsr*:0Running.0Completed

StatusALIVE

Workers

WoZrldAddr?MStateCoraeMemory

wortur-20180131225504-182.16843201-42496192.188.43^01:42496AUVE2(0Uwd)10240MB(0.0BUaod)

wortiar-20190131226605-02-33340182.168.43202:33340AUVE2(0Used)10240MB(0.0BUsed)

wortar-20190131225505-19216843^03-36531192.168.43^03:36531AUVE2(0Used)10240MB(0.0BUsed)

RunningApplications

UserStets

CompletedApplications

ApplicationIO.NameCorasMemoryp?rNode

2.3.2使用Standalone模式運(yùn)行計(jì)算PI的程序

bin/spark-submit\

--classorg.apache.spark.exampLes.SparkPi\

--masterspark://hadoop201:7077\

--executor-memory1G\

--totaL-executor-cores6\

--executor-cores2\

,/exampLes/jars/spark-exampLes_2.11-2.1.1.jar100

allcompleted,trompool

19/02/0112:08:15INFODAGScheduler:Resultstage0(reduceatSparkPi.scala:38)

finishedin3.590s

19/02/0112:08:15INFODAGScheduler:Job0finished:reduceatSparkPi.scala:38,

took4.442334s

〔Piisrouqhly3,1418383141838313]

19/02/0112:08:15INFOSparkUI:StoppedSparkwebUIat01:40

40

19/02/0112:08:15INFOStandaloneSchedulerBackend:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論