03.08 利用knox代理livy提交spark任务

Apache Livy介绍

Apache Livy是一种通过REST接口与Spark cluster进行交互的服务。通过Apache Livy,用户可以在任何能够发送http请求的终端提交Spark任务而不需要修改任何已经写好的spark代码。具有如下特性:

  1. Client通过Apache Livy与Spark cluster交互过程中可以使用Scala或者Python。
  2. Client提交的batch job可以使用Scala、Java、或者Python编写的spark任务。
  3. 长期运行的Spark Contexts可以被多个Spark jobs、多个clients使用。
  4. 在多个Spark jobs、多个clients之间共享cached RDDs和Dataframes。
  5. 可以同时管理多个Spark Contexts,Spark Contexts运行在Yarn集群上,具有很好的容错性和并行性。
  6. Spark任务可以通过预编译Jar包形式提交或者代码片段形式提交。

具体可参考livy官网:http://livy.incubator.apache.org

Livy架构

利用knox代理livy提交spark任务

Apache Livy安装

Centos主机五台,虚拟机分别名为hadoop1(ip: 10.10.10.1)、hadoop2(ip: 10.10.10.2)、hadoop3(ip: 10.10.10.3)、hadoop4(ip: 10.10.10.4)、hadoop5(ip: 10.10.10.5),且已经安装好jdk、hadoop、zookeeper、hive、spark,版本如下:

  • jdk:1.8.0_201
  • hadoop: 2.8.4
  • hive: 1.2.1
  • zookeeper: 3.4.13
  • spark: 2.4.3

1、在apache livy官网下载软件缩包apache-livy-0.6.0-incubating-bin.zip,链接为:https://www.apache.org/dyn/closer.lua/incubator/livy/0.6.0-incubating/apache-livy-0.6.0-incubating-bin.zip

2、用fstp.exe将apache-livy-0.6.0-incubating-bin.zip上传到hadoop5(ip:10.10.10.5)服务器目录/data/bigdata/LivyInstall/ 下。(本台服务器已部署spark)

3、解压文件: unzip apache-livy-0.6.0-incubating-bin.zip,解压后目录如下:

利用knox代理livy提交spark任务

4、设置环境变量

<code>export LIVY_HOME=/data/bigdata/LivyInstall
export PATH=$LIVY_HOME/bin/:$PATH/<code>

5、文件配置

Apache Livy配置文件位于conf目录下,其中有如下五个文件:

利用knox代理livy提交spark任务

主要配置文件为livy-env.sh.template、livy.conf.template

复制livy-env.sh.template文件,并重新命名为livy-env.sh

添加:

<code>export SPARK_HOME=/data/bigdata/spark/<code>

复制livy.conf.template并重新命名为livy.conf

配置:

<code>livy.server.host = 10.20.21.101\t\t# livy-server host
livy.server.port = 8998\t\t\t\t# livy-server port
livy.spark.master = yarn\t\t\t# 通过livy启动spark的master为yarn
livy.spark.deploy-mode = cluster # spark在yarn上启动模式为cluster
livy.server.enable-hive-context = true\t# 启动hive-context
livy.server.recovery.mode = recovery\t\t# 启动恢复模式
livy.server.recovery.state-store = filesystem\t# 恢复模式保存的文件存在哪个地方filesystem表示文件系统
livy.server.recovery.state-store.url = file:///data/appcom/livy/state-store-files\t\t# 恢复模式保存的文件的位置
livy.impersonation.enabled = true\t\t# 开启代理
/<code>

6、服务启动

<code>bin/livy-server.sh start/<code>

7、说明:

  • apache livy使用8998端口通信,确认主机开启8998端口
  • apache livy server可以以两种方式启动,一种是默认模式,一种是代理模式,在livy.conf文件中配置。
  • 当livy-server以默认模式启动时,所有通过http请求提交的任务都以livy-server启动用户提交。
  • 当livy-server以代理模式启动时,可通过在http请求中指定代理用户来提交spark任务。
  • 当apache livy server以代理模式启动时候,hadoop也需要配置相应的代理。授权livy-server能够代理spark cluster上面的用户。
<code>\t<property>
<name>hadoop.proxyuser.knox.users/<name>
<value>users/<value>
/<property>
<property>
<name>hadoop.proxyuser.knox.hosts/<name>
<value>FQDN_OF_KNOX_HOST/<value>
/<property>/<code>

Apache Knox介绍

Apache Knox Gateway是一种应用网关,用于与Apache Hadoop相关组件的REST APIs和UIs进行交互。它具有如下功能:

  1. 代理服务:代理Apache Hadoop相关组件的HTTP资源
  2. 认证服务:对于REST API接口的认证
  3. 便捷的客户端服务

具体可参考Apache Knox官网:http://knox.apache.org

Knox server:

利用knox代理livy提交spark任务

Apache knox安装

1、在apache livy官网下载软件二进制压缩包,链接为https://mirrors.tuna.tsinghua.edu.cn/apache/knox/1.3.0/knox-1.3.0.tar.gz

2、用fstp.exe将knox-1.3.0.tar.gz上传到hadoop5服务器目录/data/appcom/KnoxInstall/ 下。

3、解压文件:tar zxvf knox-1.3.0.tar.gz 解压后目录如下

利用knox代理livy提交spark任务

4、设置环境变量

<code>export GATEWAY_HOME=/data/bigdata/KnoxInstall
export PATH=$GATEWAY_HOME/bin/:$PATH/<code>

5、根据实际环境修改配置文件

conf/gateway-site.xml

默认开启ssl,如果没有配置,需要在gateway-site.xml中配置关闭

<code><property>
<name>ssl.enabled/<name>
<value>false/<value>
/<property>/<code>

打开目录conf/topologies/下文件sandbox.xml,添加:

<code><service>
<role>LIVYSERVER/<role>
http://10.10.10.5:8998
/<service>/<code>

7、使用knox自带的LDAP做认证,启动LDAP

<code>./bin/ldap.sh start/<code>

配置文件1:/bin/ldap.cfg用于只当main.class和jar包路径

<code>main.class=org.apache.hadoop.gateway.security.ldap.SimpleLdapDirectoryServer
class.path=../lib/*.jar/<code>

配置文件2:/conf/user.ldif,指定ldap层级,默认knox带的LDAP demo里已经内置了dn=hadoop.apache.org,并且配置了少量用户、组,我就直接用了。

概念介绍:

  • o– organization(组织-公司)
  • ou – organization unit(组织单元-部门)
  • c – countryName(国家)
  • dc – domainComponent(域名)
  • sn – suer name(真实名称)
  • cn – common name(常用名称)

这边直接用knox的配置:

<code>dn: dc=hadoop,dc=apache,dc=org
dn: uid=admin,ou=people,dc=hadoop,dc=apache,dc=org
dn: uid=guest,ou=people,dc=hadoop,dc=apache,dc=org/<code>

demo LDAP明文记录密码。

举例:Windows上可以使用LdapAdmin客户端连接到LDAP服务器上。下图是一个连接配置和打开连接以后看到的默认存在的用户。demo LDAP默认端口号是33389。

利用knox代理livy提交spark任务

7、创建master,执行命令:

<code>knoxcli.sh create-master/<code>

8、启动gateway,执行命令:

<code>gateway.sh start/<code>

9、说明:

  • knox默认启动8443端口。
  • 在安装并启动livy之后,通过livy.xml文件配置,knox代理livy的REST服务,在这边livy和knox安装在同一台主机上,就有:
  • http://10.10.10.5:8443/gateway/sandbox/livy/v1 代理 http://10.10.10.5:8998

利用Knox代理livy提交Spark任务

Apache livy安装启动之后,其livy-server相应的host和port分别为:10.10.10.5:8998

Apache knox安装启动之后,其http://10.10.10.5:8443/gateway/sandbox/livy/v1 代理livy-server的服务: http://10.10.10.5:8998

本来在livy-server上提交的任务现在可以通过Apache knox提交,在本例子中用户名和密码都是guest。


分享到:


相關文章: