81 views

logstash将Kafka中的日记数据定阅到HDFS

By | 2019年2月22日

序言:一般来说,我们将Kafka的日记数据根据logstash定阅輸出到ES,然后用Kibana来做可视化分析,这就是我们一般用的ELK日志分析模式。但是基于ELK的日志分析,一般较为常见的是即时分析,日记存个八天十几天都是删除。那麼在某些情况下,我需要将日记数据也存一份到我HDFS,积累到比效久的时间做半年、一年甚至更长期的数据分析。下边就而言怎样非常简单的根据logstash将kafka中的数据定阅一份到hdfs。
wKiom1d8ekGgX_HBAABasyVQt-E025.png-wh_50

一:安装logstash(下载tar包安装也行,我直接yum装了)

#yum install logstash-2.1.1

二:从github上克隆代码

#git clone  https://github.com/heqin5136/logstash-output-webhdfs-discontinued.git
#ls
logstash-output-webhdfs-discontinued

三:安装logstash-output-webhdfs插件

#cd logstash-output-webhdfs-discontinued
logstash的bin目录下有个plugin,使用plugin来安装插件
#/opt/logstash/bin/plugin install logstash-output-webhdfs
wKiom1d8b9HzWVqnAAAN1y8C7dQ438.png-wh_50

四:配置logstash

#vim /etc/logstash/conf.d/logstash.conf
input {
kafka {
zk_connect => ‘10.10.10.1:2181,10.10.10.2:2181,10.10.10.3:2181’   #kafka的zk集群地址
group_id => ‘hdfs’                     #消费者组,不要和ELK上的消费者一样
topic_id => ‘apiAppWebCms-topic’       #topic
consumer_id => ‘logstash-consumer-10.10.8.8’   #消费者id,自定义,我写本机ip。
consumer_threads => 1
queue_size => 200
codec => ‘json’
}
}

output {
#当你一个topic中会有多种日志,可以获取出来分离储存在hdfs上。
if [type] == “apiNginxLog” {
webhdfs {
workers => 2
host => “10.10.8.1”        #hdfs的namenode地址
port => 50070              #webhdfs端口
user => “hdfs”             #hdfs运行的客户,以这个客户的权限去写hdfs。
path => “/data/logstash/apiNginxLog-%{+YYYY}-%{+MM}-%{+dd}/logstash-%{+HH}.log
#按天建目录,按小时建log文件。
flush_size => 500
#       compression => “snappy”             #压缩格式,可以不压缩
idle_flush_time => 10
retry_interval => 0.5
}
}
if [type] == “apiAppLog” {
webhdfs {
workers => 2
host => “10.64.8.1”
port => 50070
user => “hdfs”
path => “/data/logstash/api/apiAppLog-%{+YYYY}-%{+MM}-%{+dd}.log”
flush_size => 500
#        compression => “snappy”
idle_flush_time => 10
retry_interval => 0.5
}
}
stdout { codec => rubydebug }
}
五:启动logstash

#/etc/init.d/logstash start

已经可以成功写入了。
本文转载于:http://win-man.com/faq
本文关键词:视频CDN 图片CDN 小说CDN H5CDN
作者:网络维护专家

发表评论

电子邮件地址不会被公开。 必填项已用*标注