LSF中使用Magpie提交基于Spark的大数据处理作业
发布网友
发布时间:2024-10-01 17:54
我来回答
共1个回答
热心网友
时间:2024-12-14 03:26
Apache Spark
Apache Spark是一种用于大数据计算的工具,支持Java、Scala、Python和R语言。它通过集群管理系统,支持多Spark应用程序的管理和运算。
查看 Spark Quick Start 文档可以快速感受一下Spark的使用,各种博客也有丰富的入门方法可供参考。安装最新的Spark可以进行后面的实验。
LSF Spark作业
LSF是一个作业管理系统,通常称为批处理作业管理系统。批处理作业有开始和结束。从开始运行到运行结束,执行一定时间,程序的输出就是需要的处理结果。批处理作业提交到LSF中,使用集群提供的计算资源,执行程序。Spark是一种流行的处理大数据的方法,Spark应用程序和传统批处理程序类似。它们可以用来读取数据,分析处理,获取结果。因此,Spark应用作为作业提交到传统的HPC数据中心是直观的。
LSF提供了脚本代码,辅助运行基于Spark的大数据应用。这里是一个获取Spark Shell的例子。假设下载的Spark位于/nfs/spark-3.2.0-bin-hadoop3.2/,需要配置一下LSF提供的脚本,将SPARK_HOME指向这里。
提交就简单了,只需要设定需要的资源:Spark的Master运行在linux01上,Worker总共需要8个CPU核,每一台机器上4个,总共是2台计算节点。提交lsf-spark-shell.sh脚本就可以获得一个LFS集群中启动的交互式Spark环境。
Spark作业结构在LSF中大约是这样的:
后面Magpie的Spark也都是这样一个逻辑。
LSF交互式作业在提交机器上,可以直接获取执行机器上的交互式终端。从Spark的图形界面也可以看到LSF给Spark集群分配的计算资源数量。比如每一个Worker使用的Core的数量是4个:
这个Cores的数据确实对的上,不错。当然,除了Spark shell,也可以提交Spark应用。LSF也是使用相关的脚本集成。逻辑也简单,LSF为应用分配计算资源后,脚本自动启动Spark集群和Spark应用程序。包装好的脚本,是为提交Spark应用程序服务的,省了用户提交Spark作业还要环境配置和启动的Spark集群的无关事儿。
Magpie
LSF提供了Spark、Hadoop脚本。大数据处理工具选择很多,日新月异,LSF并没有提供所有的大数据计算框架。但是另一个开源项目有,那就是Magpie。Magpie项目包含一系列脚本,可以方便地将做大数据分析的应用,提交到HPC数据中心的调度器,让这些应用使用高性能计算集群的资源处理问题。项目来自于LLNL,向上支撑大数据计算,支持Spark、Hadoop、Hbase、Hive、Pig、Storm、TensorFlow、Ray等大数据处理工具。向下使用集群资源,它可以使用LSF、Slurm、Torque等调度器提供的资源。这里通过Spark在LSF上的应用作为例子,展示如何使用Magpie。
LSF中使用Magpie提交Spark作业
4.1 环境设置
Magpie依赖于mpirun,所以需要安装OpenMPI。具体参考 LSF中使用OpenMPI跨计算节点程序编译安装。
创建共享文件夹:$HOME/shared/,每一个计算节点在同一个路径共享该目录,简化Magpie的安装。
第一步,下载Magpie到共享目录:
第二步,编辑misc/magpie-download-and-setup.sh,设置
第三步,自动下载最新支持的Spark环境,并且配置好作业提交脚本。
4.2 作业配置
Magpie的LSF Spark作业提交脚本位于submission-scripts/script-lsf-mpirun/magpie.lsf-mpirun-spark。 这个脚本需要有三个方面的配置,虽然稍多,但是逻辑是清楚的。
4.2.1 Magpie参数配置
Magpie的代码路径,一般安装到NFS上,像我们这个例子。下载一次代码,多节点可以使用运行。
4.2.2 Spark参数配置
Spark配置的关键字有不少,可以根据需要自己定制:
但是需要的最小配置其实不多,我这里是两项:
4.2.3 LSF作业参数配置
默认Magpie的LSF Spark作业使用了-x,需要独占计算节点。LSF管理员需要配置独占资源队列,来接受独占资源作业。普通队列默认是不允许独占计算节点资源的。在lsb.queues中,配置队列
重新配置集群使之生效。
4.2.4 作业提交
Magpie用了#BSUB,作业脚本需要用重定向,<,方式提交。LSF通过解析文件内容,设置提交选项。
因为是默认使用Pi的计算作为示例,所以不是一个交互式作业。但是依然可以通过bpeek查看作业的输出,了解Spark集群的状况。
4.2.5 调试
Magpie的Spark环境信息都在TMP目录下,根据用户名目录,spark目录,一路走下去,就可以看到Magpie启动的Spark的集群信息。
从bpeek中的完整信息中,也可以看到Spark Master和Spark Woker的日志信息。比如我启动的Spark作业的Woker日志信息在这里:
通过这两个地方的信息,就可以完整了解为作业启动的Spark运行状况了。
5. 多写一点
Spark和MPI类似,都是跨越计算机节点的多进程处理结构。不同的是,MPI更偏向于跨进程消息交换,一般都会使用多计算节点,多进程之间协作计算。而Spark偏重于为海量数据分析提供计算框架,通过加载数据集,使用API对数据进行加工分析,使用跨计算节点的内存缓存加速计算。MPI是普遍使用的并行计算消息交换库,Spark提供更丰富的大数据分析处理工具。
虽然只是Spark的例子,但是Magpie对于不同大数据框架的支持,遵循统一的逻辑。用类似的方式就可以使用不同的工具。
Magpie这个单词不是普通的Pie,而是只喜鹊。Magpie通过打补丁的方式,修改Spark软件包中的几个脚本,支持Magpie所需要的逻辑功能。这种方法需要随着Spark的升级,而升级这些打补丁的脚本。幸运的是,修改本身是简单的,而Magpie自身依然是活跃的,Magpie支持的Spark最新版本是2021年6月23日发布的Spark 3.0.3。Spark的最新版本2021年10月13日发布的Spark 3.2。整体上讲,Magpie的支持还是相对及时的。
HPC并非大众化流行的技术,但是,它是服务于各行各业技术发展的基础。虽然没有那么多关注,Magpie目前依然是可用的,支持大数据技术比较全面的一个项目。它让新的计算方法,很方便地应用到HPC计算机集群中。
6. References