[Spark] 使用Spark的REST服务Livy
Apache Livy简介 Apache Livy是由Cloudera Labs贡献的基于Apache Spark的开源REST服务,它不仅以REST的方式代替了Spark传统的处理交互方式,同时也提供企业应用中不可忽视的多用户,安全,以及容错的支持。其功能如下:- 拥有可用于多Spark作业或多客户端长时间运行的SparkContext;
同时管理多个SparkContext,并在集群(YARN / Mesos)而不是Livy服务器上运行它们,以实现良好的容错性和并发性; 可以通过预先编译好的JAR、代码片段或是java/scala客户端API将Spark作业提交到远端的Spark集群上执行。 建立测试环境 今天在GitHub: mryqu/vagrant-hadoop-hive-spark提交了add livy support,因此可以在Vagrant搭建的Hadoop 2.7.6 + Hive 2.3.3 + Spark 2.3.0虚拟机环境中使用Livy 0.5.0服务。 使用Livy的REST API 创建交互式会话 curl -X POST -d '{"kind": "spark"}' -H "Content-Type: application/json" http://10.211.55.101:8998/sessions { "id":0, "appId":null, "owner":null, "proxyUser":null, "state":"starting", "kind":"spark", "appInfo":{ "driverLogUrl":null, "sparkUiUrl":null }, "log":[ "stdout: ", " stderr: " ] } 成功创建会话0,kind指定为spark,如果之后提交的代码中没有指定kind,则使用此处的会话默认kind。
查询交互式会话列表 curl http://10.211.55.101:8998/sessions { "from":0, "total":1, "sessions":[ { "id":0, "appId":null, "owner":null, "proxyUser":null, "state":"idle", "kind":"spark", "appInfo":{ "driverLogUrl":null, "sparkUiUrl":null }, "log":[ "2018-07-18 03:19:16 INFO BlockManager:54 - Using org.