Zhang Li e7e391d815 fix: update metastore uri | 1 năm trước cách đây | |
---|---|---|
api | 4 năm trước cách đây | |
assembly | 4 năm trước cách đây | |
bin | 4 năm trước cách đây | |
client-common | 4 năm trước cách đây | |
client-http | 4 năm trước cách đây | |
core | 4 năm trước cách đây | |
coverage | 4 năm trước cách đây | |
dev | 4 năm trước cách đây | |
docker | 1 năm trước cách đây | |
docs | 4 năm trước cách đây | |
examples | 4 năm trước cách đây | |
images | 1 năm trước cách đây | |
integration-test | 1 năm trước cách đây | |
python-api | 4 năm trước cách đây | |
repl | 2 năm trước cách đây | |
rsc | 1 năm trước cách đây | |
scala | 5 năm trước cách đây | |
scala-api | 4 năm trước cách đây | |
server | 4 năm trước cách đây | |
test-lib | 4 năm trước cách đây | |
thriftserver | 2 năm trước cách đây | |
.dockerignore | 2 năm trước cách đây | |
.gitignore | 1 năm trước cách đây | |
.rat-excludes | 4 năm trước cách đây | |
LICENSE | 2 năm trước cách đây | |
Makefile | 1 năm trước cách đây | |
README.md | 1 năm trước cách đây | |
apache-livy-0.8.0-incubating-SNAPSHOT-bin.zip | 2 năm trước cách đây | |
checkstyle-suppressions.xml | 6 năm trước cách đây | |
checkstyle.xml | 7 năm trước cách đây | |
docker-compose-idcprod.yml | 1 năm trước cách đây | |
docker-compose.yml | 2 năm trước cách đây | |
hadoop-3.2.3.tar.gz | 2 năm trước cách đây | |
pom.xml | 1 năm trước cách đây | |
scalastyle.xml | 7 năm trước cách đây | |
spark-3.0.3-bin-hadoop3.2.tgz | 2 năm trước cách đây |
Apache Livy 是开源的 Spark REST 接口服务, 通过 Livy 的 REST 接口可以远程地在 Spark Context 中执行代码. 本项目 fork 自 https://github.com/apache/incubator-livy, 在官方代码的基础上进行二次开发, 并修复部分 BUG.
构建前请将 spark-3.0.3-bin-hadoop3.2.tgz
放置于项目根目录中,
使用如下命令进行构建:
mvn clean package \
-B -V -e \
-Pspark-3.0 \
-Pthriftserver \
-DskipTests \
-DskipITs \
-Dmaven.javadoc.skip=true
构建完成后生成 assembly/target/apache-livy-<版本>-bin.zip
项目中提供了 Dockerfile, 可以将源码打包为镜像.
# 开始构建 Livy 测试镜像
DOCKER_BUILDKIT=1 docker build -f Dockerfile.dev --build-arg BUILDKIT_INLINE_CACHE=1 --target image-test -t livy:test .
# 开始构建 Livy 生产镜像
DOCKER_BUILDKIT=1 docker build -f Dockerfile.dev --build-arg BUILDKIT_INLINE_CACHE=1 --target image-prod -t livy:prod .
通过构建好的 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
运行参数说明:
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
如果需要 Kerberos 认证的话, 就要把 KDC 配置放到 /etc/krb5.conf 这里
在 livy.conf 中配置
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 的话, 就删除上述配置
TODO
curl --request POST \
--url http://172.23.7.140:30998/sessions \
--header 'content-type: application/json' \
--data '{
"kind": "spark"
}' | jq
curl --request GET \
--url http://172.23.7.140:30998/sessions/0 \
--header 'content-type: application/json' \
--data '{
"kind": "spark"
}' | jq
curl -XPOST 'http://172.23.7.140:30998/sessions/0/statements' \
-H 'Content-Type: application/json' \
-d '{"code": "spark.range(1000 * 1000 * 1000).count()"}' | jq
curl --request GET \
--url http://172.23.7.140:30998/sessions/0/statements/0 | jq
## pyspark
curl --request POST \
--url http://10.138.143.16:8998/sessions \
--header 'content-type: application/json' \
--data '{
"kind": "pyspark"
}' | jq
# 查看session
curl --request GET \
--url http://10.138.143.16:8998/sessions/0 \
--header 'content-type: application/json' \
--data '{
"kind": "pyspark"
}' | jq
# 提交任务
curl -XPOST 'http://10.138.143.16:8998/sessions/0/statements' \
-H 'Content-Type: application/json' \
-d '{"code": "sc.range(5).collect()"}'
# 查看结果
curl --request GET \
--url http://10.138.143.16:8998/sessions/0/statements/0 | jq
curl -X DELETE \
--url http://10.138.143.16:8998/sessions/0 | jq