Livy原理详解
Livy的概述(引自社区)
Livy(当前是alpha版本)是一个提供rest接口和spark集群交互的服务。它可以提交spark job或者spark一段代码,同步或者异步的返回结果;也提供sparkcontext的管理,通过restfull接口或RPC客户端库。Livy也简化了与spark与应用服务的交互,这允许通过web/mobile与spark的使用交互。其他特效还包含:
1 长时间运行的SparkContext,允许多个spark job和多个client使用。
2 在多个spark job和客户端之间共享RDD和Dataframe
3 多个sparkcontext可以简单的管理,并运行在集群中而不是Livy Server,以此获取更好的容错性和并行度。
4 作业可以通过重新编译的jar、片段代码、或Java/Scala的客户端API提交。
5 通过认证保
Livy结合了spark job server和Zeppelin的优点,并解决了spark job server和Zeppelin的缺点。
1. 支持jar和snippet code
2. 支持SparkContext和Job的管理
3. 支持不同SparkContext运行在不同进程,同一个进程只能运行一个SparkContext
4. 支持Yarn cluster模式
5. 提供restful接口,暴露SparkConte
(图片摘自livy社区)
livy与spark jobserver和Zeppelin的对比
livy的API介绍文档
https://github.com/cloudera/livy#prerequisites
livy的三种提交任务方式
(1) 使用Using the Programmatic API,通过程序接口提交作业。
a) 需要继承com.cloudera.livy.Job接口编程,通过LivyClient提交
(2) 使用RestAPI的session接口提交代码段方式运行
(3) 使用RestAPI的batch接口提交jar包方式运行
Livy执行作业流程
(图片摘自livy社区)
a.live-server启动,启动BatchSessionManager, InteractiveSessionManager。
b.初始化WebServer,通过ServletContextListener启动InteractiveSessionServlet和BatchSessionServlet。
c.通过http调用SessionServlet的createSession接口,创建session并注册到sessionManager,InteractiveSession和BatchSession会创建SparkYarnApp,SparkYarnApp负责启动Spark作业,并维护yarnclient,获取作业信息、状态或kill作业。
d. BatchSession是以jar包的方式提交作业,运行结束后session作业就结束。
e. InteractiveSession会启动com.cloudera.livy.repl.ReplDriver,ReplDriver继承RSCDriver,初始化期间会通过RPC连接到livy-server,并启动RpcServer;其次会初始化Interpreter(支持PythonInterpreter,SparkInterpreter,SparkRInterpreter)。接收来自livy-server,并启动RpcServer;其次会初始化Interpreter(支持PythonInterpreter,SparkInterpreter,SparkRInterpreter)。接收来自livy-server的信息(代码),然后通过Interpreter执行,livy-server通过RPC请求作业结果。
还存在什么问题
1. 不支持提交SQL https://issues.cloudera.org/browse/LIVY-19
2. session,app信息都维护在livy-server,livy-server挂掉信息丢失,需要HA。
3. livy-server的性能如何,能并行多少session。
4. 多个livy-server如何管理?
最新文章
- 机器学习实战笔记(Python实现)-02-决策树
- Ubuntu 部署Postgresql
- Android自定义相机拍照、图片裁剪的实现
- #-webkit-autofill##google#启用表单自动填充时,如何覆盖黄色背景
- NuMicro Coretex™-M0家族中哪种芯片支持UID (Unique ID)? 用户该怎么做才能对其芯片进行加密功能?
- puppet重申证书
- JavaScript高级程序设计59.pdf
- vmplayer中的fedora20无法进入图形界面
- BZOJ 4541 【HNOI2016】 矿区
- mysql 新增 删除用户和权限分配
- ASP.NET的三层架构(DAL,BLL,UI)
- gridcontrol第一行为0,没有选中为-999999
- HDU1255覆盖的面积
- go语言关于值类型和引用类型
- Ubuntu最常见的包问题
- 图片纯前端JS压缩的实现
- IP网络设计
- 正则表达式-使用说明Regular Expression How To (Perl, Python, etc)
- 【NOIP 2018】填数游戏(思考与推导)
- bzoj4974 字符串大师 KMP