How to set up a sparklyr cluster in 5 minutes

如果你曾经想要使用Sparklyr软件包在R群集中使用Spark集群来处理大数据集,但还没有开始,因为设置Spark集群太难了,好吧......很容易。你可以使用Azure上的指南SparklyR和AZTK在大约5分钟内启动并运行 ,你甚至不需要自己安装任何东西。我将总结以下步骤,但基本上你将运行命令行实用程序以在Azure中启动集群,其中包含你已安装的所有内容,然后使用浏览器连接到RStudio Server以使用sparklyr分析数据。

image.png

步骤1:安装Azure分布式数据工程工具包 (aztk)。为此,你需要安装Python 3的Unix命令行。我在Windows上,所以我使用了Windows子系统Linux的bash shell,效果很好。(我只需要使用pip3而不是pip安装,因为默认情况下有Python 2.)相同的进程应该可以与其他Linux发行版或Mac终端一起使用。

步骤2:使用Azure订阅登录Azure门户。如果你没有Azure订阅,则可以免费注册并获得200美元的Azure积分。

步骤3:返回命令行,在secrets.yaml文件中设置身份验证。你将使用Azure门户来检索必要的密钥,如果你还没有Azure帐户,则需要创建一个Azure Batch帐户。(批处理是Azure中的HPC群集和作业管理服务。)你可以在aztk文档中找到分步详细信息。

步骤4: 在cluster.yaml文件中配置群集默认值。你可以在此处定义用于群集节点的默认VM实例大小 ; 例如, vm_size: standard_a2为你提供基本的2核节点。(你可以在命令行中覆盖它,但是在这里设置它很方便。)你还需要在这里指定一个用于设置节点图像的dockerfile,并且要与sparklyr一起使用,你需要指定一个包含R和您想要的Spark版本。我用了:

docker_repo:aztk / r-base:spark2.2.0-r3.4.1-base

这提供了Spark 2.2.0,R 3.4.1和预装的一套R软件包的图像,包括sparklyr和tidyverse。(如果需要在节点上安装其他东西,可以在这里提供自己的dockerfile。)

第5步:维护Spark集群。这很容易:只需使用这样的命令行工具:

aztk spark cluster create --id mysparklyr4 --size 4

在这种情况下,它将启动一个包含4个节点的集群,每个节点有2个核心(在vm_size上面配置选项之前。)每个节点都将预先安装R和(警告:Azure批处理的默认配额低得可笑:对我来说一开始它总共有24个核心。你可以很容易地获得你的限制,但可能需要一天时间才能获得批准。)配置集群大约需要5分钟; 等待时,你可以通过单击Azure门户中Azure批处理帐户的“池”部分中的群集名称来检查进度。

image.png

一旦准备好,你还需要为头节点提供密码,除非你在secrets.yaml文件中设置了ssh密钥。
步骤6:连接到Spark群集的头节点。通常你需要先找到IP地址,但是aztk可以通过ssh命令轻松找到它:

aztk spark cluster ssh --id mysparklyr4

(如果你在步骤5中设置了密码,你需要在这里提供一个密码。)这会在头节点上给你一个shell,但更重要的是它映射了Spark和RStudio服务器的端口,这样你就可以连接到他们http://localhost在下一步中使用URL。在完成后续步骤之前,请不要退出此shell,否则将取消端口映射。

第7步:连接到RStudio Server

在桌面上打开浏览器窗口,然后浏览到http://localhost:8787。这将在你的浏览器中打开RStudio Server。(默认登录名为rstudio / rstudio。)为了清楚起见,RStudio Server在Azure Batch的群集的头节点上运行,而不是在本地计算机上运行:上一步的端口映射是将本地端口8787重定向到远程集群。

从这里开始,你可以像往常一样使用RStudio。特别是,已经安装了sparklyr软件包,因此你可以直接连接到Spark集群,并使用RStudio Server的内置功能来处理Spark。


image.png

一个有关使用RStudio服务器的好处之一是,你可以关闭浏览器,甚至你的机器,并RStudio服务器将保持其状态,使用户可以准确地拿起你下次登录时离开。(只需使用 aztk spark cluster ssh到如有必要,首先重新应用端口映射。)

步骤8:完成后,使用该aztk spark cluster delete命令关闭群集 。(虽然您可以从Azure门户的“池”视图中删除节点,但该命令会为你执行一些额外的清理。)只要群集已配置,你将按照通常的VM速率为群集中的每个节点付费。(一种节省成本的选择是为节点使用低优先级VM,与通常的速率相比节省高达90%。)

而已!一旦你习惯它,它就快速而简单 - 最长的部分是等待集群在第5步中启动。这只是一个摘要,但完整的细节请参见Azure上的指南 SparklyR和AZTK。

你可能感兴趣的:(How to set up a sparklyr cluster in 5 minutes)