通过flume把oracle数据导入到kafka

版本flume 1.6 kafka2.11

flume中缺少flume-ng-sql-source的jar包需要去下载,下载地址可以是:https://github.com/keedio/flume-ng-sql-source.git   但比较麻烦,也可以下载已经弄好的jar:https://download.csdn.net/download/chongxin1/9892184


第一步:把下载好的flume-ng-sql-source的jar包放入到,flume的lib目录下。


第二步:我用的是oracle所以,就把oracle的jdbc包放到flume的lib目录下。我放的是ojdbc5.jar


第三步:配置flume的conf配置文件。

vi sql-kafka.conf   具体配置如下:

agentTest.channels = channelTest
agentTest.sources = sourceTest
agentTest.sinks = sinkTest
###########sql source#################
# For each Test of the sources, the type is defined
agentTest.sources.sourceTest.type = org.keedio.flume.source.SQLSource
agentTest.sources.sourceTest.hibernate.connection.url = jdbc:oracle:thin:@192.168.200.8:1521/orcl
# Hibernate Database connection properties
agentTest.sources.sourceTest.hibernate.connection.user = typpcits
agentTest.sources.sourceTest.hibernate.connection.password = typpcits
agentTest.sources.sourceTest.hibernate.connection.autocommit = true
agentTest.sources.sourceTest.hibernate.dialect = org.hibernate.dialect.Oracle10gDialect
agentTest.sources.sourceTest.hibernate.connection.driver_class = oracle.jdbc.driver.OracleDriver
agentTest.sources.sourceTest.run.query.delay=1
agentTest.sources.sourceTest.status.file.path = /opt/flume
agentTest.sources.sourceTest.status.file.name = agentTest.sqlSource.status
# Custom query
agentTest.sources.sourceTest.custom.query = SELECT * FROM ITS_BASE_AREA 
agentTest.sources.sourceTest.batch.size = 6000
agentTest.sources.sourceTest.max.rows = 1000
agentTest.sources.sourceTest.hibernate.connection.provider_class = org.hibernate.connection.C3P0ConnectionProvider
agentTest.sources.sourceTest.hibernate.c3p0.min_size=1
agentTest.sources.sourceTest.hibernate.c3p0.max_size=10
##############################
agentTest.channels.channelTest.type = memory
agentTest.channels.channelTest.capacity = 10000
agentTest.channels.channelTest.transactionCapacity = 10000
agentTest.channels.channelTest.byteCapacityBufferPercentage = 20
agentTest.channels.channelTest.byteCapacity = 1600000
 
agentTest.sinks.sinkTest.type = org.apache.flume.sink.kafka.KafkaSink
agentTest.sinks.sinkTest.topic = TestTopic
agentTest.sinks.sinkTest.brokerList = 192.168.72.129:9092,192.168.72.130:9092,192.168.72.131:9092
agentTest.sinks.sinkTest.requiredAcks = 1
agentTest.sinks.sinkTest.batchSize = 20
agentTest.sinks.sinkTest.channel = channelTest
 
agentTest.sinks.sinkTest.channel = channelTest
agentTest.sources.sourceTest.channels=channelTest

以上需要替换别忘记换了。

第四步:在flume bin路径下执行命令:

./bin/flume-ng agent -n agentTest  -c conf -f conf/sql-kafka.conf -Dflume.root.logger=INFO,console

第五步:在kafka主题TestTopic上看有没有数据。在路径kafka的bin下执行命令:

./kafka-console-consumer.sh --zookeeper 192.168.72.129:2181 --topic TestTopic --from-beginning

如果成功的话,这时候就可以看见你查询oracle的数据了。


Flume是Cloudera提供的一个分布式、可靠且可用的系统,用于有效地收集、聚合和移动大量日志数据。它具有简单的配置、强大的容错性和多样的源和接收器类型等特点。当使用Flume数据从一个Kafka主题传输到另一个Kafka主题时,可以通过自定义Flume配置来实现。 以下是一个基本的Flume配置示例,用于实现从Kafka消费数据并将其写入到另一个Kafka主题: ``` # 定义agent的名称,必须与后面组件的agent名称对应 a1.sources = r1 a1.sinks = k1 a1.channels = c1 # 配置source,这里的type是kafka a1.sources.r1.type = org.apache.flume.source.kafka.KafkaSource a1.sources.r1.batchSize = 5000 a1.sources.r1.batchDurationMillis = 2000 a1.sources.r1.kafka.bootstrap.servers = kafka-server-1:9092,kafka-server-2:9092,kafka-server-3:9092 a1.sources.r1.kafka.topics = topic1 a1.sources.r1.kafka.consumer.group.id = flume-group # 配置sink,这里的type是kafka a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink a1.sinks.k1.brokerList = kafka-server-1:9092,kafka-server-2:9092,kafka-server-3:9092 a1.sinks.k1.topic = topic2 a1.sinks.k1.requiredAcks = 1 # 配置channel,这里的type是memory a1.channels.c1.type = memory a1.channels.c1.capacity = 10000 a1.channels.c1.transactionCapacity = 100 # 将source, sink和channel连接起来 a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1 ``` 在这个配置Flume agent名为a1,它有一个source(r1)、一个sink(k1)和一个channel(c1)。source是类型为`org.apache.flume.source.kafka.KafkaSource`的Kafka source,用于从Kafka主题(topic1)消费数据。sink是类型为`org.apache.flume.sink.kafka.KafkaSink`的Kafka sink,用于将数据写入另一个Kafka主题(topic2)。channel(c1)作为source和sink之间的缓冲区,类型设置为`memory`。 在实际应用,需要根据具体的Kafka集群配置和Flume环境对上述配置进行相应的修改。确保Kafka服务器地址、主题名称、消费者组ID以及Flume的channel容量等参数与实际环境相匹配。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值