前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大数据统一SQL网关:最新版Kyuubi整合Flink、Spark方案的实践案例总结

大数据统一SQL网关:最新版Kyuubi整合Flink、Spark方案的实践案例总结

作者头像
用户9421738
发布2024-07-02 11:21:03
240
发布2024-07-02 11:21:03
举报
文章被收录于专栏:大数据从业者大数据从业者

前言

Kyuubi最新版本已经发布,本文主要介绍基于Kyuubi SQL网关整合多计算引擎Flink和Spark实践案例总结。另外,翻看Release Notes发现Kyuubi Web UI功能增强,新增SQL编辑器,本文亦一并尝鲜实践记录。

详细的组件版本信息如下:

Kyuubi

1.9.0

Spark

3.3.2

Flink

1.17.2

Hive

3.1.0.3.1.5.0-152

Hadoop

3.1.1.3.1.5.0-152

欢迎关注微信公众号大数据从业者!

Flink整合Hadoop Hive

Flink与周边兼容性良好,这里直接使用官方安装包即可,不源码编译!

下载官方安装包

代码语言:javascript
复制
[root@felixzh myHadoopCluster]# wget https://archive.apache.org/dist/flink/flink-1.17.2/flink-1.17.2-bin-scala_2.12.tgz
[root@felixzh myHadoopCluster]# tar -xvf flink-1.17.2-bin-scala_2.12.tgz

准备相关Jar

将flink-sql-connector-hive-3.1.3_2.12-1.17.2.jar放置到Flink/lib目录

代码语言:javascript
复制
https://repo.maven.apache.org/maven2/org/apache/flink/flink-sql-connector-hive-3.1.3_2.12/1.17.2/flink-sql-connector-hive-3.1.3_2.12-1.17.2.jar     

设置环境变量

代码语言:javascript
复制
[root@felixzh flink-1.17.2]# vim bin/config.sh
export HADOOP_CLASSPATH=/usr/hdp/3.1.5.0-152/hadoop-hdfs/*:/usr/hdp/3.1.5.0-152/hadoop-hdfs/lib/*:/usr/hdp/3.1.5.0-152/hadoop-yarn/*:/usr/hdp/3.1.5.0-152/hadoop-yarn/lib/*:/usr/hdp/3.1.5.0-152/hadoop/*:/usr/hdp/3.1.5.0-152/hadoop-mapreduce/*
export HADOOP_CONF_DIR=/etc/hadoop/conf/          

设置配置信息(可选)

代码语言:javascript
复制
[root@felixzh flink-1.17.2]# vim conf/flink-conf.yaml    

high-availability.type: zookeeper
high-availability.zookeeper.quorum: felixzh:2181
high-availability.storageDir: hdfs:///flink/ha/
classloader.check-leaked-classloader: false

实践验证

通过提交简单word count测试例,验证Flink与Hadoop整合效果,如下:

通过FlinkSqlClient验证Hive Catalog整合效果,如下:

Spark整合Hadoop Hive

本文不再重复赘述,请参见历史文章《一文掌握最新数据湖方案Spark+Hadoop+Hudi+Hive整合案例实践总结》相关章节

通过SparkSql验证整合效果如下:

Kyuubi源码编译

下载源码

代码语言:javascript
复制
[root@felixzh mySourceCode]# git clone -b v1.9.0 https://github.com/apache/kyuubi.git

编译打包

代码语言:javascript
复制
[root@felixzh mySourceCode]# build/dist --tgz --spark-provided --flink-provided --hive-provided --web-ui -Pspark3.3 -Pflink-1.17

如上图所示,Kyuubi源码根目录可以找到安装包apache-kyuubi-1.9.0-bin.tgz

说明:

代码语言:javascript
复制
1.编译环境maven版本要与Kyuubi源码默认maven版本一致。
2.注意周边配套组件版本。
3.Spark、Flink、Hive已单独提供,编译不再下载。
4.--web-ui表示启用Kyuubi Web UI源码编译。

Kyuubi整合Flink Spark

基于上述安装包解压

代码语言:javascript
复制
[root@felixzh myHadoopCluster]# tar -xvf apache-kyuubi-1.9.0-bin.tgz  

设置环境变量

代码语言:javascript
复制
[root@felixzh apache-kyuubi-1.9.0-bin]# vim conf/kyuubi-env.sh
export SPARK_HOME=/home/myHadoopCluster/spark-3.3.2-bin-hadoop3/    
export SPARK_CONF_DIR=/home/myHadoopCluster/spark-3.3.2-bin-hadoop3/conf
export HADOOP_CONF_DIR=/etc/hadoop/conf
export FLINK_HOME=/home/myHadoopCluster/flink-1.17.2
export FLINK_HADOOP_CLASSPATH=/usr/hdp/3.1.5.0-152/hadoop-hdfs/*:/usr/hdp/3.1.5.0-152/hadoop-hdfs/lib/*:/usr/hdp/3.1.5.0-152/hadoop-yarn/*:/usr/hdp/3.1.5.0-152/hadoop-yarn/lib/*:/usr/hdp/3.1.5.0-152/hadoop/*:/usr/hdp/3.1.5.0-152/hadoop-mapreduce/* 

设置配置信息

代码语言:javascript
复制
[root@felixzh apache-kyuubi-1.9.0-bin]# vim conf/kyuubi-defaults.conf
kyuubi.ha.zookeeper.quorum  felixzh:2181
kyuubi.ha.zookeeper.namespace  kyuubi1.9.0
kyuubi.engine.type SPARK_SQL
kyuubi.frontend.rest.bind.port 10099
kyuubi.engine.share.level USER
kyuubi.metadata.store.jdbc.database.type MYSQL
kyuubi.metadata.store.jdbc.url jdbc:mysql://felixzh:3306/kyuubi
kyuubi.metadata.store.jdbc.user root
kyuubi.metadata.store.jdbc.password 123456    

说明:metadata store使用MYSQL,需要提前自行创建数据库(如kyuubi)、需要自行准备JDBC驱动mysql-connector-java-8.0.29.jar到Kyuubi/jars目录。

启动Kyuubi Server

代码语言:javascript
复制
[root@felixzh apache-kyuubi-1.9.0-bin]# ./bin/kyuubi start

浏览器访问:http://felixzh:10099/,即可看到Kyuubi Web UI,如下:

Kyuubi on Spark

kyuubi.engine.type默认为SPARK_SQL,这里直接使用kyuubi beeline连接基于zooKeeper开启HA的Kyuubi Server即可,如下:

代码语言:javascript
复制
[root@felixzh bin]# ./beeline -u 'jdbc:hive2://felixzh:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=kyuubi1.9.0'

上图可以看到,Kyuubi已经基于spark-submit启动SparkSQLEngine。

通过Kyuubi Web UI可以看到对应的Session信息,如下:

通过Kyuubi Web UI可以看到对应的Operation信息,如下:

通过Kyuubi Web UI可以看到对应的Engine信息,如下:

并且,通过上图中Engine UI可以直接跳转到对应的Application Matser UI,这点还是很方便的,如下:

通过Kyuubi Web UI可以看到对应的Server信息,如下:

至于SQL Editor,目前仅支持SPARK_SQL引擎类型。

测试基本功能,如下:

代码语言:javascript
复制
create table kyuubitest (username string);
insert into kyuubitest values ("felixzh");
select * from kyuubitest;

Kyuubi on Flink

kyuubi.engine.type默认为SPARK_SQL,jdbc url支持动态设置引擎类型和运行模式。

Application Mode
代码语言:javascript
复制
[root@felixzh bin]# ./beeline -u 'jdbc:hive2://felixzh:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=kyuubi1.9.0;#kyuubi.engine.type=FLINK_SQL;flink.execution.target=yarn-application'

执行简单测试用例如下:

代码语言:javascript
复制
SELECT
  name,
  COUNT(*) AS cnt
FROM
  (VALUES ('Bob'), ('Alice'), ('Greg'), ('Bob')) AS NameTable(name)
GROUP BY name;   
Session Mode
代码语言:javascript
复制
[root@felixzh bin]# ./yarn-session.sh -d
代码语言:javascript
复制
[root@felixzh bin]# ./beeline -u 'jdbc:hive2://felixzh:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=kyuubi1.9.0;#kyuubi.engine.type=FLINK_SQL;flink.execution.target=yarn-session;flink.yarn.application.id=application_1698577744226_0068'

执行上述测试用例,可以看到SQL已经提交到yarn-session集群运行。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据从业者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Flink整合Hadoop Hive
  • Spark整合Hadoop Hive
  • Kyuubi源码编译
  • Kyuubi整合Flink Spark
    • Kyuubi on Spark
      • Kyuubi on Flink
        • Application Mode
        • Session Mode
    相关产品与服务
    大数据
    全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档