html5 手机网站模板,wordpress 边栏修改,汕头如何建设网站设计,wordpress关闭缩略图Spark集群结构 图 名词解释 Driver 该进程调用 Spark 程序的 main 方法#xff0c;并且启动 SparkContextCluster Manager 该进程负责和外部集群工具打交道#xff0c;申请或释放集群资源Worker 该进程是一个守护进程#xff0c;负责启动和管理 ExecutorExecutor 该进程是一…Spark集群结构 图 名词解释 Driver 该进程调用 Spark 程序的 main 方法并且启动 SparkContextCluster Manager 该进程负责和外部集群工具打交道申请或释放集群资源Worker 该进程是一个守护进程负责启动和管理 ExecutorExecutor 该进程是一个 JVM 虚拟机负责运行 Spark Task 运行一个Spark程序大致经历如下几个步骤 启动 Driver, 创建SparkContextClient 提交程序给Driver, Driver 向 Cluster Manager 申请集群资源资源申请完毕在 Worker 中启动 ExecutorDriver 将程序转化为 Tasks ,分发给 Executor 执行 问题 问题一Spark 程序可以运行在什么地方 Spark 可以将任务运行在两种模式下 单机使用线程模拟并行来运行程序集群使用集群管理器来和不同类型的集群交互将任务运行在集群中Spark 可以使用的集群管理工具有 Spark StandaloneHadoop YarnApache MesosKubernetes 问题二Driver 和 Worker 什么时候被启动 Standalone 集群 Standalone 集群中分为两个角色Master 和 Slave,而 Slave 就是Worker ,所以在 Standalone 集群中启动之初就会创建固定数量的 Worker Driver 的启动分为两种模式Client 和Cluster。在 Client 模式下Driver 运行在 Client 端在 Client 启动的时候被启动。在 Cluster 模式下Driver 运行在某个 Worker 中随着应用的提交而启动 Spark Standalone图 yarn 集群 在 Yarn 集群模式下, 也依然分为 Client 模式和 Cluster 模式, 较新的版本中已经逐渐在废弃 Client 模式了, 所以上图所示为 Cluster 模式 如果要在 Yarn 中运行 Spark 程序, 首先会和 RM 交互, 开启 ApplicationMaster, 其中运行了 Driver, Driver创建基础环境后, 会由 RM 提供对应的容器, 运行 Executor, Executor会反向向 Driver 反向注册自己, 并申请 Tasks 执行 在后续的 Spark 任务调度部分, 会更详细介绍 yarn图 总结 Master 负责总控, 调度, 管理和协调 Worker, 保留资源状况等Slave 对应 Worker 节点, 用于启动 Executor 执行 Tasks, 定期向 Master汇报Driver 运行在 Client 或者 Slave(Worker) 中, 默认运行在 Slave(Worker) 中 Spark集群搭建 下载Spark安装包 https://archive.apache.org/dist/spark/spark-2.2.1/ 上传并解压改名 cd soft
rz
tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /rootmv /root/spark-2.1.1-bin-hadoop2.7 /root/spark配置 修改 spark-env.sh 进入配置目录, 并复制一份新的配置文件, 以供在此基础之上进行修改 cd /root/spark/conf
cp spark-env.sh.template spark-env.sh
vi spark-env.sh# 将以下内容复制进配置文件末尾
# 指定 Java Home
export JAVA_HOME/root/jdk# 指定 Spark Master 地址
export SPARK_MASTER_HOSTmaster
export SPARK_MASTER_PORT7077修改配置文件 slaves, 以指定从节点为止, 从在使用 sbin/start-all.sh 启动集群的时候, 可以一键启动整个集群所有的 Worker 进入配置目录, 并复制一份新的配置文件, 以供在此基础之上进行修改 cd /root/spark/conf
cp slaves.template slaves
vi slaves# 配置所有节点的地址
master
slave1
slave2配置 HistoryServer 默认情况下, Spark 程序运行完毕后, 就无法再查看运行记录的 Web UI 了, 通过 HistoryServer 可以提供一个服务, 通过读取日志文件, 使得我们可以在程序运行结束后, 依然能够查看运行过程 复制 spark-defaults.conf, 以供修改 cd /root/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://master:9000/spark_log
spark.eventLog.compress true# (注意spark.eventLog.dir与Dspark.history.fs.logDirectory的NameNode地址要与$HADOOP_HOME/etc/hadoop下的core-site中的namenode地址相同)将以下内容复制到spark-env.sh的末尾, 配置 HistoryServer 启动参数, 使得 HistoryServer 在启动的时候读取 HDFS 中写入的 Spark 日志 # 指定 Spark History 运行参数
export SPARK_HISTORY_OPTS-Dspark.history.ui.port4000 -Dspark.history.retainedApplications3 -Dspark.history.fs.logDirectoryhdfs://master:9000/spark_log为 Spark 创建 HDFS 中的日志目录 hdfs dfs -mkdir -p /spark_log分发和运行 将 Spark 安装包分发给集群中其它机器 cd /root/
scp -r spark rootslave1:/root/
scp -r spark rootslave2:/root/启动 Spark Master 和 Slaves, 以及 HistoryServer cd /root/spark
sbin/start-all.sh
sbin/start-history-server.sh以上是spark standalone 集群搭建 Spark 集群高可用搭建 目标 简要了解如何使用 Zookeeper 帮助 Spark Standalone 高可用 对于 Spark Standalone 集群来说, 当 Worker 调度出现问题的时候, 会自动的弹性容错, 将出错的 Task 调度到其它 Worker 执行但是对于 Master 来说, 是会出现单点失败的, 为了避免可能出现的单点失败问题, Spark 提供了两种方式满足高可用 使用 Zookeeper 实现 Masters 的主备切换使用文件系统做主备切换 停止 Spark 集群 cd /root/spark
sbin/stop-all.sh修改配置文件, 增加 Spark 运行时参数, 从而指定 Zookeeper 的位置 进入spark-env.sh 所在目录, 打开 vi 编辑 cd /root/spark/conf
vi spark-env.sh编辑 spark-env.sh, 添加 Spark 启动参数, 并注释SPARK_MASTER_HOST 地址 # 指定 Java Home
export JAVA_HOME/root/jdk# 指定 Spark Master 地址
# export SPARK_MASTER_HOSTmaster
export SPARK_MASTER_PORT7077# 指定 Spark History 运行参数
export SPARK_HISTORY_OPTS-Dspark.history.ui.port4000 -Dspark.history.retainedApplications3 -Dspark.history.fs.logDirectoryhdfs://node01:9000/spark_log# 指定 Spark 运行时参数
export SPARK_DAEMON_JAVA_OPTS-Dspark.deploy.recoveryModeZOOKEEPER -Dspark.deploy.zookeeper.urlmaster:2181,slave1:2181,slave2:2181 -Dspark.deploy.zookeeper.dir/spark分发配置文件到整个集群 cd /export/servers/spark/conf
scp spark-env.sh slave1:/root/spark/conf
scp spark-env.sh slave2:/root/spark/conf启动 在 master上启动整个集群 cd /root/spark
sbin/start-all.sh
sbin/start-history-server.sh在 slave1上单独再启动一个 Master cd /root/spark
sbin/start-master.sh查看 master master 和 slave1 master 的 WebUI 你会发现一个是 ALIVE(主), 另外一个是 STANDBY(备)如果关闭一个, 则另外一个成为ALIVE, 但是这个过程可能要持续两分钟左右, 需要耐心等待 运行案例测试集群
目标
从示例应用运行中理解 Spark 应用的运行流程 流程 进入 Spark 安装目录中 cd /root/spark/运行 Spark 示例 bin/spark-submit \\
--class org.apache.spark.examples.SparkPi \\
--master spark://master:7077 \\
--executor-memory 1G \\
--total-executor-cores 2 \\
--/root/spark/examples/jars/spark-examples_2.11-2.1.1.jar \\ # 视jar包版本而定
100 # 计算100次