独立模式(Standone Mode)启动Spark
来源:互联网 发布:adobe xd windows 编辑:程序博客网 时间:2024/06/07 03:35
手动启动
进入Spark安装根目录
cd ~/Rimon/spark-2.1.0-bin-hadoop2.7/
输入命令以独立模式(Standone Mode)启动Spark
./sbin/start-master.sh
启动成功后,主服务器将打印出一个spark:// HOST:PORT URL,它可以用来将worker连接到它,或者作为“master”参数传递给SparkContext。 可以在浏览器上输入服务器地址(默认情况下为http:// localhost:8080)找到此URL。
输入命令连接到上一步获取到的URL
./sbin/start-slave.sh <master-spark-URL>
连接成功后可以在浏览器的Workers部分看到新的节点,以及它的CPU和内存的数量(减去操作系统的一千兆字节)。
注:可以将以下配置选项传递给主服务器和工作线程
集群启动脚本
要使用启动脚本启动Spark独立集群,您应该在Spark目录中创建一个名为conf / slaves的文件,该文件必须包含您打算启动Spark worker的所有计算机的主机名,每行一个。 如果conf / slaves不存在,则启动脚本默认为单个计算机(localhost),这对于测试很有用。主机通过ssh访问每个工作机。 默认情况下,ssh并行运行,并且需要设置无密码(使用私钥)访问。 如果您没有无密码设置,可以设置环境变量SPARK_SSH_FOREGROUND,并为每个工作程序连续提供密码。
设置此文件后,可以使用以下shell脚本启动或停止集群,这些shell脚本基于Hadoop的部署脚本,并且在SPARK_HOME / sbin中可用:
sbin/start-master.sh - 在执行脚本的机器上启动主实例。
sbin/start-slaves.sh - 在conf / slaves文件中指定的每台机器上启动从属实例。
sbin/start-slave.sh - 在执行脚本的机器上启动从属实例。
sbin/start-all.sh - 启动包括主实例和从属实例的所有实例。
sbin/stop-master.sh - 停止通过bin / start-master.sh脚本启动的主实例。
sbin/stop-slaves.sh - 在conf / slaves文件中指定的机器上停止所有从实例。
sbin/stop-all.sh - 停止包括主实例和从属实例的所有实例。
sbin/start-master.sh - 在执行脚本的机器上启动主实例。
sbin/start-slaves.sh - 在conf / slaves文件中指定的每台机器上启动从属实例。
sbin/start-slave.sh - 在执行脚本的机器上启动从属实例。
sbin/start-all.sh - 启动包括主实例和从属实例的所有实例。
sbin/stop-master.sh - 停止通过bin / start-master.sh脚本启动的主实例。
sbin/stop-slaves.sh - 在conf / slaves文件中指定的机器上停止所有从实例。
sbin/stop-all.sh - 停止包括主实例和从属实例的所有实例。
这些脚本必须在要运行Spark主机的计算机上执行,而不是本地计算机。
您可以选择通过在conf / spark-env.sh中设置环境变量来进一步配置集群。 通过从conf / spark-env.sh.template开始创建此文件,并将其复制到所有工作计算机以使设置生效。 以下设置可用:
启动脚本目前不支持Windows。 要在Windows上运行Spark集群,请手动启动master和worker。
SPARK_MASTER_OPTS支持以下系统属性:
SPARK_WORKER_OPTS支持以下系统属性:
将应用程序连接到集群
要在Spark集群上运行应用程序,只需将Spark的主机的spark:// IP:PORT URL传递给SparkContext构造函数。
使用交互式Spark shell运行集群,请运行以下命令:
./bin/spark-shell --master spark://IP:PORT
您还可以传递选项--total-executor-cores <numCores>以控制spark-shell在群集上使用的核心数。
启动Spark应用程序
spark提交脚本提供了将编译的Spark应用程序提交到集群的最直接的方式。对于独立集群,Spark当前支持两种部署模式。在客户端模式下,驱动程序在与提交应用程序的客户端相同的进程中启动。然而,在集群模式下,驱动程序从集群中的一个Worker进程启动,并且客户端进程在履行其提交应用程序的职责后立即退出,而不等待应用程序完成。
如果您的应用程序是通过Spark提交启动的,那么应用程序jar将自动分发到所有工作节点。对于您的应用程序依赖的任何其他jar,您应该通过--jars标志使用逗号作为分隔符(例如--jars jar1,jar2)指定它们。要控制应用程序的配置或执行环境,请参阅Spark配置。
此外,独立集群模式支持在使用非零退出代码退出时自动重新启动应用程序。要使用此功能,您可以在启动应用程序时将--supervise标志传递到spark-submit。然后,如果您希望杀死重复失败的应用程序,您可以通过以下方式:
./bin/spark-class org.apache.spark.deploy.Client kill <master url> <driver ID>
您可以通过独立的Master Web UI在http:// <master url>:8080找到驱动程序ID。
资源调度
独立集群模式当前只支持跨应用程序的简单FIFO调度程序。 但是,为了允许多个并发用户,您可以控制每个应用程序将使用的最大资源数。 默认情况下,它将获取集群中的所有核心,这只有在每次运行一个应用程序时才有意义。 您可以通过在SparkConf中设置spark.cores.max来限制核心数。 例如:
val conf = new SparkConf() .setMaster(...) .setAppName(...) .set("spark.cores.max", "10")val sc = new SparkContext(conf)
此外,您可以在集群主进程上配置spark.deploy.defaultCores,以更改不将spark.cores.max设置为小于infinite的应用程序的默认值。 通过在conf / spark-env.sh中添加以下内容来执行此操作:
export SPARK_MASTER_OPTS =“ - Dspark.deploy.defaultCores = <value>”
这在用户可能没有单独配置最大数量的核心的共享集群上很有用。
监控和日志
Spark的独立模式提供了一个基于Web的用户界面来监控集群。 主人和每个工人都有自己的Web UI,显示集群和作业统计信息。 默认情况下,您可以访问主机的端口8080的Web UI。可以在配置文件中或通过命令行选项更改端口。
此外,每个作业的详细日志输出也写入每个从节点的工作目录(SPARK_HOME /缺省情况下为工作目录)。 您将看到每个作业的两个文件,stdout和stderr,并将所有输出写入其控制台。
根据Hadoop运行
您可以通过将Spark作为单独的服务在同一台计算机上启动,将Spark与现有的Hadoop集群并排运行。 要从Spark访问Hadoop数据,只需使用hdfs:// URL(通常为hdfs:// <namenode>:9000 / path,但您可以在Hadoop Namenode的Web UI上找到正确的URL)。 或者,您可以为Spark设置一个单独的集群,仍然可以通过网络访问HDFS; 这将比磁盘本地访问慢,但如果你仍然在同一个局域网中运行,可能不是一个问题(例如,你在你的Hadoop的每个机架上放置一些Spark机器)。
配置网络安全的端口
Spark大量使用网络,并且一些环境对使用严格的防火墙设置有严格的要求。 有关要配置的端口的完整列表,请参阅security page。
高可用性
默认情况下,独立调度集群对于Worker失败是有弹性的(只要Spark本身可以通过将其移动到其他worker来恢复正常工作)。 但是,调度程序使用主机进行调度决策,这(默认情况下)会创建单点故障:如果主机崩溃,则不能创建新的应用程序。 为了规避这一点,我们有两个高可用性方案,详细如下。
主实例ZooKeeper支持
概述
利用ZooKeeper提供领导选举和一些状态存储,您可以在连接到同一个ZooKeeper实例的集群中启动多个主服务器。一个人将被选为“领导者”,其他人将保持待命模式。如果当前的领导者死亡,则选择另一个主机,恢复旧的主机的状态,然后恢复调度。整个恢复过程(从第一个领导者失效的时间)应该需要1到2分钟。此延迟仅影响调度新应用程序 - 在主故障切换期间已在运行的应用程序不受影响。
配置
为了启用此恢复模式,您可以通过配置spark.deploy.recoveryMode和相关spark.deploy.zookeeper。*配置在spark-env中设置SPARK_DAEMON_JAVA_OPTS。可能的问题:如果您的群集中有多个主机,但无法正确配置主机使用ZooKeeper,主机将无法发现彼此,并认为他们都是领导者。这不会导致健康的集群状态(因为所有主机都将独立调度)。
细节
在设置了ZooKeeper群集后,启用高可用性非常简单。只需在具有相同ZooKeeper配置(ZooKeeper URL和目录)的不同节点上启动多个主进程。可以随时添加和删除主机。
为了调度新应用程序或将Worker添加到集群,他们需要知道当前leader的IP地址。这可以通过简单地传递一个大师列表例如将SparkContext指向spark:// host1:port1,host2:port2。这将导致您的SparkContext尝试注册两个主机 - 如果host1关闭,这个配置仍然是正确的,因为我们会找到新的领导者host2。
在“注册到主机”和正常操作之间有一个重要的区别。 启动时,应用程序或工作人员需要能够找到并注册当前的领导。如果发生故障转移,新的领导将联系所有以前注册的应用程序和从属实例,以通知他们领导的变化,所以他们甚至不需要在启动时知道新主机的存在。
由于这个属性,可以在任何时候创建新的大师,唯一需要担心的是,万一它成为领导者新的应用程序和从属实例可以找到它注册。
使用本地文件系统的单节点恢复
概述
ZooKeeper是生产级别高可用性的最佳方式,但如果你只是想要能够重新启动失败的主机,文件系统模式就可以解决。当应用程序和从属实例注册时,它们有足够的状态写入提供的目录,以便在重新启动主进程时可以恢复它们。
设置
为了启用此恢复模式,您可以使用此配置在spark-env中设置SPARK_DAEMON_JAVA_OPTS:
细节
此解决方案可以与过程监视器/管理器(如monit)一起使用,或只是通过重新启动启用手动恢复。
虽然文件系统恢复似乎比没有做任何恢复更好,但是这种模式可能是次优的某些开发或实验目的。 特别是,通过stop-master.sh杀死主机不会清除它的恢复状态,所以每当你启动一个新的主机,它将进入恢复模式。 如果需要等待所有先前注册的Worker /客户端超时,这可能会将启动时间增加最多1分钟。
虽然不是官方支持的,但是可以挂载一个NFS目录作为恢复目录。 如果原始主节点完全死机,则可以在不同的节点上启动主服务器,这将正确恢复所有先前注册的Worker /应用程序(等效于ZooKeeper恢复)。
0 0
- 独立模式(Standone Mode)启动Spark
- 搭建Spark集群(独立模式)
- Spark独立部署模式
- Spark 独立部署模式
- Spark 独立部署模式
- spark独立模式配置
- Android Activity 启动模式(Launch Mode)
- Activity Launch Mode(启动模式)
- hadoop配置独立模式(Standalone Mode)
- Spark独立集群模式部署
- Spark单机模式独立部署
- Spark运行模式(一)-----Spark独立模式
- Spark运行模式(一)-----Spark独立模式
- spark的独立模式集群部署
- spark环境搭建(独立集群模式)
- spark 启动模式
- Apache Spark - Cluster Mode Overview (Spark集群模式一览)
- Emacs模式(Mode)
- 安装虚拟机,配置Ubuntu系统,将ubuntu server 14.04系统安装到u盘,作为引导盘
- 43. Multiply Strings
- Ajax 与异步数据传输
- Eclipse查看Jar包中的源码配置和下载(超简单)
- Shell中,实现单一实例(译)
- 独立模式(Standone Mode)启动Spark
- String KMP算法 JAVA实现
- JQuery初识
- Java/Jsp中让数值不使用科学计数法显示的解决方案
- 【私人手册】Markdown语法
- mybatis 基本类型的if条件判断问题 There is no getter for property named 'xxx' in 'class Java.lang.Integer'
- [ML]机器学习之线性回归
- snort 源码分析之模式匹配引擎
- 文章标题