2014-09-23 36 views
0

是否可以从Spark shell中验证shell是连接到集群还是仅以本地模式运行?我希望使用它来调查以下问题:如何验证DSE Spark Shell是否正在集群中分布

我已经使用DSE设置了一个小型3节点Cassandra Analytics群集。我可以登录到3台服务器中的任何一台,运行dse spark并调出Spark shell。我还验证了所有3台服务器都通过运行dsetool sparkmaster配置了Spark主服务器。

但是,当我使用Spark shell运行任何任务时,它似乎只在本地运行。我运行了一个小测试命令:

val rdd = sc.cassandraTable("test", "test_table") 
rdd.count 

当我检查Spark Master网页时,我看到只有一台服务器正在运行该作业。

我怀疑当我运行dse spark它以本地模式运行shell。我查阅了如何为Spark 0.9.1 shell指定一个主设备,甚至当我使用MASTER=<sparkmaster> dse spark(来自Programming Guide)时,它仍然只在本地模式下运行。

回答

4

这是一个演练,一旦您启动了具有3个节点的DSE 4.5.1群集,所有节点都设置为Analytics Spark模式。

集群启动并运行后,您可以通过命令dsetool sparkmaster确定哪个节点是Spark Master。这个命令只是打印当前的主文件;它不影响哪个节点是主节点,并且不会启动/停止它。

将Web浏览器指向给定IP地址和端口7080的Spark Master Web UI。您应该看到3名工作人员处于ALIVE状态,并且没有正在运行的应用程序。 (如果以前的Spark作业发生在此群集上,您可能会有一些DEAD工作者或已完成的应用程序。)

现在在一个节点上调出带有dse spark的Spark shell。如果您检查Spark Master Web UI,您应该看到一个名为“Spark shell”的正在运行的应用程序。它可能会显示1个核心分配(默认)。

如果您点击应用程序ID链接(“app-2014 ...”),您会看到该应用程序的详细信息,包括一个执行程序(工作人员)。你给Spark壳的任何命令都会在这个worker上运行。

默认配置限制Spark主机只允许每个应用程序使用1个内核,因此只能将工作分配给单个节点。

要更改此设置,请登录到Spark主节点并sudo编辑文件/etc/dse/spark/spark-env.sh。找到设置SPARK_MASTER_OPTS的行并删除-Dspark.deploy.defaultCores=1部分。然后在此节点上重新启动DSE(sudo service dse restart)。

一旦出现,请检查Spark主Web UI并使用Spark shell重复测试。您应该看到它已经分配了更多的内核,并且它执行的任何作业都将发生在多个节点上。

在生产环境中,您希望更仔细地设置核心数量,以便单个作业不占用所有资源。

+0

然而,谢谢你,我似乎还有另外一个问题,那就是我的任何节点上都没有'/ etc/dse/spark /'目录。 Spark已经安装并正在运行,我可以在任何节点上运行'dse spark'并且它会启动,同样可以看到母版页。所以一切似乎都安装正确(我使用DSE 4.5.1文本安装程序),但没有'spark-env.sh'。 – egerhard 2014-09-24 21:01:12

+2

该位置将取决于您的安装方法以及是否将DSE安装为服务。如果您没有/ etc/dse,那么很可能您会在/ usr/share/dse/resources/spark下找到这些文件,但它可能位于其他位置,具体取决于您安装的位置。你可以看到这个配置页面的例子:http://www.datastax.com/documentation/datastax_enterprise/4.5/datastax_enterprise/spark/sparkConf.html – BrianC 2014-09-24 22:10:19

相关问题