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。
閱讀更多 從大數據到人工智能 的文章