浅谈Spark Livy

浅谈Spark LivySparkLivy 什么是 LivyLivy 的特点 Livy 的运作流程阐述 Livy 的安装 启动 访问 Livy 的使用 1 什么是 Livylivy 是 cloudera 开发的通过 REST 来连接 管理 spark 的

大家好,欢迎来到IT知识分享网。

Spark Livy
  1. 什么是Livy
  2. Livy的特点
  3. Livy的运作流程阐述
  4. Livy的安装、启动、访问
  5. Livy的使用
1. 什么是Livy

livy是cloudera开发的通过REST来连接、管理spark的解决方案。
涉及到一些角色:
①客户端:browser,app终端设备
②Livy Server
③Livy Server获得用户的请求后,让后将job提交给spark 集群去执行。

REST即表述性状态传递(英文:Representational State Transfer)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
目前在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务进行图书查找;雅虎提供的Web服务也是REST风格的。

2. Livy的特点

①支持多种客户端
web,app

② 支持诸如java,scala以及python等语言编写的job提交给远程的spark集群去执行

③代码可以不需要进行任何的变更
仅仅是将job提交给远程的spark集群去执行的方式发生了变更。

3. Livy的安装

步骤:
1,下载安装包
2,上传到虚拟机上
3,解压,重命名,配置环境变量,source生效
4,修改配置文件:

 ①在livy-env中添加 export SPARK_HOME=Spark安装目录 export HADOOP_CONF_DIR=Hadoop配置目录 ②livy.conf中可以进行一些配置 # 配置Livy会话所使用的Spark集群运行模式 livy.spark.master = yarn # 配置Livy会话所使用的Spark集群部署模式 livy.spark.deploy-mode = cluster //默认使用hiveContext livy.repl.enable-hive-context = true //开启用户代理 livy.impersonation.enabled = true //设置session空闲过期时间 livy.server.session.timeout = 1h 
4. Livy的启动、访问

~>启动:(前提:启动zookeeper集群,hadoop集群)
livy-server start

注意:启动成功之后,可以查看到一个名为LivyServer的进程。

~>访问
http://janson01:8998/ui

注意:若是能查看到界面上显示“No Sessions or Batches have been created yet.”,证明livy server已经正常启动了。

5. Livy的使用

1、通过使用livy-session,可以通过rest来执行spark-shell,用于处理交互式的请求。
①session的创建
语法:curl -XPOST ‘http://LivyServer对应的ip地址的别名:8998/sessions’ -H “Content-Type:application/json” –data ‘{“kind”:类型名}’

需求:使用livy-session方式,创建一个名为spark的session。

curl -XPOST 'http://JANSON01:8998/sessions' -H "Content-Type:application/json" --data '{"kind":"spark"}' 

命令行客户端成功之后,效果如下:

[root@JANSON01 conf]# curl -XPOST 'http://JANSON01:8998/sessions' -H "Content- Type:application/json" --data '{"kind":"spark"}' {"id":0,"appId":null,"owner":null,"proxyUser":null,"state":"starting","kind":"spark","appInfo": {"driverLogUrl":null,"sparkUiUrl":null},"log":["stdout: ","\nstderr: ","\nYARN Diagnostics: "]} [root@JANSON01 conf]# 

②session查看
http://janson01:8998/ui

③使用livy session,计算hdfs上根目录下的文件hello.txt中每个单词出现的总次数,并将结果落地到hdfs指定的目录下
语法:

curl -XPOST http://JANSON01:8998/sessions/session的唯一标识符/statements -H 'Content- Type: application/json' -d '{"code":"待计算的代码片段"}' 

在Linux终端下键入执行的指令:

curl -XPOST 'http://JANSON01:8998/sessions/0/statements' -H 'Content- Type:application/json' -d '{"code":"sc.textFile(\"hdfs://ns1/hello.txt\").flatMap(_.split(\" \")).map((_,1)).reduceByKey(_+_).saveAsTextFile(\"hdfs://ns1/livy-session-example2\")"}' 

注意: 待到livy server的状态转换成idle的时候,向其发送请求,才会去执行。执行时,其状态转变成busy;执行完毕之后,状态又会变成idle。
④删除session

 [root@JANSON01 conf]# curl -XDELETE http://JANSON01:8998/sessions/0 {"msg":"deleted"}[root@JANSON01 conf]# 

2、通过使用livy-batches,可以通过rest来执行spark-submit,用于处理非交互式的请求。
①使用livy batches,运行官方案例之求圆周率PI的值。
Linux命令行下提交如下语句:
前提: 需要将计算(jar包)上传到hdfs指定的目录下。

 curl -XPOST -H "Content-Type: application/json" http://JANSON01:8998/batches --data '{ "conf": {"spark.master":"yarn-cluster"}, "file": "hdfs://ns1/myjars/spark-examples_2.11-2.3.0.jar", "className": "org.apache.spark.examples.SparkPi", "name": "Livy Pi Example", "executorCores":1, "executorMemory":"512m", "driverCores":1, "driverMemory":"512m", "queue":"default", "args":["100"]}' 

②使用livy batches,计算hdfs上根目录下的文件hello.txt中每个单词出现的次数,并将结果落地到hdfs指定的目录下
在Linux终端下键入执行的指令:
前提: 书写工程,打包成jar,并将计算(jar包)上传到hdfs指定的目录下。

curl -XPOST -H "Content-Type: application/json" http://JANSON01:8998/batches --data '{ "conf": {"spark.master":"yarn-cluster"}, "file": "hdfs://ns1/myjars/my-word-count.jar", "className": "com.l000phone.bigdata.MyWordCount", "name": "Janson Word Count", "executorCores":1, "executorMemory":"512m", "driverCores":1, "driverMemory":"512m", "queue":"default", "args":["hdfs://ns1/hello.txt","hdfs://ns1/livy-batches-result"]}' 

补充: (注意:下述两种运行模式,需要将livy配置文件中的livy.spark.master、livy.spark.deploy-mode配置节点注释掉)
standalone-client集群运行模式:

curl -XPOST -H "Content-Type: application/json" http://JANSON01:8998/batches --data '{ "conf": {"spark.master":"spark://JANSON01:7077"}, "file": "hdfs://ns1/myjars/my-word-count.jar", "className": "com.l000phone.bigdata.MyWordCount", "name": "Janson Word Count", "executorCores":1, "executorMemory":"512m", "driverCores":1, "driverMemory":"512m", "queue":"default", "args":["hdfs://ns1/hello.txt","hdfs://ns1/livy-batches-result2"]}' 

standalone-cluster集群运行模式:

curl -XPOST -H "Content-Type: application/json" http://JANSON01:8998/batches --data '{ "conf": {"spark.master":"spark://JANSON01:7077","spark.deploy-mode":"cluster"}, "file": "hdfs://ns1/myjars/my-word-count.jar", "className": "com.l000phone.bigdata.MyWordCount", "name": "Janson Word Count", "executorCores":1, "executorMemory":"512m", "driverCores":1, "driverMemory":"512m", "queue":"default", "args":["hdfs://ns1/hello.txt","hdfs://ns1/livy-batches- result3"]}' 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/156460.html

(0)
上一篇 2025-02-13 11:05
下一篇 2025-02-13 11:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信