livy 部署
环境信息
使用的 hadoop 完全分布式集群
1 | 192.168.2.241 hadoop01 |
简介
Livy 是一个基于 Spark 的开源 REST 服务,它能够通过 REST 的方式将代码片段或是序列化的二进制代码提交到 Spark 集群中去执行
Livy 安装
官网 https://livy.incubator.apache.org/get-started/
hadoop03 节点执行 (不兼容 spark-3.2.1,0.8.0版本可用)
1 | wget https://dlcdn.apache.org/incubator/livy/0.7.1-incubating/apache-livy-0.7.1-incubating-bin.zip --no-check-certificate |
源码编译 后,传文件到 hadoop03 上
1 | mkdir -p /opt/bigdata/livy |
修改配置文件
/opt/bigdata/livy/current/conf/livy-env.sh
1 | # export HADOOP_CONF_DIR=/etc/hadoop/conf |
修改配置文件
/opt/bigdata/livy/current/conf/livy.conf
1 | livy.spark.master = yarn |
注意事项, 需要给 spark 添加如下配置
${SPARK_HOME}/conf/spark-defaults.conf # 使用 IP地址
1 | spark.driver.host 192.168.2.243 |
使用 IP地址原因
1 | livy 会 用到 域名.cluster.local 并没有配置,可能默认使用到了 |
启动
1 | bash bin/livy-server stop && bash bin/livy-server start |
验证
1 | curl -X POST --data '{"kind": "spark", "numExecutors": 2, "executorMemory": "1G"}' -H "Content-Type: application/json" -H "X-Requested-By: user" hadoop03:8998/sessions |
测试 spark-hive
1 |
|
遇到的问题
java.lang.IllegalArgumentException: Code type should be specified if session kind is shared
使用共享会话时,需要明确指定代码的类型。ExecuteRequest 中只有 4 个已知字段:msg_type、kind、code、timeoutMs
code
1 | Scala (kind: "spark"):"val df = spark.read.json(\"path_to_file.json\"); df.show()" |
修改如下
1 | curl -X POST -H "Content-Type:application/json" -d '{"code":"spark.sql(\"show databases\").show()", kind": "spark"}' http://http://192.168.2.132:8998/sessions/70/statements |
- livyserver session 失败,shut_down,报错空指针
删除 rsc-jars 目录多余的文件和目录,只留使用到的jar 包
1 | livy-*.jar |
适配FI
livy适配华为FI大数据集群
1 | 前提:已安装华为FI客户端 |