logstash应用2:mysql--hdfs

本文介绍了如何使用Logstash 5.1.1将MySQL数据库中的数据实时同步到Hadoop 2.8.3的HDFS系统。关键在于在Logstash配置中设置正确的主机名或IP(host),并确保在webhdfs输出插件内使用codec => json_lines,以正确格式化数据并写入HDFS。如果不设置,数据只能以默认的三个字段形式存储。
摘要由CSDN通过智能技术生成

工具:
logstash5.1.1

hdfs:
hadoop2.8.3

应用:将mysql中的某个表同步到hdfs系统中。


input {
  stdin{}
  jdbc {
    jdbc_driver_library => "/home/logstash/logstash-5.6.9/lib/mysql-connector-java-5.1.47-bin.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://10.10.x.x:3306/x"
    jdbc_user => "root"
    jdbc_password => "root"
    parameters => { "ip" => "11.12.10.9" }
    jdbc_paging_enabled => "true"
    schedule => "* * * * *"
    statement => "SELECT * FROM bm_device"
  }
}

output{
webhdfs{
host => "master"
port => 50070
path => "/usr/logstash/bm_device"
user => "hdfs"
codec => json_lines
}
}

host => "master"可以为ip,也可以为hostname

codec => json_lines一定要设置,这样才能写入到hdfs中。

一开始,我在webhdfs外面设置了,但是并不能成功同步到hdfs中,不准确的脚本如下:

output{
webhdfs{
host => "master"
port => 50070
path => "/usr/logstash/bm_device"
user => "hdfs"
}
stdout{
codec => json_lines
}
}

stdout表示将数据打印到控制台
同步到hdfs中的数据,只有三个默认的字段,如下:

2019-03-18T18:36:00.825Z %{host} %{message}
2019-03-18T18:36:00.826Z %{host} %{message}
2019-03-18T18:36:00.828Z %{host} %{message}
2019-03-18T18:36:00.828Z %{host} %{message}
2019-03-18T18:36:00.829Z %{host} %{message}
2019-03-18T18:36:00.829Z %{host} %{message}
2019-03-18T18:36:00.830Z %{host} %{message}
2019-03-18T18:36:00.830Z %{host} %{message}
2019-03-18T18:36:00.831Z %{host} %{message}
2019-03-18T18:36:00.831Z %{host} %{message}

所以,codec => json_lines一定要设置在webhdfs这个标签的内部,才能作用于hdfs。

codec => json_lines 与codec => json没有明显的区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值