大数据应用-Spark集群的部署

Spark 高可用集群的安装

  • 集群的规划
    • 1.下载和解压
  • 下载 Spark
      • 解压 Spark 安装包
      • 移动 Spark 安装包
    • 2.配置
    • 分发和运行
    • Spark 集群高可用搭建
    • 入门例子

集群的规划

一个简单的表格是这么创建的:

节点 功能 节点名称 节点IP
marster 和 slave zhen(震) 192.168.2.5
slave xun(巽) 192.168.2.6
slave li(离) 192.168.2.7

1.下载和解压

此步骤假设大家的 Hadoop 集群已经能够无碍的运行, 并且 Linux 的防火墙和 SELinux 已经关闭, 时钟也已经同步:

  1. 下载 Spark 安装包 ,, 下载时候选择对应的 Hadoop 版本(资料中已经提供了 Spark 安装包, 直接上传至集群 Master 即可, 无需遵循以下步骤);

下载 Spark

cd /export/softwares
wget https://archive.apache.org/dist/spark/spark-2.2.0/spark-2.2.0-bin-hadoop2.7.tgz

  1. 解压并拷贝到/usr/local/spark

解压 Spark 安装包

tar xzvf spark-2.2.0-bin-hadoop2.7.tgz

移动 Spark 安装包

mv spark-2.2.0-bin-hadoop2.7.tgz /usr/local/spark

  1. 修改配置文件spark-env.sh, 以指定运行参数;

cd /usr/local/spark/conf
cp spark-env.sh.template spark-env.sh
vi spark-env.sh

将以下内容复制进配置文件末尾
#指定 Java Home
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_171
#指定 Spark Master 地址
export SPARK_MASTER_HOST=zhen
export SPARK_MASTER_PORT=7077

2.配置

1.修改配置文件 slaves, 以指定从节点为止, 从在使用 sbin/start-all.sh 启动集群的时候, 可以一键启动整个集群所有的 Worker

  • 进入配置目录, 并复制一份新的配置文件, 以供在此基础之上进行修改

cd /export/servers/spark/conf
cp slaves.template slaves
vi slaves

  • 配置所有从节点的地址

zhen
xun
li

2.配置 HistoryServer

  • 默认情况下, Spark 程序运行完毕后, 就无法再查看运行记录的 Web UI 了, 通过 HistoryServer 可以提供一个服务, 通过读取日志文件, 使得我们可以在程序运行结束后, 依然能够查看运行过程
  • 复制 spark-defaults.conf, 以供修改

cd /usr/local/spark/conf
cp spark-defaults.conf.template spark-defaults.conf
vi spark-defaults.conf

  • 将以下内容复制到spark-defaults.conf末尾处, 通过这段配置, 可以指定 Spark 将日志输入到 HDFS 中

spark.eventLog.enabled true
spark.eventLog.dir hdfs://zhen:8020/spark_log
spark.eventLog.compress true

  • 将以下内容复制到spark-env.sh的末尾, 配置 HistoryServer 启动参数, 使得 HistoryServer 在启动的时候读取 HDFS 中写入的 Spark 日志

#指定 Spark History 运行参数
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://zhen:8020/spark_log"

  • 为 Spark 创建 HDFS 中的日志目录

hdfs dfs -mkdir -p /spark_log

分发和运行

1.将 Spark 安装包分发给集群中其它机器

cd /usr/local
scp -r spark root@xun:$PWD

scp -r spark root@li:$PWD

2.启动 Spark Master 和 Slaves, 以及 HistoryServer

cd /usr/local/spark
sbin/start-all.sh
sbin/start-history-server.sh

在这里插入图片描述

Spark 集群高可用搭建

对于 Spark Standalone 集群来说, 当 Worker 调度出现问题的时候, 会自动的弹性容错, 将出错的 Task 调度到其它 Worker 执行

但是对于 Master 来说, 是会出现单点失败的, 为了避免可能出现的单点失败问题, Spark 提供了两种方式满足高可用

使用 Zookeeper 实现 Masters 的主备切换

使用文件系统做主备切换

使用文件系统做主备切换的场景实在太小, 所以此处不再赘述

1.停止 Spark 集群

cd /usr/local/spark
sbin/stop-all.sh

2.修改配置文件, 增加 Spark 运行时参数, 从而指定 Zookeeper 的位置

  • 进入 spark-env.sh 所在目录, 打开 vi 编辑

cd /usr/local/spark/conf
vi spark-env.sh

3.编辑 spark-env.sh, 添加 Spark 启动参数, 并去掉 SPARK_MASTER_HOST 地址
大数据应用-Spark集群的部署_第1张图片

#指定 Java Home
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_171
#指定 Spark Master 地址
#export SPARK_MASTER_HOST=zhen
export SPARK_MASTER_PORT=7077

#指定 Spark History 运行参数
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://zhen:8020/spark_log"

#指定 Spark 运行时参数
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=zhen:2181,xun:2181,li:2181 -Dspark.deploy.zookeeper.dir=/spark"

4.分发到各个节点上

cd /usr/local/spark/conf
scp spark-env.sh xun:$PWD

scp spark-env.sh li:$PWD

5.启动各个节点

  • 在 zhen(震)主节点 上启动整个集群

cd /usr/local/spark
sbin/start-all.sh
sbin/start-history-server.sh

  • 在 xun(巽)副主节点上单独再启动一个 Master

cd /usr/local/spark
sbin/start-master.sh

6.启动完成

  • .主节点
    大数据应用-Spark集群的部署_第2张图片
  • .从节点
    大数据应用-Spark集群的部署_第3张图片

入门例子

1.从示例应用运行中理解 Spark 应用的运行流程

  • 1 进入 Spark 安装目录中

cd /usr/local/spark

  • 2运行spark脚本任务
// An highlighted block
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \ #这个是要执行的路径
--master spark://zhen:7077,xun:7077,li:7077 \ #这里是指定多个master节点,最要一个
--executor-memory 1G \
--total-executor-cores 2 \
/usr/local/spark/examples/jars/spark-examples_2.11-2.2.0.jar \
100 #这个是参数

运行结果:
大数据应用-Spark集群的部署_第4张图片

你可能感兴趣的:(大数据应用-Spark集群的部署)