IBM LSF 是一个工作负载管理平台,它基于策略管理分布式的系统资源。
Spark 是一个基于内存的并行计算框架,计算能力比较强。
Spark 与 LSF结合起来,我觉得是一个不错的结合。
详细原理参考: https://www.ibm.com/developerworks/cn/analytics/library/ba-cn-spark-ibm-lsf-integration/index.html
安装:
1. 安装Spark(我的是2.4.0),在网上下载最新Spark,安装到集群中,我配置了(slaves,不确定不配做这个是否可以)
注意: 不要启动spark服务,因为master和slave是由LSF分配之后,由LSF启动的.
2. 安装LSF(参照文档)
3. 修改LSF 中的 lsf-spark-shell.sh, lsf-spark-submit.sh, lsf-stop-spark.sh中的 SPARK_HOME 与 SPARK_MASTER_PORT
4. 启动LSF服务
测试:
1. 编写SimpleApp.scala
扫描二维码关注公众号,回复:
5264950 查看本文章
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
object SimpleApp {
def main(args: Array[String]) {
val dataFile = args(0) // the filename is specified by the first command argument
val conf = new SparkConf().setAppName("Simple Application")
val sc = new SparkContext(conf)
val logData = sc.textFile(dataFile, 2).cache()
val numAs = logData.filter(line => line.contains("a")).count()
val numBs = logData.filter(line => line.contains("b")).count()
println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
}
}
2. 编写build.sbt 文件(sbt构建用的)
name := "Simple Project"
version := "1.0"
scalaVersion := "2.11.6"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.4.0"
sbt 构建scala(没有安装的,下载安装一下):
mkdir buildhome/src/main/scala
cp SimpleApp.scala buildhome/src/main/scala/
cp build.sbt buildhome/
cd buildhome
sbt package
sbt构建过程中会下一些包,最终build出来的jar的包在target下生成, 我build出来simple-project_2.11-1.0.jar: .
LSF 测试:
准备一个文件myfile.txt,里面随便写,为SimpleApp准备的参数
bsub -n 3 -R "span[ptile=1]" -I lsf-spark-submit.sh --class "SimpleApp" /home/test/simple-project_2.11-1.0.jar /home/test/myfile.txt