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如何管理?

最新文章

  1. 机器学习实战笔记(Python实现)-02-决策树
  2. Ubuntu 部署Postgresql
  3. Android自定义相机拍照、图片裁剪的实现
  4. #-webkit-autofill##google#启用表单自动填充时,如何覆盖黄色背景
  5. NuMicro Coretex™-M0家族中哪种芯片支持UID (Unique ID)? 用户该怎么做才能对其芯片进行加密功能?
  6. puppet重申证书
  7. JavaScript高级程序设计59.pdf
  8. vmplayer中的fedora20无法进入图形界面
  9. BZOJ 4541 【HNOI2016】 矿区
  10. mysql 新增 删除用户和权限分配
  11. ASP.NET的三层架构(DAL,BLL,UI)
  12. gridcontrol第一行为0,没有选中为-999999
  13. HDU1255覆盖的面积
  14. go语言关于值类型和引用类型
  15. Ubuntu最常见的包问题
  16. 图片纯前端JS压缩的实现
  17. IP网络设计
  18. 正则表达式-使用说明Regular Expression How To (Perl, Python, etc)
  19. 【NOIP 2018】填数游戏(思考与推导)
  20. bzoj4974 字符串大师 KMP

热门文章

  1. jquery中,使用append增加元素时,该元素的绑定监听事件失效
  2. LPC2478中断控制器以及串口详解
  3. 长平狐 Cocos2d-x 的“HelloWorld” 深入分析
  4. NOIP前刷水行动
  5. 安卓handler、thread实现异步任务
  6. bzoj3932
  7. iOS 错误 之 http请求
  8. 基于监听的事件处理——Activity本身作为事件监听器
  9. javascript获取整数随机数
  10. JQuery操作元素的属性与样式及位置 复制代码