数据库
首页 > 数据库> > 为在线数据库构建基于 Kudu 的实时数据同步

为在线数据库构建基于 Kudu 的实时数据同步

作者:互联网

zycgit

简述

Kudu 是 Cloudera 开源的新型列式存储系统,是 Apache Hadoop 生态圈的成员之一。它专门为了对快速变化的数据进行快速的分析,填补了以往Hadoop 存储层的空缺。

本篇文章将会介绍几种数据数据同步到 Kudu 的方案选择,然后从功能和使用角度介绍 CloudCanal 如何帮助我们解决数据实时同步到 Kudu。

几种方案

Kudu 是一个存储层组建,若要同步数据到 Kudu 的可以有三种选择

如何选择?

基于RDB方案

基于MQ方案

基于编码方案

同步的技术点

建表

List<ColumnSchema> columns = new ArrayList(2);
columns.add(new ColumnSchema.ColumnSchemaBuilder("key", Type.INT32).key(true).build());
columns.add(new ColumnSchema.ColumnSchemaBuilder("value", Type.STRING).build());
List<String> rangeKeys = new ArrayList<>();
rangeKeys.add("key");
Schema schema = new Schema(columns);
client.createTable(tableName, schema, new CreateTableOptions().setRangePartitionColumns(rangeKeys));

数据写入

KuduTable table = client.openTable(tableName);
KuduSession session = client.newSession();
session.setTimeoutMillis(60000);
for (int i = 0; i < 3; i++) {
    Insert insert = table.newInsert();
    PartialRow row = insert.getRow();
    row.addInt(0, i);
    row.addString(1, "value " + i);
    session.apply(insert);
}
session.flush();
session.close();

数据类型

基于 CloudCanal 快速实现数据同步

前面介绍的三种方式中 RDB方案要求增加配置 SQL 引擎、MQ 方案 则要求增加 Kafka 和 Flume。它们的数据同步链路都较长一旦出现问题,比较不容易排查原因所在。CloudCanal 是采用了第三种方式。

对比前面两种方式具有下列几个优势

举个"栗子"

准备 CLOUDCANAL

添加数据源

同步任务

在最后举例使用 Impala 来查询位于 Kudu 中的数据,如下是建表语句:

CREATE EXTERNAL TABLE `canal_test_case_column_default` STORED AS KUDU
TBLPROPERTIES(
    'kudu.table_name' = 'my-j52hri3880d6dka.canal_test_case.column_default',
    'kudu.master_addresses' = '192.168.0.254:7051')

能力和限制

总结

本文简单介绍了几种将数据同步到 Kudu 的方式,以及基于 CloudCanal 是如何实现实时同步数据到 Kudu。各位小伙伴,如果觉得还不错,请点赞、评论加转发吧。

更多精彩

社区快讯

标签:基于,同步,CloudCanal,数据库,实时,MySQL,Kudu,数据
来源: https://www.cnblogs.com/clougence/p/15385053.html