mysql+debezium+kafka+logstash+hdfs

mysql+debezium+kafka+logstash+hdfs

利用debezium解析mysql的日志文件,将解析得到的日志文件传到kafka的topic中,最后利用logstash消费kafka中的数据到hdfs中。

首先开启mysql的binlog

修改/etc/my.cnf文件,在里面添加

server-id = 100
log-bin = mysql_bin
binlog_format = ROW

Mysql需要一个有mysql slave权限的账号,如果mysql不在本机,则需要一个远程权限,防火墙放行。

CREATE USER canal IDENTIFIED BY 'root';  
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;

1.安装debezium解析mysql日志信息

1),下载debezium,下载地址:
https://repo1.maven.org/maven2/io/debezium/debezium-connector-mysql/0.9.5.Final/debezium-connector-mysql-0.9.5.Final-plugin.tar.gz
2). 将debezium解压到confluent的插件目录下,具体目录为{CONFLUENTZ-HOME}/share/java目录下
3)写好配置文件(此处解析的是xx机器上的joinus库中的数据)

name=mysql
connector.class=io.debezium.connector.mysql.MySqlConnector
database.hostname=xx.xxx.xx.xx(此处为数据库所在主机)
database.port=xxxx(数据库的端口号)
database.user=root(用户名)
database.password=xxxx(用户密码)
database.server.id=100
database.server.name=test0530_2(该解析的任务的名称)
database.whitelist=joinus(要解析的数据库的名字)
database.history.kafka.bootstrap.servers=xx.xxx.xx.xx:9092(具体解析到的kafka实例)
database.history.kafka.topic=history.test_0530_2
include.schema.changes=true
include.query=true
time.precision.mode=connect
decimal.handling.mode=string
bigint.unsigned.handling.mode=long

4)以独立模式启动kafka connect,此时kafka会对数据库中的每一个表创建一个topic,消费相应的topic,即可获得binlog解析信息。

2.使用logstash将数据从kafka消费到hdfs中

1),下载安装logstash,(作为ELK中的L,logstash的版本最好和已经安装的elasticsearch和kibana版本一致),此处安装的6.8版本。下载地址如下:
https://artifacts.elastic.co/downloads/logstash/logstash-6.8.0.tar.gz
下载完成后,直接进行解压使用即可。
简单测试使用,在logstash安装目录下,输入

bin/logstash -e 'input { stdin { } } output { stdout {} }'

如果出现以下情况,
在这里插入图片描述
在logstash的安装目录下(此处为/etc/software/logstash)/etc/software/logstash-6.8.0/data,在此目录下有一个.lock文件,删除即可。
重新输入上述命令,结果如下
在这里插入图片描述
接下来,编辑配置文件实现消费kafka数据到hdfs中(位置为test目录下的hdfs1.conf)

input {
  kafka {
    auto_offset_reset => "earliest"(从最初的偏移量开始消费,latest是从最新的偏移量开始消费)
    codec => "plain"
    group_id => "es2"
    topics => ["test0530_1.joinus.interviewer"] (要消费的主题)
    bootstrap_servers => "192.168.16.32:9092"(消费的kafka实例)
  }
}
output {
  webhdfs {
      codec => plain {
        format => "%{message}"
      }
      host => "192.168.16.40"(hdfs地址)
      port => 50070
      user => "hdfs"
      path => "/mysql-hdfs1/%{+YYYY}-%{+MM}-%{+dd}/mytopic-%{+HH}.log"(存入的文件目录)
      flush_size => 500
      idle_flush_time => 10
      retry_interval => 0.5
   }
   stdout { codec => rubydebug }
}

执行该配置文件

bin/lobstash -f test/hdfs1.conf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_42934205

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值