《Spark Cookbook 中文版》一1.5 在集群上以独立模式部署Spark

1.5 在集群上以独立模式部署Spark

在分布式环境中的计算资源需要管理,使得资源利用率高,每个作业都有公平运行的机会。Spark有一个便利的被称为独立模式的自带集群管理器。Spark也支持使用YARN或者Mesos做为集群管理器。

选择集群处理器时,主要需要考虑延迟以及其他架构,例如MapReduce,是否共享同样的计算资源池。如果你的集群运行着旧有的MapReduce作业,并且这些作业不能转变为Spark作业,那么使用YARN作为集群管理器是个好主意。Mesos是一种新兴的、方便跨平台管理作业的、与Spark非常兼容的数据中心操作系统。

如果Spark是你的集群的唯一框架,那么独立模式就足够好用了。随着Spark技术的发展,你会看到越来越多的Spark独立模式被用于处理所有的大数据计算需求。例如,目前有些作业可能在使用Apache Mahout,因为MLlib目前没有作业所需要的特定的机器学习库。只要MLlib包含了这些库,这些特定的作业就可以移动到Spark了。

1.5.1 准备工作

让我们以由6个节点组成的一个集群的设置为例,包含一个主节点和5个从节点(在你的实际集群中以真实的名字替换它们)。

主节点

m1.zettabytes.com

从节点

s1.zettabytes.com
s2.zettabytes.com
s3.zettabytes.com
s4.zettabytes.com
s5.zettabytes.com

1.5.2 具体步骤

1.因为Spark的独立模式是默认的,所以你需要做的就是在所有主节点和从节点上安装Spark二进制文件。把/opt/infoobjects/spark/sbin放到每个节点的路径中。

$ echo "export PATH=$PATH:/opt/infoobjects/spark/sbin">> /home/
   hduser/.bashrc

2.开启独立主服务器(先SSH到主节点)。

hduser@m1.zettabytes.com~] start-master.sh

从节点连接主节点的默认端口是7077,8088是它的网页界面端口。

3.请SSH到主节点去开启从节点,主从节点之间的细粒度配置参数如表1-3所示。

hduser@s1.zettabytes.com~] spark-class org.apache.spark.deploy.
   worker.Worker spark://m1.zettabytes.com:7077

4.不仅可以手动启动主从节点的守护程度,还可以使用集群启动脚本来完成。

5.首先,在主节点创建conf/slaves文件夹,并加入每一个从节点的主机名(本例有5个从节点,在实际操作中使用你自己从节点的DNS替换它们)。

hduser@m1.zettabytes.com~] echo "s1.zettabytes.com" >> conf/slaves
   hduser@m1.zettabytes.com~] echo "s2.zettabytes.com" >> conf/slaves
   hduser@m1.zettabytes.com~] echo "s3.zettabytes.com" >> conf/slaves
   hduser@m1.zettabytes.com~] echo "s4.zettabytes.com" >> conf/slaves
   hduser@m1.zettabytes.com~] echo "s5.zettabytes.com" >> conf/slaves

一旦从节点设置好了,你就可以使用如下脚本开启或停止集群,如表1-4所示。

6.使用Scala代码将应用连接到集群。

val sparkContext = new SparkContext(new SparkConf().
   setMaster("spark://m1.zettabytes.com:7077")

7.通过Spark shell连接到集群。

$ spark-shell --master spark://master:7077

1.5.3 工作原理

在独立模式下,Spark与Hadoop、MapReduce以及YARN类似,遵循主从架构。计算主程序被称为Spark master,它运行在主节点上。通过使用ZooKeeper,Spark master可以具有高可用性。如果需要的话,你可以增加更多的备用主节点。

计算从程序又被称为worker,它运行在每一个从节点上,worker程序执行如下操作。

报告从节点的可用计算资源给主节点,例如内核数、内存以及其他。
响应Spark master的执行要求,派生执行程序。
重启死掉的执行程序。
每个从节点机器的每个应用程序最多只有一个执行程序。

Spark master和worker都非常轻巧。通常情况下,500 MB到1 GB的内存分配就足够了。可以通过设置conf/spark-env.sh文件里的SPARK_DAEMON_MEMORY参数修改这个值。例如,如下配置将主节点和从节点的计算程序的内存设置为1 GB。确保使用超级用户(sudo)运行:

$ echo "export SPARK_DAEMON_MEMORY=1g" >> /opt/infoobjects/spark/conf/
spark-env.sh

默认情况下,每个从节点上运行一个worker实例。有时候,你的几台机器可能比其他的都强大,在这种情况下,你可以通过以下配置派生多个作业到该机器上(特指那些强大的机器):

$ echo "export SPARK_WORKER_INSTANCES=2" >> /opt/infoobjects/spark/conf/
spark-env.sh

Spark worker在默认情况下使用从节点机器的所有内核执行程序。如果你想要限制worker使用的内核数的话,可以通过如下配置设置该参数(例如12):

$ echo "export SPARK_WORKER_CORES=12" >> /opt/infoobjects/spark/conf/
spark-env.sh

Spark worker在默认情况下使用所有可用的内存(对执行程序来说是1 GB)。请注意,你不能给每一个具体的执行程序分配内存(你可以通过驱动配置对此进行控制)。想要分配所有执行程序的总内存数,可以执行如下设置:

$ echo "export SPARK_WORKER_MEMORY=24g" >> /opt/infoobjects/spark/conf/
spark-env.sh

在驱动级别,你可以进行如下设置。

要通过集群指定特定应用的最大CPU内核数,可以通过设置Spark submit或者Spark shell中的spark.cores.max配置。

$ spark-submit --confspark.cores.max=12

若要指定每个执行程序应分配的内存数(建议最小为8 GB),可以通过设置Spark submit或者Spark shell中的spark.executor.memory配置。

$ spark-submit --confspark.executor.memory=8g

图1-9描述了Spark集群的高层架构。

1.5.4 参考资料

http://spark.apache.org/docs/latest/spark-standalone.html找到更多配置选项。
时间: 2024-08-31 11:01:01

《Spark Cookbook 中文版》一1.5 在集群上以独立模式部署Spark的相关文章

《Spark Cookbook 中文版》一导读

前 言 Spark Cookbook 中文版 随着Hadoop这个大数据平台的成功,用户的期望也水涨船高,他们既希望解决不同分析问题的功能提高,又希望减少延迟.由此,各类工具应运而生.Apache Spark这个可以解决所有问题的单一平台也出现在了Hadoop的大舞台上."Spark一出,谁与争锋",它终结了需要使用多种工具来完成复杂挑战和学习曲线的局面.通过使用内存进行持久化存储和计算,Apache Spark避免了磁盘上的中间存储过程并将速度提高了100倍,并且提供了一个单一平台用

《Spark Cookbook 中文版》一第1章 开始使用Apache Spark

第1章 开始使用Apache Spark Spark Cookbook 中文版在本章中,我们将介绍安装和配置Spark,包括如下内容. 通过二进制可执行文件安装Spark. 通过Maven构建Spark源码. 在Amazon EC2上安装Spark. 在集群上以独立模式部署Spark. 在集群上使用Mesos部署Spark. 在集群上使用YARN部署Spark. 使用Tachyon作为堆外存储层.

《Spark Cookbook 中文版》一1.6 在集群上使用Mesos部署Spark

1.6 在集群上使用Mesos部署Spark Mesos正慢慢崛起为跨数据中心管理所有计算资源的数据中心管理系统.Mesos可以运行在任意一台Linux操作系统的机器上.Mesos与Linux内核有着相同的配置原则.让我们看看如何安装Mesos. 具体步骤 Mesosphere提供Mesos的二进制安装包.最新的Mesos分布式安装包可以通过Mesosphere库按照如下步骤安装. 1.在Ubuntu操作系统的可靠版本上执行Mesos. $ sudo apt-key adv --keyserve

《Spark Cookbook 中文版》一1.7 在集群上使用YARN部署

1.7 在集群上使用YARN部署 另一种资源协调者(YARN)是基于HDFS这个Hadoop存储层的Hadoop计算框架. YARN遵循主从架构.主守护进程被称为资源管理器(ResourceManager),从守护进程被称为节点管理器(NodeManager).除此之外,生命周期管理由ApplicationMaster负责,它可以被派生到任何从节点上并可以生存一个应用的生命周期时长. 如果Spark运行在YARN上的话,资源管理器充当Spark master,节点管理器充当执行节点. 如果Spa

《循序渐进学Spark》一1.2 在Linux集群上部署Spark

1.2 在Linux集群上部署Spark Spark安装部署比较简单,用户可以登录其官方网站(http://spark.apache.org/downloads.html)下载Spark最新版本或历史版本,也可以查阅Spark相关文档作为参考.本书开始写作时,Spark刚刚发布1.5.0版,因此本章所述的环境搭建均以Spark 1.5.0版为例. Spark使用了Hadoop的HDFS作为持久化存储层,因此安装Spark时,应先安装与Spark版本相兼容的Hadoop. 本节以阿里云Linux主

Spark学习之在集群上运行Spark(6)

Spark学习之在集群上运行Spark(6) 1. Spark的一个优点在于可以通过增加机器数量并使用集群模式运行,来扩展程序的计算能力. 2. Spark既能适用于专用集群,也可以适用于共享的云计算环境. 3. Spark在分布式环境中的架构: Created with Raphaël 2.1.0我的操作集群管理器Mesos.YARN.或独立集群管理器N个集群工作节点(执行器进程) Spark集群采用的是主/从结构,驱动器(Driver)节点和所有执行器(executor)节点一起被称为一个S

Spark应用(app jar)发布到Hadoop集群的过程

记录了Spark,Hadoop集群的开启,关闭,以及Spark应用提交到Hadoop集群的过程,通过web端监控运行状态. 1.绝对路径开启集群 (每次集群重启,默认配置的hadoop集群中tmp文件被清空所以需要重新format) 我的集群安装位置是/opt/hadoop下,可以根据自己路径修改. /opt/hadoop/bin/hdfs namenode -format /opt/hadoop/sbin/start-all.sh /opt/spark/sbin/start-all.sh 使用

Spark教程-构建Spark集群-配置Hadoop单机模式并运行Wordcount(2)

接上一篇:http://www.aliyun.com/zixun/aggregation/13383.html">Spark教程-构建Spark集群-配置Hadoop单机模式并运行Wordcount(1) 2.安装rsync 我们的Ubuntu 12.10版本默认安装了rsync,我们可以通过以下命令来安装或者更新rsync 3.安装hadoop,家林把下载下来的最新稳定版本的hadoop保存在电脑本地的以下位置: 创建/usr/local/hadoop目录并把下载下来的Hadoop解压/

【Spark Summit EU 2016】规模不断扩展的服务器集群上Spark的性能表征

本讲义出自Ahsan Javed Awan在Spark Summit EU 2016上的演讲,主要介绍了在服务器集群的规模不断扩展的状态下,如何获取运行于服务器集群上的Spark的性能指标并对于性能进行优化,并分享了为了使得架构设计能够提升节点级别的性能表现,该如何确定衡量指标,以及如何设计可扩展的架构.