Apache Livy介绍
Apache Livy是一种通过REST接口与Spark cluster进行交互的服务。通过Apache Livy,用户可以在任何能够发送http请求的终端提交Spark任务而不需要修改任何已经写好的spark代码。具有如下特性:
- Client通过Apache Livy与Spark cluster交互过程中可以使用Scala或者Python。
- Client提交的batch job可以使用Scala、Java、或者Python编写的spark任务。
- 长期运行的Spark Contexts可以被多个Spark jobs、多个clients使用。
- 在多个Spark jobs、多个clients之间共享cached RDDs和Dataframes。
- 可以同时管理多个Spark Contexts,Spark Contexts运行在Yarn集群上,具有很好的容错性和并行性。
- Spark任务可以通过预编译Jar包形式提交或者代码片段形式提交。
具体可参考livy官网:http://livy.incubator.apache.org
Livy架构
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,解压后目录如下:
4、设置环境变量
<code>export LIVY_HOME=/data/bigdata/LivyInstall
export PATH=$LIVY_HOME/bin/:$PATH/<code>
5、文件配置
Apache Livy配置文件位于conf目录下,其中有如下五个文件:
主要配置文件为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进行交互。它具有如下功能:
- 代理服务:代理Apache Hadoop相关组件的HTTP资源
- 认证服务:对于REST API接口的认证
- 便捷的客户端服务
具体可参考Apache Knox官网:http://knox.apache.org
Knox server:
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 解压后目录如下
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。
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。
閱讀更多 從大數據到人工智能 的文章