目录
一:local模式
1.local模式简介
Local模式就是运行在一台计算机上的模式,通常就是用于在本机上练手和测试。它可以通过以下集中方式设置Master。
local:所有计算都运行在一个Core当中,没有任何并行计算,通常我们在本机执行一些测试代码,或者练手,就用这种模式;
local[K]:指定使用K个Core来运行计算,比如local[4]就是运行4个Core来执行;
2.local模式搭建
1.解压tar包后可以直接使用,不需要进行相关的配置
tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /opt/module/
解压以后将名字改为spark-local mv spark-2.1.1-bin-hadoop2.7/ spark-local
,这里不需要将解压完的tar包在scp到其他的节点
2.运行官方的PI案例,在/opt/module/spark-local 下执行下面的脚本。
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--executor-memory 1G \
--total-executor-cores 2 \
./examples/jars/spark-examples_2.11-2.1.1.jar \
10
二:Standalone模式搭建
1.Standalone模式简介:
Standalone模式是指使用Spark原生的资源管理器的集群运行模式,需要使用Master和Worker节点,其中,Master节点负责资源的控制、管理、监控集群中的Worker节点.
2.Standalone模式的搭建:
2.1将刚才解压好的tar包在/opt/module中执行 [root@hadoop102 module]# cp -r ./spark-local/ ./spark-stand
2.2 进入spark-stand下的conf目录,将slaves.template,spark-env.sh.template这两个文件改名为slaves spark-env.sh
mv slaves.template slaves
mv spark-env.sh.template spark-env.sh
2.3 进入slaves文件,将里面最后一行的localhost删掉,替换为hadoop102,hadoop103,hadoop104,这3个分别是我集群机器的主机名,这里要需要根据自己的主机名来更改一下。
2.4 修改spark-env.sh,在里面添加以下内容后保存退出。
SPARK_MASTER_HOST=hadoop102
SPARK_MASTER_PORT=7077
2.5 修改spark-stand/sbin下面的spark-config.sh文件添加以下内容,将JAVA_HOME load进去,如果不知道jdk的安装路径可以echo $JAVA_HOME来查看
export JAVA_HOME=/opt/module/jdk1.8.0_144
2.6 将spark-stand拷贝到另外两台机器上
scp -r /opt/module/spark-stand root@hadoop103:/opt/module
scp -r /opt/module/spark-stand root@hadoop103:/opt/module
scp -r /opt/module/spark-stand root@hadoop104:/opt/module
以上操作都执行好以后我们在hadoop102上面的spark-stand/sbin下执行start-all.sh启动spark集群。
再次运行官方案例测试
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop102:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
./examples/jars/spark-examples_2.11-2.1.1.jar \
10
三:Yarn模式
1.yarn模式简介
YARN模式是指使用Hadoop的YARN作为资源管理器的集群运行模式。
在YARN模式下,不需要使用Master和Worker节点(即不需要在搭建额外的spark集群了),而是使用YARN下的ResourceManager 节点与NodeManager节点,对应Standalone模式下的Master节点和Worker节点.
2.yarn模式搭建
1.将刚才hadoop102上面的spark-stand复制一份在当前目录
cp -r ./spark-stand/ ./spark-yarn
2.进入hadoop102中的spark-yarn/conf里面修改spark-env.sh,加入以下内容目的是让spark知道yarn的位置在哪里。
3.在hadoop102,hadoop103,hadoop104这三台主机上分别编辑yarn-site.xml文件添加如下内容,我的目录是在/opt/module/hadoop-2.7.2/etc/hadoop,可以根据自己的目录做相应的修改。
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
4.将以上内容在hadoop102上编辑完不需要在将spark-yarn拷贝到另外的机器上了,因为yarn模式下spark不需要集群模式,只需有yarn集群就可以了因为之前yarn集群已经存在于Hadoop上了.
5.启动hadoop(注意spark中的yarn模式必须要先启动hadoop),执行一下官方案例
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.11-2.1.1.jar \
10
注意这里的–master已经改变,刚才Standalone模式下是hadoop102:7077,这里yarn模式已经变为yarn.
yarn模式下启动shell窗口可以发现也有相应的进程。
3.spark历史服务器配置
1.在spark-yarn/conf下将spark-default.conf.template改名为spark-default.conf
mv spark-defaults.conf.template spark-defaults.conf
2.修改spark-default.conf文件,开启Log,注意hdfs://后面的那里hadoop102要根据自己的主机名来改写,下同。
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop102:9000/directory
注意:hadoop下的directory目录需要提前建立
spark.eventLog.enabled:启用日志
spark.eventLog.dir:Application在运行过程中所有的信息均记录在该属性指定的路径下.
3.修改spark-env.sh文件,添加如下内容
export SPARK_HISTORY_OPTS=
"-Dspark.history.ui.port=18080
-Dspark.history.retainedApplications=30
-Dspark.history.fs.logDirectory=hdfs://hadoop102:9000/directory"
spark.history.ui.port: Spark中historyServer的webUI的端口号
spark.history.fs.logDirectory=hdfs://hadoop102:9000/directory : 配置了该属性后,在start-history-server.sh时就无需再显式的指定路径,Spark History Server页面只展示该指定路径下的信息