spark学习

一、spark的安装

1 官网(spark官网)下载

spark-hadoop的版本的tar包spark-2.3.1-bin-hadoop2.7.tgz

2 上传

如我自己的上传到linux的/opt/software目录下,然后解压tar -zxvf tar包 -C 指定目录

3 在/etc/profile中配置环境变量

export SPARK_HOME=/opt/app/spark
          export PATH=$PATH:$SPARK_HOME\bin
          export PATH=$PATH:$SPARK_HOME\sbin

4 配置spark

(1)配置spark(Standalone模式的配置)

在spark的安装目录下有一个conf目录。切换至conf目录,修改将slaves.template复制为slaves(里面存放的时worker的结点地址),将spark-env.sh.template复制为spark-env.sh(spark的一些配置),同时做如下操作

修改添加slaves中的配置

chd如何安装spark spark安装详细步骤_结点


spark-env.sh中的添加配置配置

chd如何安装spark spark安装详细步骤_chd如何安装spark_02


为避免spark与hadoop中的启动方式冲突,修改spark的启动停止命令为

chd如何安装spark spark安装详细步骤_chd如何安装spark_03


将spark使用scp分发到其他的结点

使用start-spark-all.sh启动spark,jps查看,在node01结点上启动的是master,在node02,node03上启动的是worker

(2) 配置job History server

进入spark的conf目录,修改spark-default.conf.template为spark-default.conf,并在spark-default.conf以及spark-env.sh中增加配置如下

在spark-default.conf中增加如下配置

chd如何安装spark spark安装详细步骤_结点_04


在spark-env.sh中增加配置如下

chd如何安装spark spark安装详细步骤_结点_05


注意】hdfs上的目录要提前创建好hdfs dfs -mkdir -p /spark/logs

将修改的文件scp分发到其他的结点

启动spark集群

start-spark-all.sh 启动job history server

start-history-server.sh

在node01://4000上查看

(3)配置spark的高可靠HA

集群部署完了,但是有一个很大的问题,那就是Master节点存在单点故障,要解决此问题,就要借助zookeeper,并且启动至少两个Master节点来实现高可靠

chd如何安装spark spark安装详细步骤_spark_06


首先安装部署zookeeper并启动

修改spark的配置文件spark-env.sh中的配置如下

chd如何安装spark spark安装详细步骤_结点_07


在node01上启动start-spark-all.sh,然后在node02上单独启动start-master.sh 在zkCli.sh中ls /spark可以看到master的信息,同时在UI(node01:4000,node02:4000)界面可以看到master的活跃信息

spark-shell -master spark://node01:7077,node02:7077

chd如何安装spark spark安装详细步骤_spark的安装部署_08


节点上下线会动态通知,同时可以在这里编写scala程序

注意】spark中的master高可靠是动态的,并没有写死master一定要在那个节点上启动,所以master的结点个数每一次启动spark可以动态增加或者减少

(4)配置spark【YARN模式】(生产环境中常用的模式)

spark的yarn模式主要是将调度任务交由yarn资源管理器负责调度运行,此时需要关联Hadoop的yarn集群。首先修改hadoop的yarn配置,一般在hadoop的安装目录下/etc/hadoop/yarn-site.xml

chd如何安装spark spark安装详细步骤_hadoop_09


其次修改spark的配置,spark-env.sh

chd如何安装spark spark安装详细步骤_hadoop_10


开启hadoop集群,start-dfs.sh start-yarn.sh(注意在相应的节点开启)

因为是yarn模式。所以不需要启动spark集群,但运行时要指定在yarn上运行

以下是运行官方yarn模式的案例

编写shell脚本spark-yarn.sh

#!/bin/bash
/opt/app/spark/bin/spark-submit \
--class $1 \
--master yarn  \
--deploy-mode client \
--driver-memory 1g \
--executor-memory 512m \
--num-executors 2
$2 \
$3

上方脚本中第一行为约定,用什么解释器,第二行为spark-submit所在的绝对路径,$1,$2,$3是最后在执行脚本时传入的参数。【注意】yarn有两种运行方式,客户端模式和集群模式,测试一般用客户端模式(此模式可以看到结果显示)如:deploy-mode client,如果是集群模式的话修改为cluster(此模式driver提交后就结束了,并不在乎你程序是否正常执行,一般是测试好2之后在使用)
运行案例
./spark-yarn.sh org.apache.spark.examples.SparkPi /opt/app/spark/examples/example-*.jar 10
在yarn的UI界面可以看到你正在运行的应用application