一、概述
Apache Kyuubi
,一个分布式多租户网关,用于在 Lakehouse
上供给无服务器 SQL。Kyuubi
是一个根据 Apache Spark
的开源分布式 SQL 引擎,为用户供给了一个一致的 SQL
查询接口,使其能够以标准 SQL 语法查询和剖析各种数据源。以下是对 Kyuubi 的具体解说:
-
背景和目的:
- Kyuubi 的方针是供给一个高度并发、可扩展且支撑多租户的 SQL 引擎,以满意大数据剖析的需求。
- 它构建在
Apache Spark
之上,凭借Spark
的分布式核算才能,能够处理大规模数据集。
-
核心特性:
-
SQL
兼容性: 支撑标准SQL
查询,运用户能够运用熟悉的 SQL 语法。 - 分布式查询引擎: 利用 Apache Spark 完成分布式查询和核算。
- 衔接池支撑: 供给衔接池机制,有效办理和重用衔接,进步功能。
- 多租户支撑: 答应多个用户或应用程序同享同一个 Kyuubi 服务器,确保阻隔性。
- 身份验证和授权: 集成了身份验证和授权机制,保证数据访问的安全性。
- 可扩展的数据源支撑: 能够衔接多种数据源,包括 Hive、HBase 和其他兼容 Spark 的数据存储。
-
-
架构和工作原理:
Kyuubi
架构上包含客户端、Kyuubi
服务器和Spark
集群。客户端经过JDBC
或ODBC
驱动衔接到Kyuubi
服务器,然后Kyuubi
将查询分发到底层的Spark
集群进行处理。 -
布置和装备:
-
Kyuubi
能够经过装备文件进行各种参数的设置,包括衔接池、身份验证方法、Spark
应用程序的装备等。具体的装备信息能够参阅Kyuubi
的官方文档。
-
-
运用场景:
-
Kyuubi
适用于需求进行大数据剖析的场景,尤其是需求支撑多用户并发查询的环境。 - 经过
SQL
查询接口,用户能够方便地从多种数据源中检索和剖析数据。
-
-
社区和保护:
-
Kyuubi
是一个活泼的开源项目,有一个不断发展的社区。用户能够经过GitHub
等途径参加评论、陈述问题和供给贡献。
-
整体而言,Kyuubi
是一个强大的分布式 SQL
引擎,经过整合 Apache Spark
的核算才能,供给了高功能、多租户支撑的 SQL
查询服务。在大数据剖析范畴,Kyuubi
供给了一种灵敏、可扩展的解决方案。
官方文档:
Kyuubi
软件跟 Livy
一样都是能够作为 Spark
署理网关,但是 livy
只支撑 Spark2.x
,假如对 Livy
感兴趣的小伙伴能够参阅我以下几篇文章:
二、Spark Kyuubi 架构
Kyuubi 体系的基本技术架构如下图所示:
-
图的中间部分是
Kyuubi
服务端的首要部分,它处理来自图画左面所示的客户端的衔接和履行恳求。在Kyuubi
中,这些衔接恳求被保护为Kyuubi Session
,履行恳求被保护为Kyuubi Operation
,并与相应的session
进行绑定。 -
Kyuubi Session
的创立能够分为两种状况:轻量级和重量级。大多数 session 的创立都是轻量级的,用户无感知。唯一重量级的状况是在用户的同享域中没有实例化或缓存SparkContext
,这种状况一般发生在用户第一次衔接或长时刻没有衔接的时候。这种一次性成本的session
保护形式能够满意大部分的 ad-hoc 快速呼应需求。 -
Kyuubi
以松耦合的方法保护与SparkConext
的衔接。这些SparkContexts
能够是本服务实例在客户端布置形式下在本地创立的Spark
程序,也能够是集群布置形式下在Yarn
或Kubernetes
集群中创立的。在高可用形式下,这些SparkConext
也能够由其他机器上的Kyuubi
实例创立,然后由这个实例同享。 -
这些
SparkConext
实例本质上是由Kyuubi
服务保管的远程查询履行引擎程序。这些程序在Spark SQL
上完成,并对SQL
语句进行端到端编译、优化和履行,以及与元数据(如Hive Metastore
)和存储(如HDFS
)服务进行必要的交互,最大极限地发挥Spark SQL
的威力。它们能够自行办理自己的生命周期,自行缓存和回收,而且不受Kyuubi
服务器上毛病搬运的影响。
三、Hadoop 根底环境装置
能够挑选物理布置,假如仅仅测验的话,也能够挑选容器布置,这里为了快速测验就挑选容器布置了。物理布置和容器布置教程如下:
- 大数据Hadoop原理介绍 装置 实战操作(HDFS YARN MapReduce)
- 大数据Hadoop之——数据仓库Hive
- 大数据Hadoop之——核算引擎Spark
- 经过 docker-compose 快速布置 Hive 具体教程
1)hadoop 下载布置包
# 下载布置包
git clone https://gitee.com/hadoop-bigdata/docker-compose-hadoop.git
2)创立网络
docker network create hadoop-network
3)布置MySQL
cd docker-compose-hadoop/mysql
docker-compose -f mysql-compose.yaml up -d
docker-compose -f mysql-compose.yaml ps
#root 密码:123456,以下是登录命令,留意一般在公司不能直接在命令行明文输入密码,要不然容易被安全抓,切记,切记!!!
docker exec -it mysql mysql -uroot -p123456
4)布置 Hadoop Hive
# 布置 Hadoop Hive
cd docker-compose-hadoop/hadoop_hive
docker-compose -f docker-compose.yaml up -d
# 查看
docker-compose -f docker-compose.yaml ps
# hive
docker exec -it hive-hiveserver2 hive -e "show databases";
# hiveserver2
docker exec -it hive-hiveserver2 beeline -u jdbc:hive2://hive-hiveserver2:10000 -n hadoop -e "show databases;"
四、Spark Kyuubi 装置
1)下载 Kyuubi
wget https://dlcdn.apache.org/kyuubi/kyuubi-1.8.0/apache-kyuubi-1.8.0-bin.tgz --no-check-certificate
tar zxf apache-kyuubi-1.8.0-bin.tgz
2)下载 Spark3
关于Spark的介绍,能够参阅我之前的文章:大数据Hadoop之——核算引擎Spark
wget https://archive.apache.org/dist/spark/spark-3.3.2/spark-3.3.2-bin-hadoop3.tgz --no-check-certificate
tar -xf spark-3.3.2-bin-hadoop3.tgz
修改装备文件:
# 进入spark装备目录
cd spark-3.3.2-bin-hadoop3/conf
# copy 一个模板装备
cp spark-env.sh.template spark-env.sh
在spark-env.sh
下加入如下装备
# Hadoop 的装备文件目录
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
# YARN 的装备文件目录
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
# SPARK 的目录
export SPARK_HOME=/opt/apache/spark-3.3.2-bin-hadoop3
# SPARK 履行文件目录
export PATH=$SPARK_HOME/bin:$PATH
在/etc/profile
文件中追加如下内容:
export SPARK_HOME=/opt/apache/spark-3.3.2-bin-hadoop3
export PATH=$SPARK_HOME/bin:$PATH
测验:
spark-submit
--class org.apache.spark.examples.SparkPi
--master yarn
--deploy-mode cluster
--driver-memory 1G
--num-executors 3
--executor-memory 1G
--executor-cores 1
/opt/apache/spark-3.3.2-bin-hadoop3/examples/jars/spark-examples_2.12-3.3.2.jar 100
2)装备 Kyuubi (Spark3)
cp conf/kyuubi-env.sh.template conf/kyuubi-env.sh
echo 'export JAVA_HOME=/opt/apache/jdk1.8.0_212' >> conf/kyuubi-env.sh
echo 'export SPARK_HOME=/opt/apache/spark-3.3.2-bin-hadoop3' >> conf/kyuubi-env.sh
cp conf/kyuubi-defaults.conf.template conf/kyuubi-defaults.conf
# 将kyuubi地址设置为localhost,假如不打开该注释,那么运用localhost是无法衔接的,需求填写主机的ip地址
vi conf/kyuubi-defaults.conf
kyuubi.frontend.bind.host localhost
3)发动 Kyuubi
bin/kyuubi start
4)测验运用
运用kyuubi自带的beeline客户端工具
bin/beeline -u 'jdbc:hive2://localhost:10009/' -n hadoop
Apache Kyuubi 不仅仅支撑 Spark3 署理也支撑 Presto、Flink 等组件的署理。
五、Apache Kyuubi HA 布置
现在Kyuubi支撑负载均衡,使整个体系高可用。负载均衡旨在优化所有 Kyuubi 服务单元的运用,最大化吞吐量,最小化呼应时刻,并防止单个单元过载。运用具有负载平衡功能的多个 Kyuubi 服务单元而不是单个单元能够经过冗余来进步可靠性和可用性。
Kyuubi 经过运用Apache ZooKeeper
来利用组中的冗余服务实例,在一个或多个组件发生毛病时供给接连服务。
1)布置 Zookeeper
关于 Zookeeper 的介绍与布置能够参阅我以下几篇文章:
这里为了快速测验就挑选docker-compose布置Zookeeper了。
3)Kyuubi HA 装备
vim /opt/kyuubi/conf/kyuubi-defaults.conf
kyuubi.ha.addresses 192.168.182.110:31181,192.168.182.110:32181,192.168.182.110:33181
kyuubi.ha.namespace kyuubi
4)发动服务
bin/kyuubi restart
5)测验
bin/beeline -u 'jdbc:hive2://192.168.182.110:31181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=kyuubi' -n hadoop
Apache Kyuubi
解说与实战操作就先到这里了,更多API接口介绍与运用能够参阅官方文档:kyuubi.readthedocs.io/en/master/c…;有任何疑问也可关注我大众号:大数据与云原生技术共享
,进行技术交流,如本篇文章对您有所协助,费事帮忙一键三连(点赞、转发、保藏)~