Spark集群搭建

local本地模式

下载安装包解压即可使用,测试(2.2版本)
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master local[1] ./examples/jars/spark-examples_2.11-2.2.0.jar 100

local[1]:1代表线程数
100:spark类中需要的一个参数,越大计算的越准

集群搭建过程中,基本上是哪台机器上有datanode,就在哪台机器上装一个spark,为了维持数据本地性

standalone集群模式

spark提供的模式
主:master
从:worker
worker的作用是在机器上启动executor进程
1. 配置slaves
# A Spark Worker will be started on each of the machines listed below.
bigdata1
bigdata2
2. 配置master
bigdata3
3. 配置spark-env.sh
###jdk dir
export JAVA_HOME=/home/hadoop/jdk1.7/jdk1.7.0_51
###scala dir
export SCALA_HOME=/home/hadoop/scala
###the ip of master node of spark
export SPARK_MASTER_IP=bigdata3
export SPARK_MASTER_PORT=7077
###the max memory size of worker
export SPARK_WORKER_CORES=1 一个线程
export SPARK_WORKER_INSTANCES=1 一个物理节点只有一个worker进程
export SPARK_WORKER_MEMORY=2048m
启动
./sbin/start-all.sh
http://192.168.1.113:8080

任务测试
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://bigdata3:7077 --executor-memory 512m --total-executor-cores 1 ./lib/spark-examples-1.5.1-hadoop2.6.0.jar 100
这两个选项可以不用配,默认
--executor-memory:执行任务所需内存
--total-executor-cores:整个application占几核,如果为1的话只能同步执行一个executor

一个application可以切分为多个job,根据action来切分,一个application对应一个driver,driver是用来分配task到worker中执行
client模式:结果可以直接在命令行可见,提交程序的客户端,driver也在该台机器
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://bigdata3:7077 --executor-memory 512m --total-executor-cores 1 ./lib/spark-examples-1.5.1-hadoop2.6.0.jar 100
--deploy-mode默认是client
cluster模式:结果在提交客户端看不到,driver扔到worker所在的节点去执行,想看结果得找driver所在的worker节点。
./bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://bigdata3:7077 --deploy-mode cluster --executor-memory 512m --total-executor-cores 1 ./lib/spark-examples-1.5.1-hadoop2.6.0.jar 100

standalone做HA
可以使用zookeeper做热备,master挂了另一个自动接管
可以使用本地文件系统做冷备,如果master挂了,需要手动启动另一个master且手动读取本地文件系统的元数据信息。

配置spark-env.sh
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=bigdata1:2181,bigdata2:2181,bigdata3:2181"

启动zookeeper
重启spark集群
配置热备master
将备用节点的spark-env.sh中的export SPARK_MASTER_IP=bigdata2改为本节点名
启动备用master
bigdata2节点上 ./sbin/start-master.sh
此时bigdata3上的master状态为alive,bigdata2上的master状态为standby
节点接管时间1-2分钟,在这段时间内无法提交新的应用程序,正在跑的应用不影响

相当于运行了一个spark应用程序,在bigdata3:8080页面可看到
./spark-shell --master spark://bigdata3:7077
自动创建一个应用程序,并且提供了sparkcontext,可以直接使用

Spark_Yarn集群模式搭建

配置spark-env.sh
###jdk dir
export JAVA_HOME=/home/hadoop/jdk1.7/jdk1.7.0_51
###scala dir
export SCALA_HOME=/home/hadoop/scala

###the ip of master node of spark
export SPARK_MASTER_IP=bigdata3
export SPARK_MASTER_PORT=7077
###the max memory size of worker
export SPARK_WORKER_CORES=1
export SPARK_WORKER_INSTANCES=1
export SPARK_WORKER_MEMORY=2048m
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=bigdata1:2181,bigdata2:2181,bigdata3:2181"
###hadoop configuration file dir
export HADOOP_HOME=/home/hadoop/hadoop-2.6.0
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_HOME=/home/hadoop/spark/
export SPARK_JAR=$SPARK_HOME/lib/spark-assembly-1.5.1-hadoop2.6.0.jar
export PATH=$SPARK_HOME/bin:$PATH

此时不能./sbin/start-all.sh了,start-all.sh会启动master,和yarn冲突,产生资源争抢
此时环境已经准备好了,跑任务试试
./spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --executor-memory 1G --num-executors 1 ./../lib/spark-examples-1.5.1-hadoop2.6.0.jar 100
写yarn-client会自动的找active的resourcemanager

执行过程
yarn如何run spark
会将代码example jar包、assembly jar包提交到HDFS中去,driver驱动程序会在本地运行example jar,example中是spark代码,提交上去需要一个spark的环境,然后找到spark的一些相关信息

master和resourcemanager是分配资源的
driver是分配task的

yarn模式下,resourcemanager分配资源,指定spark任务跑在哪几个节点,然后在这几个节点上会有对应的nodemanager创建container,container中跑的任务就是由driver来指定的。

driver找resourcemanager申请资源,resourcemanager给driver分配资源,driver向对应的节点再次申请资源,找nodemanager,nodemanager创建container来跑任务, driver将task任务发送到container中执行,task任务执行完后会将结果返回给driver,当所有task任务跑完后,driver会告诉resourcemanager,自己的任务跑完了,resourcemanager就会通知nodemanager销毁container回收资源。

在yarn环境中,driver叫做application master
yarn
resourcemanager
nodemanager
applicationmaster
container

yarn-cluster
./spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster --executor-memory 1G --num-executors 1 ./../lib/spark-examples-1.5.1-hadoop2.6.0.jar 100

client和cluster的区别:driver所在的位置不一样
client模式:driver在执行任务的客户端
cluster模式:driver会放在集群中某个从节点执行,任务名:package包+类名

在http://192.168.1.111:8088中点击任务进去点击logs可以看到任务执行结果。

Spark集群搭建(local、standalone、yarn)的更多相关文章

  1. (四)Spark集群搭建-Java&Python版Spark

    Spark集群搭建 视频教程 1.优酷 2.YouTube 安装scala环境 下载地址http://www.scala-lang.org/download/ 上传scala-2.10.5.tgz到m ...

  2. Spark集群搭建_Standalone

    2017年3月1日, 星期三 Spark集群搭建_Standalone Driver:    node1    Worker:  node2    Worker:  node3 1.下载安装 下载地址 ...

  3. Spark集群搭建_YARN

    2017年3月1日, 星期三 Spark集群搭建_YARN 前提:参考Spark集群搭建_Standalone   1.修改spark中conf中的spark-env.sh   2.Spark on ...

  4. hadoop+spark集群搭建入门

    忽略元数据末尾 回到原数据开始处 Hadoop+spark集群搭建 说明: 本文档主要讲述hadoop+spark的集群搭建,linux环境是centos,本文档集群搭建使用两个节点作为集群环境:一个 ...

  5. Spark集群搭建简要

    Spark集群搭建 1 Spark编译 1.1 下载源代码 git clone git://github.com/apache/spark.git -b branch-1.6 1.2 修改pom文件 ...

  6. Spark集群搭建简配+它到底有多快?【单挑纯C/CPP/HADOOP】

    最近耳闻Spark风生水起,这两天利用休息时间研究了一下,果然还是给人不少惊喜.可惜,笔者不善JAVA,只有PYTHON和SCALA接口.花了不少时间从零开始认识PYTHON和SCALA,不少时间答了 ...

  7. spark集群搭建

    文中的所有操作都是在之前的文章scala的安装及使用文章基础上建立的,重复操作已经简写: 配置中使用了master01.slave01.slave02.slave03: 一.虚拟机中操作(启动网卡)s ...

  8. Spark集群搭建中的问题

    参照<Spark实战高手之路>学习的,书籍电子版在51CTO网站 资料链接 Hadoop下载[链接](http://archive.apache.org/dist/hadoop/core/ ...

  9. Spark 集群搭建

    0. 说明 Spark 集群搭建 [集群规划] 服务器主机名 ip 节点配置 s101 192.168.23.101 Master s102 192.168.23.102 Worker s103 19 ...

随机推荐

  1. Spring 中的Null-Safety

    之前一直在某些代码中看到过使用@Nullable 标注过的注释,当时也没有在意到底是什么意思,所以这篇文章来谈谈Spring中关于Null的那些事. 在Java中不允许让你使用类型表示其null的安全 ...

  2. spring 事件驱动模型简介

    事件驱动模型简介 事件驱动模型也就是我们常说的观察者,或者发布-订阅模型:理解它的几个关键点: 首先是一种对象间的一对多的关系:最简单的如交通信号灯,信号灯是目标(一方),行人注视着信号灯(多方): ...

  3. 转载了个js代码

    document.selection.createRange方法 document.selection.createRange() 根据当前文字选择返回 TextRange 对象,或根据控件选择返回 ...

  4. [C++]二维数组还是一维数组?

    记得刚学习C++那会这个问题曾困扰过我,后来慢慢形成了不管什么时候都用一维数组的习惯,再后来知道了在一维数组中提出首列元素地址进行二维调用的办法.可从来没有细想过这个问题,最近自己写了点代码测试下,虽 ...

  5. erlang 爬虫——爬取网页图片

    说起爬虫,大家第一印象就是想到了python来做爬虫.其实,服务端语言好些都可以来实现这个东东. 在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌 ...

  6. 06 nginx Location详解之精准匹配

    一:Location详解之精准匹配 location 语法 location 有”定位”的意思, 根据Uri来进行不同的定位. 在虚拟主机的配置中,是必不可少的,location可以把网站的不同部分, ...

  7. 开源项目之easyrtmp

    https://github.com/bigbluebutton86/EasyRTMP/tree/master/src http://dl.linux-sunxi.org/SDK/A20/A20_SD ...

  8. PHP中foreach用法详细讲解

    1.foreach是什么? foreach是PHP的一种语法结构,其实就是一个工具,(工具:就是工作的时候用到的器具),那么在程序开发过程中,为了达到程序效果,就用到了foreach. 2.如何用? ...

  9. python tensorflow 学习

    Tensorflow系列——Saver的用法:http://blog.csdn.net/u011500062/article/details/51728830 Tensorflow学习系列(二): t ...

  10. stm32DMA通道 ADC通道

    DMA: 1.使用DAC的时候.将转化后得到的模拟信号通过IO口输出的时候.为什么还将IO口配置能输入模式 PS:stm32手冊上定义PA4和PA5分别和DAC1通道和DAC2通道相连  : DMA1 ...