Apache spark 如何验证DSE Spark Shell是否分布在集群中
如果外壳已连接到群集或仅在本地模式下运行,是否可以从Spark外壳内部验证哪些节点?我希望用它来调查以下问题: 我已经使用DSE设置了一个小的3节点Cassandra Analytics集群。我可以登录到3台服务器中的任何一台,运行Apache spark 如何验证DSE Spark Shell是否分布在集群中,apache-spark,datastax-enterprise,Apache Spark,Datastax Enterprise,如果外壳已连接到群集或仅在本地模式下运行,是否可以从Spark外壳内部验证哪些节点?我希望用它来调查以下问题: 我已经使用DSE设置了一个小的3节点Cassandra Analytics集群。我可以登录到3台服务器中的任何一台,运行dse spark并启动spark shell。我还通过运行dsetool sparkmaster验证了所有3台服务器都配置了Spark master 但是,当我使用Spark shell运行任何任务时,它似乎只在本地运行。我运行了一个小测试命令: val rdd =
dse spark
并启动spark shell。我还通过运行dsetool sparkmaster
验证了所有3台服务器都配置了Spark master
但是,当我使用Spark shell运行任何任务时,它似乎只在本地运行。我运行了一个小测试命令:
val rdd = sc.cassandraTable("test", "test_table")
rdd.count
当我查看Spark Master网页时,我看到只有一台服务器正在运行该作业
我怀疑当我运行
dse spark
时,它正在本地模式下运行shell。我查看了如何为Spark 0.9.1 shell指定一个主控程序,即使我使用master=dse Spark
(从中),它仍然只在本地模式下运行。一旦您启动了一个包含3个节点的dse 4.5.1集群,所有节点都设置为Analytics Spark模式,下面是一个演练
集群启动并运行后,您可以使用命令dsetool sparkmaster
确定哪个节点是Spark主机。此命令仅打印当前主控形状;它不会影响哪个节点是主节点,也不会启动/停止它
将web浏览器指向给定IP地址和端口7080处的Spark Master web UI。您应该看到3个worker处于活动状态,并且没有运行的应用程序。(如果以前的Spark作业发生在此群集上,则可能会有一些工作人员死亡或已完成的应用程序。)
现在在一个节点上使用dse Spark
打开Spark外壳。如果您检查Spark Master web UI,您应该会看到一个名为“Spark shell”的正在运行的应用程序。它可能会显示分配了1个内核(默认值)
如果单击应用程序ID链接(“app-2014…”),您将看到该应用程序的详细信息,包括一名执行者(工作人员)。您向Spark shell发出的任何命令都将在此worker上运行
默认配置是将Spark master限制为仅允许每个应用程序使用1个核心,因此工作将仅分配给单个节点
要更改此设置,请登录Spark主节点并sudo编辑文件/etc/dse/Spark/Spark env.sh
。找到设置SPARK\u MASTER\u OPTS的行,然后删除部分-Dspark.deploy.defaultCores=1
。然后在此节点上重新启动DSE(sudo service DSE restart
)
一旦出现,检查Spark master web UI,并使用Spark shell重复测试。您应该看到它被分配了更多的内核,它执行的任何作业都将发生在多个节点上
在生产环境中,您需要更仔细地设置核心数量,以便单个作业不会占用所有资源。一旦启动了一个包含3个节点的DSE 4.5.1群集,这里有一个演练,所有节点都设置为Analytics Spark模式 集群启动并运行后,您可以使用命令
dsetool sparkmaster
确定哪个节点是Spark主机。此命令仅打印当前主控形状;它不会影响哪个节点是主节点,也不会启动/停止它
将web浏览器指向给定IP地址和端口7080处的Spark Master web UI。您应该看到3个worker处于活动状态,并且没有运行的应用程序。(如果以前的Spark作业发生在此群集上,则可能会有一些工作人员死亡或已完成的应用程序。)
现在在一个节点上使用dse Spark
打开Spark外壳。如果您检查Spark Master web UI,您应该会看到一个名为“Spark shell”的正在运行的应用程序。它可能会显示分配了1个内核(默认值)
如果单击应用程序ID链接(“app-2014…”),您将看到该应用程序的详细信息,包括一名执行者(工作人员)。您向Spark shell发出的任何命令都将在此worker上运行
默认配置是将Spark master限制为仅允许每个应用程序使用1个核心,因此工作将仅分配给单个节点
要更改此设置,请登录Spark主节点并sudo编辑文件/etc/dse/Spark/Spark env.sh
。找到设置SPARK\u MASTER\u OPTS的行,然后删除部分-Dspark.deploy.defaultCores=1
。然后在此节点上重新启动DSE(sudo service DSE restart
)
一旦出现,检查Spark master web UI,并使用Spark shell重复测试。您应该看到它被分配了更多的内核,它执行的任何作业都将发生在多个节点上
在生产环境中,您可能希望更仔细地设置核心数量,以便单个作业不会占用所有资源。谢谢您,但是,我遇到的另一个问题是,我的任何节点上都没有
/etc/dse/spark/
目录。Spark已安装并正在运行,我可以在任何节点上运行dse Spark
,它将启动,母版页也可以查看。因此,似乎所有内容都已正确安装(我使用了DSE 4.5.1文本安装程序),但没有spark env.sh
。安装位置取决于您的安装方法以及DSE是否作为服务安装。如果您没有/etc/dse,那么您很可能会在/usr/share/dse/resources/spark下找到这些文件,但它可能位于其他位置,具体取决于您安装的位置。您可以查看此配置页面的示例:谢谢,但是,我似乎还有另一个问题,即在我的任何节点上都没有/etc/dse/spark/
目录。Spark已安装并正在运行,我可以在任何节点上运行dse Spark
,它将启动,母版页也可以查看。因此,似乎所有内容都安装正确(我使用了DSE 4.5.1文本安装程序),但没有spark env.sh