2019独角兽企业重金招聘Python工程师标准>>>
Spark 独立部署模式 博客分类: spark
除了在 Mesos 或 YARN 集群上运行之外, Spark 还提供一个简单的独立部署的模块。你通过手动开始master和workers 来启动一个独立的集群。你也可以利用我们提供的脚本 .它也可以运行这些进程在单个机器上进行测试。 安装 Spark 独立集群 部署Spark最简单的方法就是运行./make-distribution.sh 脚本来创建一个2进制发行版.这个版本能部署在任意运行这java的机子上,不需要安装 Scala. 建议的步棸是先在一个节点部署并启动master,获得 master spark URL,在dist/这个目录下修改conf/spark-env.sh然后再部署到其他的节点上。 |
手动启动集群 通过如下命令启动单独模式的master服务: ./bin/start-master.sh 一旦启动,master就会输出spark://IP:PORT以提示连接 workers 的方式。也可以通过参数“master”给SparkContext来连接集群的作业.你可以在master的web管理界面上看到这样的地址,默认是http://localhost:8080. 同样,你可以启动一个或者多个worker,通过下面的语句使之和master建立连接: ./spark-class org.apache.spark.deploy.worker.Worker spark://IP:PORT 启动一个worker后,查看 master的 web管理界面 (默认http://localhost:8080),上面列出了新近加入的节点的CPU和内存的信息。(不包括给操作系统预留的内存空间)。 最后,以下 master 和 worker的一些配置选项: -i IP,--ip IP | 要监听的IP地址或者 DNS 机器名 | -p PORT,--port PORT | 要监听的端口 (默认: master 7077 ;worker随机) | --webui-port PORT | web UI端口 (默认: master 8080, worker 8081) | -c CORES,--cores CORES | 作业可用的CPU内核数量(默认: 所有可用);只在worker上 | -m MEM,--memory MEM | 作业可使用的内存容量,默认格式1000M或者 2G (默认: 所有RAM去掉给操作系统用的1 GB); 只在worker上。 | -d DIR,--work-dir DIR | 伸缩空间和日志输入的目录路径 (默认: SPARK_HOME/work); 只在worker上 |
|
集群启动脚本 通过脚本启动 Spark独立集群时, 需要在Spark 目录下创建一个文件 conf/slaves, 列出所有启动的的Spark workers的主机名,每行一条记录. Master必须能够实现通过ssh(使用私钥)访问worker机器,可以使用ssh localhost来测试。 一旦你建立了这个档案,你可以通过以下脚本停止或启动集群, 这些脚本基于 Hadoop’s 部署脚本, 在SPARK_HOME/bin目录: - bin/start-master.sh-在机器上执行脚本,启动 master .
- bin/start-slaves.sh- 启动conf/slaves中指定的每一个slave .
- bin/start-all.sh- 同时启动master 以及 上面所说文件中指定的slave
- bin/stop-master.sh- 停止通过bin/start-master.sh脚本启动的master
- bin/stop-slaves.sh- 停止通过bin/start-slaves.sh启动的slave .
- bin/stop-all.sh- 停止上述的两种启动脚本启动的master和slave
|
注意:只能在运行Spark的master主机上执行上述脚本,而不是你的本地机器。 你可以通过conf/spark-env.sh进一步配置整个集群的环境变量。这个文件可以用conf/spark-env.sh.template当模版复制生成。然后,复制到所有的worker机器上才奏效。下面给出一些可选的参数以及含义: SPARK_MASTER_IP | 绑定一个外部IP给master. | SPARK_MASTER_PORT | 从另外一个端口启动master(默认: 7077) | SPARK_MASTER_WEBUI_PORT | Master的web UI端口 (默认: 8080) | SPARK_WORKER_PORT | 启动Spark worker 的专用端口(默认:随机) | SPARK_WORKER_DIR | 伸缩空间和日志输入的目录路径(默认: SPARK_HOME/work); | SPARK_WORKER_CORES | 作业可用的CPU内核数量(默认: 所有可用的); | SPARK_WORKER_MEMORY | 作业可使用的内存容量,默认格式1000M或者 2G (默认: 所有RAM去掉给操作系统用的1 GB);注意:每个作业自己的内存空间由SPARK_MEM决定。 | SPARK_WORKER_WEBUI_PORT | worker 的web UI 启动端口(默认: 8081) | SPARK_WORKER_INSTANCES | 没太机器上运行worker数量 (默认: 1). 当你有一个非常强大的计算机的时候和需要多个Spark worker进程的时候你可以修改这个默认值大于1 . 如果你设置了这个值。要确保SPARK_WORKER_CORE 明确限制每一个r worker的核心数, 否则每个worker 将尝试使用所有的核心 | SPARK_DAEMON_MEMORY | 分配给Spark master和 worker 守护进程的内存空间 (默认: 512m) | SPARK_DAEMON_JAVA_OPTS | Spark master 和 worker守护进程的JVM 选项(默认: none) |
注意: 启动脚本目前不支持Windows。要运行一个Spark 集群在Windows上,手动启动master 和 workers |
集群连接应用程序 在Spark 集群上运行一个应用,只需通过master的 spark://IP:PORT 链接传递到SparkContext构造器 在集群上运行交互式的Spark 命令, 运行如下命令: MASTER=spark://IP:PORT ./spark-shell 注意,如果你在一个 spark集群上运行了spark-shell脚本,spark-shell 将通过在conf/spark-env.sh下的SPARK_MASTER_IP和SPARK_MASTER_PORT自动设置MASTER . 你也可以传递一个参数-c <numCores> 来控制 spark-shell 在集群上使用的核心数量 |
资源调度 单独部署模式目前只支持FIFO作业调度策略。不过,为了允许多并发执行,你可以控制每一个应用可获得资源的最大值。默认情况下,如果系统中只运行一个应用,它就会获得所有资源。使用类似System.setProperty("spark.cores.max","10")的语句可以获得内核的数量。这个数值在初始化SparkContext之前必须设置好。 |
监控和日志 Spark单独部署模式提供了一个基于WEB的集群监视器。master和每一个worker都会有一个WEB UI来显示集群的统计信息。默认情况下,可以通过8080端口访问master的WEB UI。当然也可以通过配置文件或者命令来修改这个端口值。 另外,每个slave节点上作业运行的日志也会详细的记录到默认的SPARK_HOME/work目录下。每个作业会对应两个文件,stdout和stderr,包含了控制台上的所有的历史输出。 |
和Hadoop同时运行 Spark 作为一个独立的服务,可以和现有的Hadoop集群同时运行。 通过hdfs:// URL,Spark可以访问hadoop集群的HDFS上的数据。(比如地址可以写成hdfs://<namenode>:9000/path,从Namenode的web UI可以获得更确切的URL).或者,专门为Spark搭建一个集群,通过网络访问其他HDFS上的数据,这样肯定不如访问本地数据速度快,除非是都在同一个局域网内。(比如几台Spark机器和Hadoop集群在同一机架上)。 http://blog.csdn.net/zajin/article/details/12781097 |
转载于:https://my.oschina.net/xiaominmin/blog/1599590