Apache Doris接入Kafka实时流数据

一.简述

Apache Doris是由百度的Palo项目开源而来,整体架构分为两层:多个 FE 组成第一层,提供 FE 的横向扩展和高可用;多个 BE 组成第二层,负责数据存储于管理。

  1. FE 节点分为 follower 和 observer 两类。各个 FE 之间,通过 bdbje(BerkeleyDB Java Edition)进行 leader 选举,数据同步等工作。
  2. follower 节点通过选举,其中一个 follower 成为 leader 节点,负责元数据的写入操作。当 leader 节点宕机后,其他 follower 节点会重新选举出一个 leader,保证服务的高可用。
  3. observer 节点仅从 leader 节点进行元数据同步,不参与选举。可以横向扩展以提供元数据的读服务的扩展性。

    Apache Doris接入Kafka实时流数据

二.Kafka实时流数据

Ⅰ).创建数据表

CREATE TABLE IF NOT EXISTS datasource_name.table_name(
  'id' LARGEINT NOT NULL,
  'name' VARCHAR(50) NOT NULL,
  'process_time' BIGINT SUM DEFAULT '0'
)
ENGINE=olap
AGGREGATE KEY('id','name')
DISTRIBUTED BY HASH('id') BUCKETS 16
PROPERTIES(
  "replication_num"="2",
  "storage_medium"="SSD",
  "storage_cooldown_time"="2020-01-01 12:00:00"
)

Ⅱ).动态插入列

drois数据库由于是列式存储,所以支持动态扩展列

ALTER TABLE datasource_name.table_name ADD COLUMN jsp_process_time BIGINT SUM DEFAULT '0' after process_time;

ALTER TABLE datasource_name.table_name ADD COLUMN ejb_process_time BIGINT SUM DEFAULT '0' after jsp_process_time;

Ⅲ).查看表结构

DESC datasource_name.table_name;

Ⅳ).配置Kafka routine load

CREATE ROUTINE LOAD datasource_name.kafka_load ON datasource_name.table_name
COLUMNS TERMINATED BY "|",
COLUMNS(id,name,process_time,jsp_process_time,ejb_process_time)
PROPERTIES(
  "desired_concurrent_number"="3",
  "max_batch_interval"="20",
  "max_batch_rows"="300000",
  "max_batch_size"="209715200"
)
FROM KAFKA(
  "kafka_broker_list"="hostname1:9092,hostname2:9092,hostname3:9092",
  "kafka_topic"="topic_name",
  "kafka_partitions"="0,1,2",
  "kafka_offsets"="0,0,0"
)

Ⅴ).查看routine load状态

SHOW ALL ROUTINE LOAD FOR datasource_name.kafka_load;

Ⅵ).常用routine load命令

a).暂停routine load

PAUSE ROUTINE LOAD FOR datasource_name.kafka_load;

b).恢复routine load

RESUME ROUTINE LOAD FOR datasource_name.kafka_load;

c).停止routine load

STOP ROUTINE LOAD FOR datasource_name.kafka_load;

d).查看所有routine load

SHOW [ALL] ROUTINE LOAD FOR datasource_name.kafka_load;

e).查看routine load任务

SHOW ROUTINE LOAD TASK datasource_name.kafka_load;

Ⅶ).查看数据

SELECT * FROM datasource_name.table_name LIMIT 10;

三.Apache Doris优缺点

优点

  1. 支持MySQL客户端的方式,查询访问数据源
  2. 支持数据列式存储,对数据列的动态增减方便
  3. BE、FE的扩容简单
  4. 支持在明细数据上的SUM、MIN、MAX等基本聚合统计
  5. 对RDBMS数据库有基础的,上手容易

缺点

  1. Doris编译,环境依赖重、编译过程问题多
  2. Doris数据格式支持较简单,不支持或json格式的数据
  3. 微批导入数据量不能超过1GB,而且不支持多文件同时导入
  4. streaming数据,需等数据streaming结束后才开始导入任务
  5. 导入过程中的出现异常数据会导致整个导入任务的失败(为保障数据的原子性和一致性)
  6. 目前社区活跃度低,基本由百度贡献
上一篇:java读取Excel文件


下一篇:全面接入「人脸识别」,智慧城市公共服务的另一种思路