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。


分享到:


相關文章: