数据-R语言-图表-决策-Linux-Python程序员R语言:TCGA数据分析

Spark 独立模式

2018-11-03  本文已影响4人  Liam_ml

Spark还提供了一种简单的独立部署模式。 可以手动启动独立群集,方法是手动启动主服务器,也可以使用我们提供的启动脚本。也可以在一台机器上运行这些守护进程进行测试。

将Spark Standalone安装到群集

要安装Spark Standalone模式,只需在集群上的每个节点上放置已编译的Spark版本即可。您可以在每个版本中获得预构建的Spark版本,也可以自行构建

手动启动集群

可以通过执行一下命令来启动独立主服务器

./sbin/start-master.sh

一旦启动,master会打印出一个spark://HOST:PORT自己的URL,
可以在master的Web UI上找到此URL ,默认情况下为http:// localhost:8080
同样,你可以启动一个或多个工作人员并通过以下方式将他们连接到master:

./sbin/start-slave.sh <master-spark-URL>

启动工作程序后,查看master的Web UI(默认情况下为http:// localhost:8080)。您应该看到其中列出的新节点,以及CPU和内存的数量(减去操作系统剩余的1 GB)

最后,可以将以下配置选项传递给master和worker:

启动集群脚本

要使用脚本启动spark集群,可以在Spark目录中创建一个为conf/slaves的文件,这个文教要包含启动Spark工作的所有计算机的主机名,每行一个。如何con f/slaves不存在,则启动默认为单个计算机(loaclhost),这对测试很方便。主机通过ssh访问每个工作机器。默认情况下,ssh是并行运行的,而且设置无密码访问。想设置密码,则可以设置环境变量SPARK_SSH_FOREGROUND并为每个工作人员提供密码。

设置此文件后,您可以使用以下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- 停止通过sbin/start-master.sh脚本启动的主服务器。
sbin/stop-slaves.sh- 停止conf/slaves文件中指定的计算机上的所有从属实例。
sbin/stop-all.sh - 如上所述停止主站和从站。

请注意,必须在要运行Spark主服务器的计算机上执行这些脚本,而不是本地计算机。
可以选择通过设置环境变量来进一步配置群集conf/spark-env.sh。

开头创建此文件conf/spark-env.sh.template,并将其复制到所有工作计算机以使设置生效。可以使用以下设置:
SPARK_MASTER_HOST 将主服务器绑定到特定的主机名或IP地址,例如公共主机名或IP地址。
SPARK_MASTER_PORT 在另一个端口上启动主服务器(默认值:7077)。
SPARK_MASTER_WEBUI_PORT 主Web UI的端口(默认值:8080)。
SPARK_MASTER_OPTS 仅以“-Dx = y”形式应用于主服务器的配置属性(默认值:无)。请参阅下面的可能选项列表。
SPARK_LOCAL_DIRS 用于Spark中“临时”空间的目录,包括映射输出文件和存储在磁盘上的RDD。这应该位于系统中的快速本地磁盘上。它也可以是不同磁盘上多个目录的逗号分隔列表。
SPARK_WORKER_CORES 允许Spark应用程序在计算机上使用的核心总数(默认值:所有可用核心)。
SPARK_WORKER_MEMORY 的存储器总量以允许火花应用程序在计算机上,例如使用1000m,2g(默认值:总内存减去1 GB); 请注意,每个应用程序的单个内存都使用其spark.executor.memory属性进行配置。

注意:启动脚本目前不支持Windows。要在Windows上运行Spark群集,请手动启动master和workers

SPARK_MASTER_OPTS支持以下系统属性

将应用程序连接到群集
要在Spark集群上运行应用程序,只需将spark://IP:PORTmaster 的URL 传递给SparkContext 构造函数即可
要针对群集运行交互式Spark shell,请运行以下命令:


./bin/spark-shell --master spark://IP:PORT

还可以传递一个选项--total-executor-cores <numCores>来控制spark-shell在群集上使用的核心数

启动Spark应用程序

独立群集模式目前仅支持跨应用程序的简单FIFO调度程序。但是,要允许多个并发用户, 可以控制每个应用程序将使用的最大资源数。默认情况下,它将获取群集中的所有核心,这只有在 一次只运行一个应用程序时才有意义。您可以通过spark.cores.maxSparkConf中设置来限制核心数量。例如:

val conf = new SparkConf()
  .setMaster(...)
  .setAppName(...)
  .set("spark.cores.max", "10")
val sc = new SparkContext(conf)

此外,您可以spark.deploy.defaultCores在群集主进程上配置以更改未设置spark.cores.max为小于无限的应用程序的默认值。通过添加以下内容来执行此操作conf/spark-env.sh:

export SPARK_MASTER_OPTS="-Dspark.deploy.defaultCores=<value>"

这在用户可能未单独配置最大核心数的共享群集上很有用。

执行者调度

分配给每个执行程序的核心数是可配置的。当spark.executor.cores显式设置时,如果工作者具有足够的内核和内存,则可以在同一工作程序上启动来自同一应用程序的多个执行程序。否则,默认情况下,每个执行程序都会获取该工作程序上可用的所有核心,在这种情况下,在一个单一的计划迭代期间,每个工作程序只能启动一个执行程序。

监控和记录

Spark的独立模式提供基于Web的用户界面来监控集群。主服务器和每个工作者都有自己的Web UI,显示集群和作业统计信息。默认情况下,您可以在端口8080访问主服务器的Web UI。可以在配置文件中或通过命令行选项更改端口。

此外,每个作业的详细日志输出也会写入每个从属节点的工作目录(SPARK_HOME/work默认情况下)。 将看到每个作业的两个文件,stdout并且stderr所有输出都写入其控制台。

与Hadoop一起运行

可以将Spark与现有Hadoop集群一起运行,只需在同一台计算机上将其作为单独的服务启动即可。要从Spark访问Hadoop数据,只需使用hdfs:// URL(通常hdfs://<namenode>:9000/path,您可以在Hadoop Namenode的Web UI上找到正确的URL)。或者,您可以为Spark设置单独的群集,并且仍然可以通过网络访问HDFS; 这将比磁盘本地访问慢,但如果您仍然在同一局域网中运行,则可能不会引起关注(例如,您在每个机架上放置了几台Spark机器,您已启用Hadoop)。

配置网络安全端口

Spark大量使用网络,某些环境对使用严密的防火墙设置有严格的要求。有关要配置的端口的完整列表,请参阅 安全性页面

高可用性

默认情况下,独立调度集群对工作人员故障具有弹性(因为Spark本身可以通过将其移动到其他工作人员而失去工作的弹性)。但是,调度程序使用Master来做出调度决策,这(默认情况下)会创建单点故障:如果Master崩溃,则不能创建新的应用程序。为了避免这种情况,我们有两个高可用性方案,详述如下。

上一篇 下一篇

猜你喜欢

热点阅读