首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Logstash应用-同步ES(elasticsearch)到HDFS

  • 24-03-18 02:15
  • 3793
  • 6546
blog.csdn.net

img

1.场景分析

现有需求需要将elasticsearch的备份至hdfs存储,根据以上需求,使用logstash按照天级别进行数据的同步

2.重难点

  • 数据采集存在时间漂移问题,数据保存时使用的是采集时间而不是数据生成时间
  • 采用webhdfs无法对文件大小进行设置
  • 解决@timestamp时区问题

3.问题解决

3.1 安装webhdfs插件

./bin/logstash-plugin install logstash-output-webhdfs
  • 1

3.2 logstash配置

input{
      elasticsearch{
        hosts => "xxxx:9200"
        index => "xxxx"
        #自定义查询
        query => '{"query": {"range": {"create_time":{"gte": 1704668760000,"lte": 1704668820000}}}}'
        size => 10000
        scroll => "5m"
        slices => 1
        user => "xxx"
        password => "xxxx"
      }
}
filter {
    date {  
        #增加@timestamp,并将记录产生时间赋值给@timestamp,时间处理默认是按照@timestamp的时间
        match => ["create_time","UNIX_MS"]
        timezone => "Asia/Shanghai"
        target => "@timestamp"
    }
    #增加一个timestamp,对@timestamp时间增加8小时
    ruby {   
       code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)"   
     } 
     #将timestamp赋值给@timestamp
     ruby {  
       code => "event.set('@timestamp',event.get('timestamp'))"  
     }
     #设置导入到hdfs的文件数量,需要增加一个字段,当然也可以用时间来控制文件数量,但是只有固定的几个数字,此处按照3个文件控制
     ruby {   
       code => "event.set('sync_bucket', event.get('created')%3)"   
     }
     #删除上处增加的临时字段timestamp  
     mutate {  
        remove_field => ["timestamp"]  
     }  
}
output {
  webhdfs {
    #高可哟集群需要配置standby
    standby_host => "xxx"
    standby_port => 9870
    host => "xxxx"
    port => 9870
    path => "/hadoop/test/part_day=%{+YYYYMMdd}/logstash-%{sync_bucket}.log"
    #按照时间控制文件生成数量,+a是上下午的意思
    #path => "/hadoop/dm_dw/on/ods/ods_cc_es_initLogPro_di/part_day=%{+YYYYMMdd}/logstash-%{+a}.log"
    user => "hadoop"
    compression => "gzip"
    idle_flush_time => 60
    codec => "jsonlines"
  }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

logstash时间处理官网:https://www.elastic.co/guide/en/logstash/current/plugins-filters-date.html#plugins-filters-date-match
比较不错的logstash介绍网站:https://doc.yonyoucloud.com/doc/logstash-best-practice-cn/get_start/full_config.html

注:本文转载自blog.csdn.net的tuoluzhe8521的文章"https://blog.csdn.net/Brother_ning/article/details/135539151"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

132
搜索
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top