用过Spark的朋友对Livy一定不陌生,Livy是Apache Spark下的一个REST服务,通过Livy,你只要可以发送Http请求,就可以提交Spark任务。Livy在很多Spark数据平台上都作为一个提交任务的重要工具,你可以不知道Livy是怎么工作的,但是你不能不知道Livy是如何使用的。这里我们重点介绍下如何使用Livy的REST API来提交Spark任务,当然首先你得对Spark submit有一定的了解,不然就先移步Spark submit wiki。
交互式的任务提交大家应该都不陌生,debug模式下我们一般都会用到这种方式来测试验证你的脚本逻辑。通俗点解释就是每次发送一条命令到Spark,就会就会收到Spark执行完这条命令的结果。在Livy中,一个交互式的spark任务,称作session。发送http post请求即可完成。
Livy交互式提交的参数:
参数类型描述kindenumsession的类别,包括:spark, pyspark, sparkr or sqlproxyUserstringsession 管理者/拥有者jarsstring listsession 中需要的jar包pyFilesstring listsession中的python文件filesstring listsession中依赖的文件driverMemorystringdriver的memory,等同于–driver-memory/spark.driver.memorydriverCoresintdriver的core,等同于spark.driver.coresexecutorMemorystringexecutor的memory,等同于–executor-memory/spark.executor.memoryexecutorCoresintexecutor的core,等同于spark.executor.coresnumExecutorsintexecutor个数archivesstring list压缩文件queuestringspark on yarn环境下,任务提交的yarn queuenamestringsession名字confMap<key,value>spark的configurationheartbeatTimeoutInSecondintsession超时时间,秒批处理模式的任务提交,经常是用于可以上生产环境的任务提交。Spark和Livy都管这种类型叫做Batch任务。 同样的,Livy也为Batch任务提供了REST API,只需要通过发送http post请求就可以提交你的Batch任务。 Livy Batch任务提交参数:
参数类型描述filepath(required)任务的可执行文件路径proxyUserstring任务管理者/拥有者classNamestring任务的Main class(Java/Spark)argsstring list命令参数pyFilesstring list任务中的python文件filesstring list任务依赖的文件driverMemorystringdriver的memory,等同于–driver-memory/spark.driver.memorydriverCoresintdriver的core,等同于spark.driver.coresexecutorMemorystringexecutor的memory,等同于–executor-memory/spark.executor.memoryexecutorCoresintexecutor的core,等同于spark.executor.coresnumExecutorsintexecutor个数archivesstring list压缩文件queuestringspark on yarn环境下,任务提交的yarn queuenamestringsession名字confMap<key,value>spark的configurationLivy的使用其实不仅限于以上提到的REST API,以上主要是介绍了如何提交,Livy还提供了丰富的REST API用于管理和监控你的任务。当然Livy也提供了丰富的API(Programmatic/Java/Scala)。感兴趣的可以直接阅读Livy Apache官网。