HDP3.3.2.0-002实践试范(22)构建实时湖仓一体的联邦查询 flink&cdc + iceberg + doris

概述(感谢hidataplus的共享共建,才有今天的分享_)
概述(感谢doirs的共享共建,才有今天的分享_)

本文主要是路演《Apache Doris 整合 FLINK CDC + Iceberg 构建实时湖仓一体的联邦查询》在《hdp 3.3.2-002》版的实现。
原文关键组件:Fink 1.14.4,flink-sql-connector-mysql-cdc-2.2.1,Apache Iceber 0.13.2 。
现在相应版本都已更新了。
hdp 3.3.2-002版组件是: Fink 1.16.2,flink-sql-connector-mysql-cdc(缺少),Apache Iceber 1.13.0
也算是一版升级演示吧~~~

本文目的:为HDP 3.3.2.0的推广,接个力 Doris + FLINK CDC + Iceberg 构建实时湖仓一体的联邦查询

接前文总规划HDP3.3.2.0-002实践试范,展开第二十二章

在这里插入图片描述

二十二、案例2 构建实时湖仓一体的联邦查询 flink&cdc + iceberg + doris

主要参考:

Apache Doris 整合 FLINK CDC + Iceberg 构建实时湖仓一体的联邦查询

与张家锋交谈中。是建议我用2.0.2版 doris来中演的。我也想用2.0.2来演示。只是现有环境hdp 3.3.2-002 集成的droris 是1.2.6。
在这里插入图片描述

最新发布 hdp 3.3.2-003与即将发布的 hdp 3.3.2-004。已集成最新2.0.2版doris。本次路演示算测试hdp 3.3.2-002的集成情况。也适用于 hdp 3.3.2-003/4。

22.1a 系统架构

在这里插入图片描述

22.1b Doris湖仓一体的联邦查询架构如下

在这里插入图片描述

先回看张老师的文章Apache Doris 整合 FLINK CDC + Iceberg 构建实时湖仓一体的联邦查询。再继续。。。
先回看张老师的文章Apache Doris 整合 FLINK CDC + Iceberg 构建实时湖仓一体的联邦查询。再继续。。。
先回看张老师的文章Apache Doris 整合 FLINK CDC + Iceberg 构建实时湖仓一体的联邦查询。再继续。。。

22.2 环境安装部署

2.2.1 hdp 3.3.2的便利之处1:不用再去搞环境。直接进入主题了:

在这里插入图片描述

22.2.2 hdp 3.3.2的便利之处2:不是单纯的功能演示,是生产或预生产级要求的。我们会考虑HA,kerberso 等场景。张老师文中只是单纯的功能演示。

22.3 Mysql 数据源:

CREATE DATABASE demo;
USE demo;
CREATE TABLE userinfo (
  id int NOT NULL AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL DEFAULT 'flink',
  address VARCHAR(1024),
  phone_number VARCHAR(512),
  email VARCHAR(255),
  PRIMARY KEY (`id`)
)ENGINE=InnoDB ;
INSERT INTO userinfo VALUES (10001,'user_110','Shanghai','13347420870', NULL);
INSERT INTO userinfo VALUES (10002,'user_111','xian','13347420870', NULL);
INSERT INTO userinfo VALUES (10003,'user_112','beijing','13347420870', NULL);
INSERT INTO userinfo VALUES (10004,'user_113','shenzheng','13347420870', NULL);
INSERT INTO userinfo VALUES (10005,'user_114','hangzhou','13347420870', NULL);
INSERT INTO userinfo VALUES (10006,'user_115','guizhou','13347420870', NULL);
INSERT INTO userinfo VALUES (10007,'user_116','chengdu','13347420870', NULL);
INSERT INTO userinfo VALUES (10008,'user_117','guangzhou','13347420870', NULL);
INSERT INTO userinfo VALUES (10009,'user_118','xian','13347420870', NULL);

22.4 Flink 引擎

22.4.1 启动 Flink on yarn

sudo -u flink kinit -kt /etc/security/keytabs/flink.headless.keytab flink-bigdata@TSSJ.COM
sudo -u flink /usr/hdp/3.3.2.0-002/flink/bin/yarn-session.sh -d -nm flinkOnYarn
在这里插入图片描述

在这里插入图片描述

22.4.2 进入 Flink SQL Client

cd /usr/hdp/3.3.2.0-002/flink
sudo -u flink bin/sql-client.sh embedded
在这里插入图片描述

22.5 Flink 创建Iceberg Catalog && hive Catalog

show bug: hdp 3.3.2-002中,flink 集成 iceberg及mysql-cdc是没做好的。
需手动添加上。

在这里插入图片描述

为便于后续使用,直接 vim /opt/sql-client-init.sql

set execution.checkpointing.interval = 3s;

CREATE CATALOG hive_catalog WITH (
  'type'='iceberg',
  'catalog-type'='hive',
  'hive-conf-dir' = '/etc/hive/conf',
  'uri'='thrift://ambari.tssj.com:9083,thrift://master.tssj.com:9083',
  'clients'='5',
  'property-version'='1',
  'warehouse'='hdfs://mycluster/warehouse/iceberg_hive'
);

CREATE CATALOG hadoop_catalog WITH (
  'type'='iceberg',
  'catalog-type'='hadoop',  
  'property-version'='1',
  'warehouse'='hdfs://mycluster/warehouse/iceberg_hadoop'
);

CREATE CATALOG myhive_catalog WITH (
  'type' = 'hive',
  'hive-conf-dir' = '/etc/hive/conf/'
);
use catalog hive_catalog;

重新进入flink sql client

sudo -u flink bin/sql-client.sh embedded -i /opt/sql-client-init.sql

在这里插入图片描述

22.6 Flink Mysql cdc

创建 Mysql CDC 表

 use catalog default_catalog;
 CREATE TABLE user_source (
    database_name STRING METADATA VIRTUAL,
    table_name STRING METADATA VIRTUAL,
    `id` DECIMAL(20, 0) NOT NULL,
    name STRING,
    address STRING,
    phone_number STRING,
    email STRING,
    PRIMARY KEY (`id`) NOT ENFORCED
  ) WITH (
    'connector' = 'mysql-cdc',
    'hostname' = '192.168.1.10',
    'port' = '3307',
    'username' = 'root',
    'password' = 'root',
    'database-name' = 'demo',
    'table-name' = 'userinfo'
  );

在这里插入图片描述

查询CDC表:

select * from user_source;
在这里插入图片描述

22.7 通过 Flink 建好Iceberg表,然后通过Flink cdc插入数据到表,并读取

使用上面已建好的hive_catalog

---查看catalog
show catalogs;
---使用catalog
use catalog hive_catalog;
--创建数据库
CREATE DATABASE iceberg_hive; 
--使用数据库
use iceberg_hive;
​-- 建表all_users_info
CREATE TABLE all_users_info (
    database_name STRING,
    table_name    STRING,
    `id`          DECIMAL(20, 0) NOT NULL,
    name          STRING,
    address       STRING,
    phone_number  STRING,
    email         STRING,
    PRIMARY KEY (database_name, table_name, `id`) NOT ENFORCED
  ) WITH (
    'catalog-type'='hive'
  );

从CDC表里插入数据到Iceberg表里

use catalog default_catalog;​
insert into hive_catalog.iceberg_hive.all_users_info select * from user_source;

在这里插入图片描述
在这里插入图片描述
然后停掉任务,我们去查询iceberg表

select * from hive_catalog.iceberg_hive.all_users_info;

在这里插入图片描述

看到hive目录下的数据及对应的元数据
在这里插入图片描述

22.8 通过 Hive 建好Iceberg表,然后通过Flink将数据插入到表里,并读取

22.8.1 hdp 3.3.2 中 hive 与集成好 iceberg。

在这里插入图片描述

22.8.2 Hive 创建iceberg表

sudo -u hive kinit hive
sudo -u hive hive
在这里插入图片描述
use iceberg_hive;

CREATE EXTERNAL TABLE iceberg_hive( 
  `id` int, 
  `name` string
)
STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler' 
LOCATION 'hdfs://mycluster/warehouse/iceberg_hive/iceberg_hive.db/iceberg_hive'
TBLPROPERTIES (
  'iceberg.mr.catalog'='hadoop', 
  'iceberg.mr.catalog.hadoop.warehouse.location'='hdfs://mycluster/warehouse/iceberg_hive/iceberg_hive.db/iceberg_hive'
); 

22.8.3 Flink SQL Client 将数据插入到Iceberg表里

INSERT INTO hive_catalog.iceberg_hive.iceberg_hive values(2, 'c');
INSERT INTO hive_catalog.iceberg_hive.iceberg_hive values(3, 'zhangfeng');
INSERT INTO hive_catalog.iceberg_hive.iceberg_hive values(4, 'zhangfeng4');

在这里插入图片描述

select * from hive_catalog.iceberg_hive.iceberg_hive;

在这里插入图片描述

以上都跟doris无关吧。都是 flink iceberg hive 三者运用:

1,hive 作统一元数据管理。
2,iceberg表,可在Flink 里建,也可在Hive里建。
3,Flink && Flink cdc 作统一数据处理。

下图的红围部分算是有讲到了。
在这里插入图片描述
接着引出 doris 及 传说中的联邦查询。。。^_^
在这里插入图片描述

hdp 3.3.2-002 已集成好 doris 1.2.6。所以直接使用进入主题。
但在 keberos 环境下。fe/be启动未做 kinit 处理。所以需手动补下:
我试了2种方案:
在这里插入图片描述
同时 FE 和 BE 的 conf 目录下未包含 core-site.xml ,hive-site.xml 配置文件,所以需手动补下:
在这里插入图片描述

因为doris 0.13 与 1.13版的联邦查询用法不一样了。旧的用法在新版里废弃了。
只能从官网找了。
https://doris.apache.org/zh-CN/docs/dev/lakehouse/multi-catalog/hive
https://doris.apache.org/zh-CN/docs/dev/lakehouse/multi-catalog/iceberg

我的要求是在环境: hms ha + hdfs ha + kerbeos 跑通的。
但多hms 节点情况下: hive.metastore.kerberos.principal的设值没未确定。
所以只能降低到 :hdfs ha + kerbeos。
官网资料也得这程度~~失望!失望!~~~

22.9 Doris 查询 hive

CREATE CATALOG hive PROPERTIES (
    'type'='hms',
    'hive.metastore.uris' = 'thrift://ambari.tssj.com:9083',
    'hive.metastore.sasl.enabled' = 'true',
    'hive.metastore.kerberos.principal' = 'hive/ambari.tssj.com@TSSJ.COM',
    'dfs.nameservices'='mycluster',
	'dfs.ha.namenodes.mycluster'='nn1,nn2',
    'dfs.namenode.rpc-address.mycluster.nn1'='ambari.tssj.com:8020',
    'dfs.namenode.rpc-address.mycluster.nn2'='master.tssj.com:8020',
    'dfs.client.failover.proxy.provider.mycluster'='org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider',
    'hadoop.security.authentication' = 'kerberos',
    'hadoop.kerberos.keytab' = '/etc/security/keytabs/hdfs.headless.keytab',   
    'hadoop.kerberos.principal' = 'hdfs-bigdata@TSSJ.COM',
    'yarn.resourcemanager.principal' = 'yarn'
);
SHOW catalogs;
DROP catalog hive; -- 测试重来
SWITCH hive;
SHOW DATABASES;
use gmall;
show tables;
select * from dim_date;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

若没在启动 fe/be前,做kinit 会报:
在这里插入图片描述
参考以下,找到解决方法
https://doris.apache.org/zh-CN/docs/lakehouse/faq?_highlight=kerberos#kerberos

22.10 Doris 查询 Iceberg


CREATE CATALOG iceberg PROPERTIES (
    'type'='iceberg',
    'iceberg.catalog.type'='hms',
    'hive.metastore.uris' = 'thrift://ambari.tssj.com:9083',
    'hive.metastore.sasl.enabled' = 'true',
    'hive.metastore.kerberos.principal' = 'hive/ambari.tssj.com@TSSJ.COM',
    'dfs.nameservices'='mycluster',
	'dfs.ha.namenodes.mycluster'='nn1,nn2',
    'dfs.namenode.rpc-address.mycluster.nn1'='ambari.tssj.com:8020',
    'dfs.namenode.rpc-address.mycluster.nn2'='master.tssj.com:8020',
    'dfs.client.failover.proxy.provider.mycluster'='org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider',
	'hadoop.security.authentication' = 'kerberos',
    'hadoop.kerberos.keytab' = '/etc/security/keytabs/hdfs.headless.keytab',   
    'hadoop.kerberos.principal' = 'hdfs-bigdata@TSSJ.COM',
    'yarn.resourcemanager.principal' = 'rm/ambari.tssj.com@TSSJ.COM'
);

DROP catalog iceberg; -- 测试重来
SWITCH iceberg;
SHOW DATABASES;
use iceberg_hive;
show tables;
select * from all_user_info;

在这里插入图片描述
在这里插入图片描述

体会:

1,doris 的多源数据目录(Multi-Catalog)功能,实现联邦查询。但对hms多节点情况下。本文并未测试成功。
hms服务是无状态的,统一元数据管理配多个节点也是很普遍的需求呀~~~
2,hdp 3.3.2-002中,flink 集成 iceberg及mysql-cdc是没做好,需手动添加上;kerberos环境下doris的启动也未kinit ,需手动补下;FE 和 BE 的 conf 目录下未包含 core-site.xml ,hive-site.xml 配置文件,需手动添加上。即将发布004版里会优化。
3,hdp 3.3.2 用顺手后还是方便的,可以快速进入主题。精力更专注关键测试或路演。
4,hdp 3.3.2 环境进行路演更具实战意义:包含多组件矩阵,高可用,权限管理,安全认证等。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值