美文网首页玩转大数据JavaFlink学习指南
Kyuubi 编译配置和使用指南

Kyuubi 编译配置和使用指南

作者: AlienPaul | 来源:发表于2022-09-08 17:06 被阅读0次

    背景

    Kyuubi是一个基于Spark构建的,针对大规模数据处理分析的,支持统一多租户的JDBC接口服务。本篇围绕Kyuubi的编译,配置,部署和使用展开介绍。

    环境信息

    • CentOS 7.4
    • Kyuubi 1.6.0-incubating
    • Spark 3.1

    编译

    注意:Kyuubi不支持scala 2.11。即要求Spark和Flink的Scala版本为2.12。链接:https://github.com/apache/incubator-kyuubi/issues/2903

    首先从GitHub clone项目到本地:

    git clone https://github.com/apache/incubator-kyuubi.git
    

    切换到需要编译的分支之后。执行:

    build/dist --tgz --flink-provided --spark-provided --hive-provided -Pspark3.1 -Pflink-1.14
    

    开始编译和打包过程。编译完成后软件tar包会自动在源代码根目录生成。

    配置

    全部配置项的官网介绍:https://kyuubi.apache.org/docs/latest/deployment/settings.html

    kyuubi-defaults.conf 配置

    Kyuubi Server IP端口配置

    • kyuubi.frontend.bind.host: server host。需要配置为本机hostname,IP,或者0.0.0.0
    • kyuubi.frontend.bind.port: server 端口号。

    HA配置

    Kyuubi Server支持高可用。

    • kyuubi.ha.client.class: 使用Zookeeper需要配置org.apache.kyuubi.ha.client.zookeeper.ZookeeperDiscoveryClient
    • kyuubi.ha.addresses: Zookeeper的地址
    • kyuubi.ha.namespace: 如果一套Zookeeper集群维护了多个HA Kyuubi集群,需要配置不同的namespace加以区分。在Zookeeper中namespace对应Kyuubi server状态信息保存的根ZNode。默认为kyuubi

    注意:如果启用了Kerberos,需要增加如下配置:

    • kyuubi.ha.zookeeper.auth.type: 配置为KERBEROS
    • kyuubi.ha.zookeeper.auth.principal: Zookeeper认证使用的principal
    • kyuubi.ha.zookeeper.auth.keytab: Zookeeper认证使用的keytab

    Kyuubi Server Kerberos认证配置

    • kyuubi.authentication: 配置为KERBEROS
    • kyuubi.kinit.principal: Kyuubi使用的Kerberos principal
    • kyuubi.kinit.keytab: Kyuubi使用的Kerberos principal对应的keytab

    注意:如果Kyuubi server使用的principal对应Hadoop的用户没有访问HDFS和提交Yarn作业的权限,则只能使用user impersonation。

    Engine类型配置

    • kyuubi.engine.type: 默认为SPARK_SQL。支持SPARK_SQLFLINK_SQLTRINOHIVE_SQLJDBC

    引擎共享策略配置

    对应配置项为:kyuubi.engine.share.level 。支持如下配置值:

    • CONNECTION: Engine不共享,每个连接都会创建一个对应的engine为之服务。
    • USER: 相同用户使用同一个Engine。此项为默认值。
    • GROUP:属于同一组的用户使用同一个Engine。
    • SERVER:所有用户共享同一个Engine。

    kyuubi-env.sh 配置

    kyuubi-env.sh用来配置环境信息。例如JAVA_HOME,Spark/Flink安装目录,配置文件目录等。按照配置文件中注释补充需要的配置项即可。例如使用Spark Engine的时候我们必须配置:

    • SPARK_HOME
    • HADOOP_CONF_DIR
    • YARN_CONF_DIR

    User impersonation 配置

    例如启动Kyuubi server对应的Hadoop用户为kyuubi。编辑core-site.xml。加入如下配置:

    <property>
        <name>hadoop.proxyuser.kyuubi.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.kyuubi.users</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.kyuubi.groups</name>
        <value>*</value>
    </property>
    

    保存后重启HDFS和Yarn。

    注意:这里配置值使用*会导致可代理的用户范围过大,实际使用时酌情调整。

    启动服务

    kyuubi服务启动/停止/重启:

    bin/kyuubi start/stop/restart
    

    如果启用了HA,可在多个节点使用相同配置启动多个Kyuubi Server实例。

    连接Kyuubi

    连接Kerberos认证的集群前需要kinit:

    kinit kyuubi/hostname@PAULTECH -kt /etc/security/keytabs/kyuubi.keytab
    

    以下命令需要进入到Kyuubi安装目录的bin目录执行。

    非HA方式连接:

    ./beeline -u 'jdbc:hive2://kyuubi_server:10009/;principal=kyuubi/hostname@PAULTECH'
    

    HA方式连接:

    ./beeline -u 'jdbc:hive2://zk1:2181,zk2:2181,zk3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=kyuubi;principal=kyuubi/hostname@PAULTECH'
    

    非Kerberos集群使用无需指定principal参数。

    连接URL参数解析:

    • serviceDiscoveryMode: zooKeeper表示使用Zookeeper作为服务发现,配置HA的时候使用。
    • zooKeeperNamespace: 对应kyuubi-defaults.conf中的kyuubi.ha.namespace。zk命名空间。
    • principal: 连接Kerberos集群的时候需要指定Kyuubi的principal。和kyuubi-defaults.conf中的kyuubi.kinit.principal相同。否则会认证失败。

    多租户

    Kyuubi在设计上支持多租户。目前Spark Engine对多租户的支持最为完善。使用租户身份连接Kyuubi server有如下两种方法。

    方法一

    kinit Kyuubi Server启动用户对应的principal。连接URL中principal配置Kyuubi Server用户对应的principal。然后在连接URL后增加hive.server2.proxy.user参数,指定使用哪个租户。要求租户需要具有HDFS访问权限和Yarn队列提交任务权限。

    例如租户为paul时,我们执行:

    ./beeline -u 'jdbc:hive2://zk1:2181,zk2:2181,zk3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=kyuubi;principal=kyuubi/hostname@PAULTECH;hive.server2.proxy.user=paul'
    

    可以看到Kyuubi engine启动执行spark-submit使用的--proxy-user参数为paul

    方法二

    kinit租户对应的principal。连接URL中principal配置Kyuubi Server用户对应的principal。

    需要注意:如果租户访问(例如使用beeline)和Kyuubi Server在同一个节点时,不要和Kyuubi Server公用一个ticket cache。建议切换到其他Linux用户再执行kinit。

    然后执行如下命令。不再需要添加hive.server2.proxy.user参数。

    ./beeline -u 'jdbc:hive2://zk1:2181,zk2:2181,zk3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=kyuubi;principal=kyuubi/hostname@PAULTECH'
    

    备注

    可以使用spark.yarn.queue指定Spark Engine在Yarn的哪个队列中运行。该配置可以写到连接URL中或者是kyuubi-defaults.conf中。

    相关文章

      网友评论

        本文标题:Kyuubi 编译配置和使用指南

        本文链接:https://www.haomeiwen.com/subject/zayonrtx.html