前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >0914-7.1.7-如何用Doris创建Hive和Iceberg Catalog

0914-7.1.7-如何用Doris创建Hive和Iceberg Catalog

作者头像
Fayson
发布2024-04-10 09:08:16
1380
发布2024-04-10 09:08:16
举报
文章被收录于专栏:Hadoop实操Hadoop实操

1 文档说明

Doris支持多源数据目录(Multi-Catalog)功能,旨在能够更方便对接外部数据目录,以增强Doris的数据湖分析和联邦数据查询能力。Multi-Catalog 功能在原有的元数据层级上,新增一层Catalog,构成 Catalog -> Database -> Table 的三层元数据层级。其中,Catalog 可以直接对应到外部数据目录。目前支持的外部数据目录包括:Apache Hive, Apache Iceberg 以及标准的JDBC接口(如MySQL)等

  • • 测试环境
  1. 1. CDP7.1.7 SP1、启用Kerberos
  2. 2. Doris 2.0.2

2 操作步骤

2.1 MySQL

创建的Catalog仅支持查询语句

代码语言:javascript
复制
所有的BE、FE 节点添加JDBC驱动
cd /opt/software/doris/fe/
mkdir jdbc_drivers
cd /opt/software/doris/fe/jdbc_drivers
ln -s /usr/share/java/mysql-connector-java-5.1.46-bin.jar mysql-connector-java.jar
cd /opt/software/doris/be/
mkdir jdbc_drivers
cd /opt/software/doris/be/jdbc_drivers
ln -s /usr/share/java/mysql-connector-java-5.1.46-bin.jar mysql-connector-java.jar

#创建MySQL catalog 
CREATE CATALOG jdbc_mysql_hive PROPERTIES (
    "type"="jdbc",
    "user"="usernanme",
    "password"="password",
    "jdbc_url" = "jdbc:mysql://192.168.0.101:3306/dbname",
    "driver_url" = "mysql-connector-java.jar",
    "driver_class" = "com.mysql.jdbc.Driver"
)

然后执行如下语句进行查询验证,注意:在Doris 的Playground 界面无法切换catalog ,请使用客户端验证

代码语言:javascript
复制
show catalogs;
switch jdbc_mysql_hive;
show databases;
use metastore;
select * from TBLS limit 10;

2.2 hive

1、将 core-site.xml,hdfs-site.xml 和 hive-site.xml 放到 FE 和 BE 的 conf 目录下 2、在所有的 BE、FE 节点下放置 krb5.conf 文件和 keytab 认证文件,keytab 认证文件路径和配置保持一致,krb5.conf 文件默认放置在 /etc/krb5.conf 路径。同时需确认JVM参数 -Djava.security.krb5.conf 和环境变量KRB5_CONFIG指向了正确的 krb5.conf 文件的路径。

如下图所示:

下列参数中的hive.metastore.urishive.metastore.sasl.enabledhive.metastore.kerberos.principaldfs.nameservicesdfs.ha.namenodes.nameservice1等参数请以实际集群配置文件core-site.xml,hdfs-site.xml 和 hive-site.xml中的为准。

代码语言:javascript
复制
CREATE CATALOG hive1 PROPERTIES (
    'type'='hms',
    'hive.metastore.uris' = 'thrift://cdp1.macro.com:9083,thrift://cdp2.macro.com:9083',
    'hive.metastore.sasl.enabled' = 'true',
    'hive.metastore.kerberos.principal' = 'hive/_HOST@HADOOP.COM',
    'dfs.nameservices'='nameservice1',
    'dfs.ha.namenodes.nameservice1'='namenode192,namenode118',
    'dfs.namenode.rpc-address.nameservice1.namenode192'='cdp1.macro.com:8020',
    'dfs.namenode.rpc-address.nameservice1.namenode118'='cdp2.macro.com:8020',
    'dfs.client.failover.proxy.provider.nameservice1'='org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider',
    'hadoop.security.authentication' = 'kerberos',
    'hadoop.kerberos.keytab' = '/tmp/hive.keytab',
    'hadoop.kerberos.principal' = 'hive@HADOOP.COM'
);
代码语言:javascript
复制
show catalogs;
switch hive1;
show databases;
use cdp_airflow;
select * from order_sink limit 10;

2.3 iceberg

Doris支持使用Iceberg API访问元数据的方式,支持Hadoop File System、Hive、REST、Glue、DLF等服务作为Iceberg的Catalog。注意:如果本身的hive 不支持访问Iceberg表那么,使用该HMS来访问icebreg 表也会在查询的提示不支持。本次测试由于当前hive 不支持访问icebreg 表,如下使用hadoop catalog 访问warehouse是比如spark 中设置的hdaoop catalog 的icebreg 存储路径

代码语言:javascript
复制
CREATE CATALOG iceberg_hadoop PROPERTIES (
    'type'='iceberg',
    'iceberg.catalog.type' = 'hadoop',
    'warehouse' = 'hdfs://nameservice1/warehouse/hadoop-iceberg',
    'dfs.nameservices'='nameservice1',
    'dfs.ha.namenodes.nameservice1'='namenode192,namenode118',
    'dfs.namenode.rpc-address.nameservice1.namenode192'='cdp1.macro.com:8020',
    'dfs.namenode.rpc-address.nameservice1.namenode118'='cdp2.macro.com:8020',
    'dfs.client.failover.proxy.provider.your-nameservice'='org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider',
    'hadoop.security.authentication' = 'kerberos',
    'hadoop.kerberos.keytab' = '/tmp/hive.keytab',
    'hadoop.kerberos.principal' = 'hive@HADOOP.COM'
);
代码语言:javascript
复制
show catalogs;
switch iceberg_hadoop;
show databases;
use db0223;
select * from t3 limit 10;

3 问题总结

3.1 MySQL Couldn't open file mysql-connector-java.jar 异常

通过 MySQL Catalog 连接 MySQL数据库报错, 如果在 show databases 和 show tables 都是没问题的情况下,出现[CANCELLED][HTTP_ERROR]Couldn't open file /opt/software/doris/be/jdbc_drivers/mysql-connector-java.jar 异常,请检查对应的节点在提示的目录如/opt/software/doris/be/jdbc_drivers/ 目录下是否有JDBC驱动

3.2 Hive catalog SIMPLE authentication is not enabled 异常

通过 Hive Catalog 连接 Hive 数据库报错:RemoteException: SIMPLE authentication is not enabled. Available:[TOKEN, KERBEROS]

如果在 show databases 和 show tables 都是没问题的情况下,查询的时候出现上面的错误,我们需要进行下面两个操作:

  1. 1. fe/conf、be/conf 目录下需放置 core-site.xml 和 hdfs-site.xml
  2. 2. BE 节点执行 Kerberos 的 kinit 然后重启 BE ,然后再去执行查询即可。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 文档说明
  • 2 操作步骤
    • 2.1 MySQL
      • 2.2 hive
        • 2.3 iceberg
        • 3 问题总结
          • 3.1 MySQL Couldn't open file mysql-connector-java.jar 异常
            • 3.2 Hive catalog SIMPLE authentication is not enabled 异常
            相关产品与服务
            数据库
            云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档