flume
做日志收集的工具,将数据源导入到指定目标中。flume之间可以相互连接
组件
    source:如何从数据源中取数据,可以认为是两种主动source(主动取数据)和被动source(推给source,source作为服务接收数据)
    channel:数据缓冲区
    sink:如何将数据写到目标中
    上面3个组件都在一个agent中,agent是一个任务
安装(依赖jdk)
使用netcat Source做个示例
vi test     # 创建一个agent配置文件,用来配置sink,source,channel
内容如下
    a1.sources = r1     # agent组件名字叫做a1,sources组件名字叫做r1
    a1.sinks = k1        # sinks组件叫做k1
    a1.channels = c1
    a1.sources.r1.type = netcat   # source的类型是netcat
    a1.sources.r1.bind = localhost    # 监听地址
    a1.sources.r1.port = 44444        # 监听端口
    a1.sinks.k1.type = logger        # sink类型是logger
    a1.channels.c1.type = memory    # channel的类型是内存缓冲区
    a1.channels.c1.capacity = 1000    # 大小(字节为单位)
    a1.channels.c1.transactionCapacity = 100
    a1.sources.r1.channels = c1
    a1.sinks.k1.channel = c1
如果要做flume负载均衡,可以设置多个sink,比如:a1.sinks=k1 k2,默认是轮询策略(round_robin)
启动
./bin/flume-ng agent --conf conf --conf-file example.conf --name a1 -Dflume.root.logger=INFO,console
    --conf或者-c       # flume的整个配置目录(这里是目录不是文件,就是flume的conf目录)
    --conf-file或者-f     # agent的配置文件
    --name或者-n        # agent名字
    -Dflume.root.logger   # logger的日志级别(info级别)和logger输出日志到哪里去(console表示控制台)
可以用 telnet ip 端口 命令进行测试
常用source配置
    1.avro(被动的)基于rpc协议进行数据传输,它传输的数据格式是avro格式,只能接收传过来avro格式的数据
        a1.sources.r1.type = avro
        a1.sources.r1.bind = 192.168.237.130     # 配置监听的ip
        a1.sources.r1.port = 4444        # 配置监听的端口
    2.Spooling Directory(主动)主动读目录中的数据
        a1.sources.r1.type = spooldir
        a1.sources.r1.spoolDir=/opt/flume    # 指定目录
    3.netcat(被动)是个服务,所以一定会监听某个端口,基于tcp协议的
        a1.sources.r1.type = netcat   # source的类型是netcat
        a1.sources.r1.bind = localhost    # 监听地址
        a1.sources.r1.port = 44444        # 监听端口
    4.exec(主动)通过命令主动从本地获取数据
        a1.sources.r1.type = exec
        a1.sources.r1.port = tail -F /opt/data/access.log        # 通过什么命令来读数据
    5.kafka
    6.netcat
    7.syslog(被动)
常用sink配置
    1.avro
        a1.sinks.k1.type = avro
        a1.sinks.k1.hostname = 192.168.237.130         # 服务端的主机名
        a1.sinks.k1.type = 4444            # 服务端的端口
    2.file roll写到目录中
        a1.sinks.k1.type = file_roll
        a1.sinks.k1.sink.directory = /opt/sink        # 指定写到哪个目录中,需要手动创建目录
        a1.sinks.k1.sink.rollInterval = 600            # 每10分钟写成一个文件
    3.HDFS
        a1.sinks.k1.type = hdfs
        a1.sinks.k1.hdfs.path = hdfs://node1:900/flume/data  # 只当hdfs目录,如果是高可用的HDFS直接使用服务名就可以
        下面三个配置一定要配置,如果不配置生成的文件会很乱
        a1.sinks.k1.hdfs.rollInterval = 0            # 根据时间间隔生成文件,0表示不启用,秒作为单位
        a1.sinks.k1.hdfs.rollSize = 10240000                 # 根据文件大小生产文件,kb作为单位,0为不启用,这里用10M
        a1.sinks.k1.hdfs.rollCount = 0                # 根据写的次数生成文件,0表示不启用
        a1.sinks.k1.hdfs.idleTimeout = 5        # 超时多少秒后把这个文件关闭,0是不关闭的,在tmp目录中一直会有个文件,这里设置5s,如果5s后没有新数据来就关闭
        a1.sinks.k1.hhdfs.fileType = DataStream # 文件类型,默认是SequenceFile,DataStream 不压缩的
        a1.sinks.k1.hdfs.batchSize = 1000        # 批处理的数据大小,可以加快写的速度
        为了方便管理可以设置以日期作为目录结构
        a1.sinks.k1.hdfs.useLocalTimeStamp = true  # 默认false,开启使用本地时间戳作为格式,然后a1.sinks.k1.hdfs.path = hdfs://node1:900/flume/data/%Y/%m/%d以年月日做目录
    4.null就是Linux中/dev/null
    5.ElasticSearch
    6.hbase
    7.kafka(需要flume1.6.0及以上,因为之前的版本需要额外下载插件)
        a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
        a1.sinks.k1.topic = test            # 设置topic
        a1.sinks.k1.kafka.bootstrap.servers = 192.168.237.130:9092,192.168.237.129:9092,192.168.237.128:9092    # 设置kafka的zookeeper
        a1.sinks.k1.requiredAcks = 1  
        a1.sinks.k1.batchSize = 20
补充
1.flume占用的内存是jvm的,如果flume内存不够了,修改conf/flume-env.sh设置堆内存和栈内存export JAVA_OPTS="-Xms100m -Xmx2000m -Dcom.sun.management.jmxremote"并打开
2.如果想写到数据库中就需要自定义sink了,需要写个类继承某个类实现方法,里面的process就是写数据方法,打包放到flume中lib目录中,然后就配置
  a1.channels = c1
  a1.sinks = k1
  a1.sinks.k1.type = org.example.MySink
  a1.sinks.k1.channel = c1
  具体可以看开发向导中找sink,也可以自定义source,process方法就是读数据
  网址http://flume.apache.org/releases/content/1.9.0/FlumeDeveloperGuide.html的Client
3.flume通过环境变量找到Hadoop的配置文件和jar包,所以flume所在的机器上一定要配置Hadoop_home,但是可以不跑Hadoop进程。如果Hadoop高可用还要配置zookeeper的环境变量

浅谈flume的更多相关文章

  1. 浅谈 Fragment 生命周期

    版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...

  2. 浅谈 LayoutInflater

    浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...

  3. 浅谈Java的throw与throws

    转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...

  4. 浅谈SQL注入风险 - 一个Login拿下Server

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...

  5. 浅谈WebService的版本兼容性设计

    在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...

  6. 浅谈angular2+ionic2

    浅谈angular2+ionic2   前言: 不要用angular的语法去写angular2,有人说二者就像Java和JavaScript的区别.   1. 项目所用:angular2+ionic2 ...

  7. iOS开发之浅谈MVVM的架构设计与团队协作

    今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...

  8. Linux特殊符号浅谈

    Linux特殊字符浅谈 我们经常跟键盘上面那些特殊符号比如(?.!.~...)打交道,其实在Linux有其独特的含义,大致可以分为三类:Linux特殊符号.通配符.正则表达式. Linux特殊符号又可 ...

  9. 浅谈Angular的 $q, defer, promise

    浅谈Angular的 $q, defer, promise 时间 2016-01-13 00:28:00  博客园-原创精华区 原文  http://www.cnblogs.com/big-snow/ ...

  10. 浅谈Hybrid技术的设计与实现第三弹——落地篇

    前言 接上文:(阅读本文前,建议阅读前两篇文章先) 浅谈Hybrid技术的设计与实现 浅谈Hybrid技术的设计与实现第二弹 根据之前的介绍,大家对前端与Native的交互应该有一些简单的认识了,很多 ...

随机推荐

  1. A. Greatest Convex【Codeforces Round #842 (Div. 2)】

    A. Greatest Convex You are given an integer \(k\). Find the largest integer \(x\), where \(1≤x<k\ ...

  2. ASP-Net-Core-6设置运行环境-开发、测试、生产

    title: ASP.Net Core 6设置运行环境(开发.测试.生产) date: 2022-09-24 17:43:49 tags: - .NET 如果我们设置了好几种appsettings.j ...

  3. 2.PyQt5【窗口组件】对话框-Dialog

    一.前言 QDialog 类是对话框窗口的基类.对话框窗口是主要用于短期任务以及和用户进行简要 通讯的顶级窗口.QDialog 可以是模态对话框也可以是非模态对话框.QDialog 支持扩展性并 且可 ...

  4. C#爬虫开发小结

    前言 2023年以来一直很忙,临近春节,各种琐事更多,但鸽了太久没写文章总是不舒坦,忙中偷闲来记录下最近用C#写爬虫的一些笔记. 爬虫一般都是用Python来写,生态丰富,动态语言开发速度快,调试也很 ...

  5. (23)go-micro微服务客户端开发(使用负载均衡)

    目录 一 main.go开发 二 客户端代码开发: 三 客户端测试功能 1.发送注册邮件 2.实现注册功能 3.查询用户功能 四 运行项目 五 最后 一 main.go开发 至此,咱们的项目服务端代码 ...

  6. idea正则替换

    将非 (股权)的替换成 股权

  7. freeswitch号码黑名单

    概述 freeswitch是一款简单好用的的VOIP开源软交换平台. 在客户的呼叫过程中,会遇到一些异常的号码,包括高投诉风险号码.敏感号码.特殊号码等. 在客户呼叫流程中,需要针对这些异常号码做呼叫 ...

  8. .Net Core后端架构实战【1-项目分层框架设计】

    摘要:基于.NET Core 7.0WebApi后端架构实战[1-项目结构分层设计]  2023/02/05, ASP.NET Core 7.0, VS2022 引言 从实习到现在回想自己已经入行四年 ...

  9. 【红米note7开bl锁】快乐开锁人

    背景:开发者模式已打开,绑定账号时间已经超过时间,能够连接电脑数据线没有问题,能够进入fast模式问题:无法连接上小米官方解锁软件解决:方法1:(尝试1)在小米社区看到了一个 1-手机关机 2-开启f ...

  10. mybatis学习日记3

    1.mybatis的延迟加载 问题:在一对多中,当我们有一个用户,他有100个账户 在查询用户的时候,要不要把关联的账户查出来? 在查询账户的时候,要不要把关联的用户查出来? 解决:在查询用户的时候, ...