druid接入kafka indexing service整个流程

先介绍下我们的druid集群配置

Overload 1台

Coordinator 1台

Middle manager 3台

Broker 3台

Historical一共12台,其中cold 6台,hot 6台

druid版本:0.10, 0.9之后即可支持Kafka indexing service

 

目前的druid主要用来做批量灌入,包括天级,小时级,五分钟级

由于这个五分钟是一个小时前的五分钟,实时性不能满足需求,无法指导广告主实时投放

需要引入分钟级的实时数据,即广告主在投放一分钟之后就能看到投放的展现点击等指标数据,从而指导广告主投放

业务维度字段主要有

uid campaign_id plan_id mid posid

指标字段主要有

impressions clicks installs revenue

 

由于transqulity有数据丢失风险,所以我们拟采用kafka indexing service

1.打开druid的extensions目录,这个插件已经自带

 

2.在overload和middleManager上配置loadList,注意overload节点和middleManager节点都要配置,其他节点不需要

名称千万不能写错 "druid-kafka-indexing-service"

### 如何将DruidKafka集成以实现数据流处理 #### 1. 配置Kafka主题和Druid实时数据源 在配置过程中,需要设置Kafka的相关参数以便于Druid能够正确读取消息队列中的数据。以下是常见的配置项及其说明: - `druid.data.sources.kafka.type=kafka` 表明数据源类型为Kafka[^1]。 - `druid.data.sources.kafka.kafka.topic=your_kafka_topic` 定义了要订阅的具体Kafka主题名称。 - `druid.data.sources.kafka.kafka.bootstrap.servers=your_kafka_broker:9092` 指定了Kafka集群的地址以及端口信息。 - `druid.data.sources.kafka.kafka.group.id=your_kafka_group_id` 设置消费者组ID用于区分不同消费逻辑的应用程序实例。 通过上述配置,可以完成基本的数据连接准备工作。 #### 2. 构建基于Kafka、Flink和Druid的实时数据系统架构 当涉及到大规模分布式环境下的实时数据分析需求时,采用Kafka作为消息中间件负责传输原始日志或者业务操作记录;而Flink则承担起复杂的计算任务如窗口聚合等功能;最后由Druid来执行高效的查询响应服务[^2]。这种组合方式不仅满足低延迟的要求同时也具备高吞吐量的特点。 具体来说,在实际项目开发阶段可能涉及如下几个方面的工作内容: - **数据摄取层**:利用Apache Kafka接收来自各种源头产生的连续不断变化的信息流; - **流式处理引擎**:借助Apache Flink对流入系统的每一条新到达的消息实施即时转换运算; - **在线分析平台**:依靠Apache Druid快速返回针对特定时间段内的统计指标数值结果给前端界面显示出来供决策者参考使用。 #### 3. 流式数据处理技术栈概述 对于现代企业而言,构建一套完整的端到端解决方案往往离不开多个组件之间的紧密协作配合才能达到预期效果目标。因此,在选择合适的技术选型之前应当充分考虑各个层面的需求差异性并权衡利弊做出明智决定[^3]。 例如,在某些应用场景下除了常规意义上的ETL过程之外还需要额外增加一些预处理步骤比如去重过滤异常值检测等等,则此时就可以引入像Spark Streaming 或者 Apache Beam 这样的框架来进行辅助支持从而进一步提升整体性能表现水平。 #### 4. 示例代码片段展示如何定义一个简单的Flink作业并与Kafka交互 下面给出了一段Java语言编写的样例代码用来演示怎样创建一个DataStream对象并通过指定相应的SourceFunction获取来自于外部系统的输入数据集: ```java import org.apache.flink.api.common.eventtime.WatermarkStrategy; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import java.time.Duration; public class SimpleFlinkJob { public static void main(String[] args) throws Exception { final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); DataStream<UPITransaction> stream = env.fromSource( kafkaSource, WatermarkStrategy.forBoundedOutOfOrderness(Duration.ofMinutes(2)), "Kafka Source" ).setParallelism(1); // 后续可在此基础上添加更多的Transformation算子... stream.print(); env.execute("Flink Job with Kafka"); } } ``` 此部分展示了如何初始化Streaming Execution Environment 并调用fromSource 方法加载自定义DataSource 来启动整个Pipeline 的运行流程[^5]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值