|
@@ -1,20 +1,110 @@
|
|
|
# Livy
|
|
|
|
|
|
-Livy 二次开发
|
|
|
+Apache Livy 是开源的 Spark REST 接口服务, 通过 Livy 的 REST 接口可以远程地在 Spark Context 中执行代码. 本项目 fork 自 [https://github.com/apache/incubator-livy](https://github.com/apache/incubator-livy), 在官方代码的基础上进行二次开发, 并修复部分 BUG.
|
|
|
|
|
|
-# 构建
|
|
|
+## 构建及运行方法
|
|
|
|
|
|
+### 1. 构建命令
|
|
|
+
|
|
|
+构建前请将 `spark-3.0.3-bin-hadoop3.2.tgz` 放置于项目根目录中,
|
|
|
+使用如下命令进行构建:
|
|
|
+
|
|
|
+```bash
|
|
|
+mvn clean package \
|
|
|
+ -B -V -e \
|
|
|
+ -Pspark-3.0 \
|
|
|
+ -Pthriftserver \
|
|
|
+ -DskipTests \
|
|
|
+ -DskipITs \
|
|
|
+ -Dmaven.javadoc.skip=true
|
|
|
+```
|
|
|
+
|
|
|
+构建完成后生成 `assembly/target/apache-livy-<版本>-bin.zip`
|
|
|
+
|
|
|
+### 2. Docker 镜像
|
|
|
+
|
|
|
+项目中提供了 Dockerfile, 可以将源码打包为镜像.
|
|
|
+
|
|
|
+```bash
|
|
|
+# 构建基础镜像
|
|
|
+cd docker_build
|
|
|
+docker build -t ylproj-livy-build:1.0.0 .
|
|
|
+cd ../docker_livy_base
|
|
|
+docker build -t ylproj-livy-base:1.0.0 .
|
|
|
+cd ..
|
|
|
+
|
|
|
+# 开始构建 Livy 镜像
|
|
|
+docker build -t ylproj-livy .
|
|
|
+```
|
|
|
+
|
|
|
+通过构建好的 Livy 镜像运行服务
|
|
|
+
|
|
|
+```
|
|
|
+docker run -d \
|
|
|
+ --name ylproj-livy \
|
|
|
+ --network ylproj \
|
|
|
+ -p 8998:8998 \
|
|
|
+ -p 31100-31103:31100-31103 \
|
|
|
+ -v <kerberos配置>:/etc/krb5.conf:ro \
|
|
|
+ -v <hadoop配置>:/opt/cluster/conf:ro \
|
|
|
+ -e LIVY_SERVER_JAVA_OPTS=-Dlivy.rsc.launcher.address=livy \
|
|
|
+ ylproj-livy
|
|
|
```
|
|
|
-mvn clean package -B -V -e \
|
|
|
- -Pspark-3.0 \
|
|
|
- -Pthriftserver \
|
|
|
- -DskipTests \
|
|
|
- -DskipITs \
|
|
|
- -Dmaven.javadoc.skip=true
|
|
|
+
|
|
|
+运行参数说明:
|
|
|
+
|
|
|
+- 文件夹 /opt/cluster/conf 中保存 Hadoop 和 Livy 的配置文件以及 Kerberos 的 keytab
|
|
|
+- /etc/krb5.conf 是 Kerberos 的配置文件
|
|
|
+- 端口 8998 是 Livy 的 RESTful 服务,与 livy.conf 配置文件中一致
|
|
|
+- 端口 31100-31103 是 Livy 与 Hadoop 集群中的 driver 程序通信的 RPC 端口,与 livy-client.conf 中的配置一致
|
|
|
+- 环境变量 `LIVY_SERVER_JAVA_OPTS` 中填入 Livy 服务的域名或 IP 地址 (Hadoop 集群中的 driver 程序要通过该地址访问 Livy)
|
|
|
+
|
|
|
+## 配置文件说明
|
|
|
+
|
|
|
+在镜像中挂载的配置目录结构如下:
|
|
|
+
|
|
|
+```
|
|
|
+/
|
|
|
+├─ etc/
|
|
|
+│ └─ krb5.conf
|
|
|
+└─ opt/
|
|
|
+ └─ cluster/
|
|
|
+ └─ conf/
|
|
|
+ ├─ core-site.xml
|
|
|
+ ├─ hdfs-site.xml
|
|
|
+ ├─ yarn-site.xml
|
|
|
+ ├─ mapred-site.xml
|
|
|
+ ├─ hive-site.xml
|
|
|
+ ├─ livy-client.conf
|
|
|
+ ├─ livy.conf
|
|
|
+ ├─ log4j.properties
|
|
|
+ ├─ spark-defaults.conf
|
|
|
+ └─ user.keytab
|
|
|
```
|
|
|
|
|
|
-# 运行
|
|
|
+- krb5.conf 是 Kerberos 配置文件
|
|
|
+- core-site.xml, hdfs-site.xml, yarn-site.xml, mapred-site.xml 是 Hadoop 的配置文件
|
|
|
+- hive-site.xml 是 Hive 的配置文件
|
|
|
+- livy-client.conf 和 livy.conf 是 Livy 服务的配置文件
|
|
|
+- log4j.properties 是日志配置
|
|
|
+- spark-defaults.conf 是 spark 的配置文件
|
|
|
+- user.keytab 是 Livy 服务的 keytab
|
|
|
+
|
|
|
+### 关于 Kerberos
|
|
|
+
|
|
|
+如果需要 Kerberos 认证的话, 就要把 KDC 配置放到 /etc/krb5.conf 这里
|
|
|
+
|
|
|
+在 livy.conf 中配置
|
|
|
|
|
|
```
|
|
|
-bin/livy-server start
|
|
|
+livy.server.launch.kerberos.principal = <Livy 服务使用的 principal>
|
|
|
+livy.server.launch.kerberos.keytab = /opt/cluster/conf/user.keytab
|
|
|
```
|
|
|
+
|
|
|
+对应于 principal 的 keytab 文件请放在 /opt/cluster/conf/user.keytab
|
|
|
+
|
|
|
+如果本地测试不用 Kerberos 的话, 就删除上述配置
|
|
|
+
|
|
|
+### 关于 Livy 的 conf 文件配置
|
|
|
+
|
|
|
+TODO
|