一、概述

Apache Kyuubi,一个分布式多租户网关,用于在 Lakehouse 上供给无服务器 SQL。Kyuubi 是一个根据 Apache Spark 的开源分布式 SQL 引擎,为用户供给了一个一致的 SQL 查询接口,使其能够以标准 SQL 语法查询和剖析各种数据源。以下是对 Kyuubi 的具体解说:

  1. 背景和目的
    • Kyuubi 的方针是供给一个高度并发、可扩展且支撑多租户的 SQL 引擎,以满意大数据剖析的需求。
    • 它构建在 Apache Spark 之上,凭借 Spark 的分布式核算才能,能够处理大规模数据集。
  2. 核心特性
    • SQL 兼容性: 支撑标准 SQL 查询,运用户能够运用熟悉的 SQL 语法。
    • 分布式查询引擎: 利用 Apache Spark 完成分布式查询和核算。
    • 衔接池支撑: 供给衔接池机制,有效办理和重用衔接,进步功能。
    • 多租户支撑: 答应多个用户或应用程序同享同一个 Kyuubi 服务器,确保阻隔性。
    • 身份验证和授权: 集成了身份验证和授权机制,保证数据访问的安全性。
    • 可扩展的数据源支撑: 能够衔接多种数据源,包括 Hive、HBase 和其他兼容 Spark 的数据存储
  3. 架构和工作原理Kyuubi 架构上包含客户端、Kyuubi 服务器和 Spark 集群。客户端经过 JDBCODBC 驱动衔接到 Kyuubi 服务器,然后 Kyuubi 将查询分发到底层的 Spark 集群进行处理。
  4. 布置和装备
    • Kyuubi 能够经过装备文件进行各种参数的设置,包括衔接池、身份验证方法、Spark 应用程序的装备等。具体的装备信息能够参阅 Kyuubi 的官方文档。
  5. 运用场景
    • Kyuubi 适用于需求进行大数据剖析的场景,尤其是需求支撑多用户并发查询的环境。
    • 经过 SQL 查询接口,用户能够方便地从多种数据源中检索和剖析数据。
  6. 社区和保护
    • Kyuubi 是一个活泼的开源项目,有一个不断发展的社区。用户能够经过 GitHub 等途径参加评论、陈述问题和供给贡献。

整体而言,Kyuubi 是一个强大的分布式 SQL 引擎,经过整合 Apache Spark 的核算才能,供给了高功能、多租户支撑的 SQL 查询服务。在大数据剖析范畴Kyuubi 供给了一种灵敏、可扩展的解决方案。

Apache Kyuubi 解说与实战操作
官方文档:

Kyuubi 软件跟 Livy 一样都是能够作为 Spark 署理网关,但是 livy 只支撑 Spark2.x,假如对 Livy 感兴趣的小伙伴能够参阅我以下几篇文章:

二、Spark Kyuubi 架构

Kyuubi 体系的基本技术架构如下图所示:

Apache Kyuubi 解说与实战操作

  • 图的中间部分是 Kyuubi 服务端的首要部分,它处理来自图画左面所示的客户端的衔接和履行恳求。在 Kyuubi 中,这些衔接恳求被保护为 Kyuubi Session,履行恳求被保护为 Kyuubi Operation,并与相应的 session 进行绑定。

  • Kyuubi Session 的创立能够分为两种状况:轻量级和重量级。大多数 session 的创立都是轻量级的,用户无感知。唯一重量级的状况是在用户的同享域中没有实例化或缓存 SparkContext,这种状况一般发生在用户第一次衔接或长时刻没有衔接的时候。这种一次性成本的 session 保护形式能够满意大部分的 ad-hoc 快速呼应需求。

  • Kyuubi 以松耦合的方法保护与 SparkConext 的衔接。这些 SparkContexts 能够是本服务实例在客户端布置形式下在本地创立的 Spark 程序,也能够是集群布置形式下在 YarnKubernetes 集群中创立的。在高可用形式下,这些 SparkConext 也能够由其他机器上的 Kyuubi 实例创立,然后由这个实例同享。

  • 这些 SparkConext 实例本质上是由 Kyuubi 服务保管的远程查询履行引擎程序。这些程序在 Spark SQL 上完成,并对 SQL 语句进行端到端编译、优化和履行,以及与元数据(如 Hive Metastore)和存储(如 HDFS)服务进行必要的交互,最大极限地发挥 Spark SQL 的威力。它们能够自行办理自己的生命周期,自行缓存和回收,而且不受 Kyuubi 服务器上毛病搬运的影响。

三、Hadoop 根底环境装置

能够挑选物理布置,假如仅仅测验的话,也能够挑选容器布置,这里为了快速测验就挑选容器布置了。物理布置和容器布置教程如下:

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

Apache Kyuubi 解说与实战操作

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

Apache Kyuubi 解说与实战操作

4)测验运用

运用kyuubi自带的beeline客户端工具

bin/beeline -u 'jdbc:hive2://localhost:10009/' -n hadoop

Apache Kyuubi 解说与实战操作
Apache Kyuubi 不仅仅支撑 Spark3 署理也支撑 Presto、Flink 等组件的署理。
Apache Kyuubi 解说与实战操作
Apache Kyuubi 解说与实战操作

五、Apache Kyuubi HA 布置

现在Kyuubi支撑负载均衡,使整个体系高可用。负载均衡旨在优化所有 Kyuubi 服务单元的运用,最大化吞吐量,最小化呼应时刻,并防止单个单元过载。运用具有负载平衡功能的多个 Kyuubi 服务单元而不是单个单元能够经过冗余来进步可靠性和可用性。

Kyuubi 经过运用Apache ZooKeeper来利用组中的冗余服务实例,在一个或多个组件发生毛病时供给接连服务。

Apache Kyuubi 解说与实战操作

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 解说与实战操作


Apache Kyuubi 解说与实战操作就先到这里了,更多API接口介绍与运用能够参阅官方文档:kyuubi.readthedocs.io/en/master/c…;有任何疑问也可关注我大众号:大数据与云原生技术共享,进行技术交流,如本篇文章对您有所协助,费事帮忙一键三连(点赞、转发、保藏)~

Apache Kyuubi 解说与实战操作