请选择 进入手机版 | 继续访问电脑版

好程序员-千锋教育旗下高端IT职业教育品牌

400-811-9990
我的账户
好程序员

专注高端IT职业培训

亲爱的猿猿,欢迎!

已有账号,请

如尚未注册?

[BigData] 好程序员大数据培训Logstach与flume对比

[复制链接]
叶子老师 发表于 2019-8-13 15:35:58 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
好程序员大数据培训分享Logstach与flume对比没有集群的概念,logstach与flume都称为组
logstash是用JRuby语言开发的
组件的对比:
  logstach : input  filter  output
  flume    : source  channel  sink  
优劣对比:
logstach :
安装简单,安装体积小
filter组件,使得该工具具有数据过滤,数据切分的功能
可以与ES无缝结合
具有数据容错功能,在数据采集的时候,如果发生宕机或断开的情况,会断点续传(会记录读取的偏移量)
  综上,该工具主要用途为采集日志数据
flume:
高可用方面要比logstach强大
flume一直在强调数据的安全性,flume在数据传输过程中是由事务控制的
flume可以应用在多类型数据传输领域
数据对接
logstach.gz文件上传解压即可
可以在logstach目录下创建conf文件,用来存储配置文件
  命令启动
1.bin/logstash -e 'input { stdin {} } output { stdout{} }'  
  stdin/stdout(标准输入输出流)
hello xixi
2018-09-12T21:58:58.649Z hadoop01 hello xixi
hello haha
2018-09-12T21:59:19.487Z hadoop01 hello haha
2.bin/logstash -e 'input { stdin {} } output { stdout{codec => rubydebug} }'
hello xixi
{
       "message" => "hello xixi",
      "@version" => "1",
    "@timestamp" => "2018-09-12T22:00:49.612Z",
          "host" => "hadoop01"
}
3.es集群中 ,需要启动es集群
  bin/logstash -e 'input { stdin {} } output { elasticsearch {hosts => ["192.168.88.81:9200"]} stdout{} }'
输入命令后,es自动生成index,自动mapping.
hello haha
2018-09-12T22:13:05.361Z hadoop01 hehello haha
  bin/logstash -e 'input { stdin {} } output { elasticsearch {hosts => ["192.168.88.81:9200", "192.168.88.82:9200"]} stdout{} }'
4.kafka集群中,启动kafka集群
  bin/logstash -e 'input { stdin {} } output { elasticsearch {hosts => ["192.168.88.81:9200", "192.168.88.82:9200"]} stdout{} }'
  配置文件启动
需要启动zookeeper集群,kafka集群,es集群
1.与kafka数据对接
vi logstash-kafka.conf
  启动
  bin/logstash -f logstash-kafka.conf  (-f:指定文件)
  在另一节点上启动kafka消费命令
input {
  file {
    path => "/root/data/test.log"
    discover_interval => 5
    start_position => "beginning"
  }
}
output {
    kafka {
          topic_id => "test1"
          codec => plain {
        format => "%{message}"
                charset => "UTF-8"
      }
          bootstrap_servers => "node01:9092,node02:9092,node03:9092"
    }
}
2.与kafka-es数据对接
vi logstash-es.conf
#启动logstash
bin/logstash -f logstash-es.conf
  在另一节点上启动kafka消费命令
input {
        file {
                type => "gamelog"
                path => "/log/*/*.log"
                discover_interval => 10
                start_position => "beginning"
        }
}
output {
    elasticsearch {
                index => "gamelog-%{+YYYY.MM.dd}"
        hosts => ["node01:9200", "node02:9200", "node03:9200"]
    }
}
数据对接过程
logstach节点存放: 哪个节点空闲资源多放入哪个节点 (灵活存放)
图片10.png
1.启动logstach监控logserver目录,把数据采集到kafka
2.启动另外一个logstach,监控kafka某个topic数据,把他采集到elasticsearch
数据对接案例
需要启动两个logstach,调用各个配置文件,进行对接
1.采集数据到kafka
  cd conf
  创建配置文件: vi gs-kafka.conf
input {
  file {
        codec => plain {
      charset => "GB2312"
    }
    path => "/root/basedir/*/*.txt"
    discover_interval => 5
    start_position => "beginning"
  }
}
output {
    kafka {
          topic_id => "gamelogs"
          codec => plain {
        format => "%{message}"
                charset => "GB2312"
      }
          bootstrap_servers => "node01:9092,node02:9092,node03:9092"
    }
}
  创建kafka对应的topic
bin/kafka-topics.sh --create --zookeeper hadoop01:2181 --replication-factor 1 --partitions 1 --topic gamelogs
2.在hadoop01上启动logstach
  bin/logstash -f conf/gs-kafka.conf
3.在hadoop02上启动另外一个logstach
  cd logstach/conf
  vi kafka-es.conf
input {
  kafka {
    type => "accesslogs"
    codec => "plain"
    auto_offset_reset => "smallest"
    group_id => "elas1"
    topic_id => "accesslogs"
    zk_connect => "node01:2181,node02:2181,node03:2181"
  }
  kafka {
    type => "gamelogs"
    auto_offset_reset => "smallest"
    codec => "plain"
    group_id => "elas2"
    topic_id => "gamelogs"
    zk_connect => "node01:2181,node02:2181,node03:2181"
  }
}
filter {
  if [type] == "accesslogs" {
    json {
      source => "message"
          remove_field => [ "message" ]
          target => "access"
    }
  }
  if [type] == "gamelogs" {
    mutate {
      split => { "message" => "        " }
      add_field => {
        "event_type" => "%{message[3]}"
        "current_map" => "%{message[4]}"
        "current_X" => "%{message[5]}"
        "current_y" => "%{message[6]}"
        "user" => "%{message[7]}"
        "item" => "%{message[8]}"
        "item_id" => "%{message[9]}"
        "current_time" => "%{message[12]}"
     }
     remove_field => [ "message" ]
   }
  }
}
output {
  if [type] == "accesslogs" {
    elasticsearch {
      index => "accesslogs"
          codec => "json"
      hosts => ["node01:9200", "node02:9200", "node03:9200"]
    }
  }
  if [type] == "gamelogs" {
    elasticsearch {
      index => "gamelogs1"
      codec => plain {
        charset => "UTF-16BE"
      }
      hosts => ["node01:9200", "node02:9200", "node03:9200"]
    }
  }
}
   bin/logstash -f conf/kafka-es.conf
4.修改basedir文件中任意数据即可产生es的index文件
图片11.png
5.网页数据存储在设置的/data/esdata中
6.在网页中查找指定字段
  默认分词器为term,只能查找单个汉字,query_string可以查找全汉字
图片12.png

好程序员大数据培训官网:http://www.goodprogrammer.org/bigdata.shtml

精彩内容,一键分享给更多人!
回复

使用道具 举报

您需要登录后才可以回帖

本版积分规则

关注我们
好程序员
千锋好程序员

北京校区(总部):北京市海淀区宝盛北里西区28号中关村智诚科创大厦

深圳西部硅谷校区:深圳市宝安区宝安大道5010号深圳西部硅谷B座A区605-619

杭州龙驰智慧谷校区:浙江省杭州市下沙经济技术开发区元成路199号龙驰智慧谷B座7层

郑州校区:郑州市二七区航海中路60号海为科技园C区10层、12层

Copyright 2007-2019 北京千锋互联科技有限公司 .All Right

京ICP备12003911号-5 京公安网11010802011455号

请您保持通讯畅通1对1咨询马上开启