livy简介

livy简介

什么是livy

Livy通过提供REST服务来简化与Spark集群的交互。它可以通过job或者代码片段的方式来提交Spark任务,并同步或者异步地获得任务的结果,以及管理spark context,上述功能通过简单的REST接口或者RPC服务来实现。livy也可以简化Spark与一些应用程序之间的交互,使得Spark可以用于一些web应用(比如Hue)。更多的功能包括:

  • 拥有长期运行的Spark Contexts供多用户提交各种的Spark job;
  • 不同的任务和用户可以共享cached RDD或者DataFrames;
  • 多个SC可以按计划同时运行,为了使得SC具有更好的容错性和并发性,可以将SC运行在yarn/Mesos等集群中;
  • 可以通过java/scala客户端的API来提交预编译好的jar包或代码片段;
  • 支持一定的安全机制;
  • Apache-licensed 100%开源;

与ReadMe中的文档结合再补充几条:

  • 支持Scala,Python,R Shell的交互;
  • 支持 Scala,Java,Python的批量提交;
  • 不需要你对你自己的代码增加任何改变;

产生背景

Apache Spark作为当前最为流行的开源大数据计算框架,广泛应用于数据处理和分析应用,它提供了两种方式来处理数据:一是交互式处理,比如用户使用spark-shell或是pyspark脚本启动Spark应用程序;二是批处理,批处理的程序逻辑由用户实现并编译打包成jar包,spark-submit脚本启动Spark应用程序来执行用户所编写的逻辑,与交互式处理不同的是批处理程序在执行过程中用户没有与Spark进行任何的交互。 两种处理交互方式虽然看起来完全不一样,但它们都需要用户登录到Gateway节点上通过脚本启动Spark进程。这样的方式会有什么问题吗?

  • 首先将资源的使用和故障发生的可能性集中到了这些Gateway节点。由于所有的Spark进程都是在Gateway节点上启动的,这势必会增加Gateway节点的资源使用负担和故障发生的可能性,同时Gateway节点的故障会带来单点问题,造成Spark程序的失败。
  • 其次难以管理、审计以及与已有的权限管理工具的集成。由于Spark采用脚本的方式启动应用程序,因此相比于WEB方式少了许多管理、审计的便利性,同时也难以与已有的工具结合,如Apache Knox等。
  • 同时也将Gateway节点上的部署细节以及配置不可避免地暴露给了登陆用户。 为了避免上述的这些问题,同时提供原生Spark已有的处理交互方式,并且为Spark带来其所缺乏的企业级管理、部署和审计功能,所以产生了livy这一工具

Livy的基本架构

livy的架构

Livy是一个典型的REST服务架构,它一方面接受并解析用户的REST请求,转换成相应的操作;另一方面它管理着用户所启动的所有的集群 sessions。具体的架构可见上图。

用户可以以REST请求的方式通过Livy申请一个新的集群资源,Livy将每一个启动的集群称之为一个会话(session),根据处理交互方式的不同,Livy将会话分成了两种类型:

交互式会话(interactive session)。这与Spark中的交互式处理相同,交互式会话在其启动后可以接收用户所提交的代码片段,在远端的Spark集群上编译并执行。 批处理会话(batch session)。用户可以通过Livy以批处理的方式启动Spark应用,这样的一个方式在Livy中称之为批处理会话,这与Spark中的批处理是相同的。 可以看到,Livy所提供的核心功能与原生Spark是相同的,它提供了两种不同的会话类型来代替Spark中两类不同的处理交互方式。接下来我们具体来了解一下这两种类型的会话。

  • 使用交互式会话与使用Spark所自带的spark-shell,pyspark或sparkR类似,它们都是由用户提交代码片段给REPL,由REPL来编译成Spark作业并执行。主要不同点是spark-shell会在当前节点上启动REPL来接收用户的输入,而Livy交互式会话则是在远端的Spark集群中启动REPL,所有的代码、数据都需要通过网络来传输

  • 批处理会话:在Spark应用中有一大类应用是批处理应用,这些应用在运行期间无须与用户进行交互,最典型的就是Spark Streaming流式应用。用户会将业务逻辑编译打包成jar包,并通过spark-submit启动Spark集群来执行业务逻辑

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值