1.基本结构介绍

  flume是三层架构,agent,collector,storage。每一层都可水平扩展。

  其中,agent就是数据采集方;collector是数据整合方;storage是各种数据落地方,如hdfs。

  前两者都是由source和sink组成,source是数据读取组件,sink是数据分发组件。

  前两者作为不同类型node统一归master管理。可在master shell活web中动态配置。

2.自带的source

  text 文件,按行发送

  tail 探测新产生数据,安航发送

  fsyslog Tcp(5140) 监听这个端口

  tailDir("dirname"[, fileregex=".*"[, startFromEnd=false[, recurseDepth=0]]]):监听目录中的文件末尾,使用正则去选定需要监听的文件(不包含目录),recurseDepth为递归监听其下子目录的深度

3.想采集windows服务器上的日志文件,于是,研究了flume怎么在windows下部署。

  • 我用的是flulm1.6版本,直接官网下载(不区分linux还是windows的)解压缩到本地
  • 下载了一个tail工具,用于动态读取日志文件增加的内容。原始下载地址找不到了,我放在自己云盘里:http://pan.baidu.com/s/1nuHt1H3   提取码:ihx2 如果不可用请留言。
  • 使用方法就是直接解压缩,然后把exe文件放到C:/Windows/System32/ 下,验证方式是随便找个txt文件,用tail -f 文件名。可以看到和linux一样的效果。
  • 把flume/conf下的flume-env.sh.template 文件的template后缀去掉,然后在里面加上JAVA_HOME的配置: export JAVA_HOME=D:\jdk1.8
  • 创建一个conf文件,exec_tail.conf,里面的内容是关于flume的配置:
    a1.sources = r1
    a1.sinks = k1
    a1.channels = c1
    # Describe/configure the source
    a1.sources.r1.type = exec
    a1.sources.r1.channels = c1
    a1.sources.r1.command = tail -f D:\hadoopResouce\flume\logs\log_exec_tail.txt
    # Describe the sink
    a1.sinks.k1.type = logger
    # Use a channel which buffers events in memory
    a1.channels.c1.type = memory
    a1.channels.c1.capacity = 1000
    a1.channels.c1.transactionCapacity = 100
    # Bind the source and sink to the channel
    a1.sources.r1.channels = c1
    a1.sinks.k1.channel = c1
    

      其实里面需要修改的就是需要采集的文件全路径

  • 我使用了网上推荐的写一堆命令的方式,不过启动了不见效果。于是我采用其他人推荐的,写一个.bat方式。具体内容是:
    set FLUME_HOME=D:\hadoopResouce\flume
    set JAVA_HOME=D:\jdk1.8
    set JAVA="%JAVA_HOME%\bin\java.exe"
    set JAVA_OPTS=-Xmx1024m
    set CONF=%FLUME_HOME%\conf\flume-conf.properties
    set AGENT=agent
    %JAVA%  %JAVA_OPTS% -Dflume.monitoring.type=http -Dflume.monitoring.port=34545 -Dlog4j.configuration=file:\\\%FLUME_HOME%\conf\log4j.properties -cp "%FLUME_HOME%\lib\*" org.apache.flume.node.Application -f %FLUME_HOME%\conf\flume-conf.properties -n %AGENT%
    

      需要注意的是几处路径的配置

  • 至此,全部准备工作做完,下面在cmd进入flume/bin目录,执行这个.bat文件。
  • 通过http验证下:http://localhost:34545,能看到如下信息:

  { SOURCE.seqGenSrc: { EventReceivedCount: "0", Type: "SOURCE", AppendBatchAcceptedCount: "0", EventAcceptedCount: "2532", AppendReceivedCount: "0", StartTime: "1468487063825", AppendAcceptedCount: "0", OpenConnectionCount: "0", AppendBatchReceivedCount: "0", StopTime: "0" }, CHANNEL.memoryChannel: { ChannelCapacity: "100", ChannelFillPercentage: "99.0", Type: "CHANNEL", EventTakeSuccessCount: "2423", ChannelSize: "99", StartTime: "1468487063801", EventTakeAttemptCount: "2424", EventPutAttemptCount: "2524", EventPutSuccessCount: "2523", StopTime: "0" } }

4.读取目录新增加文件内容的配置

a1.sources.r1.type = spooldir
a1.sources.r1.channels = c1
a1.sources.r1.spoolDir = /home/master/yang/flume/logs
a1.sources.r1.fileHeader = true

  

5.写入kafka的配置

  这里踩的坑较多,一种可能是老版本配置,还有一种就是有的人没经过试验的东西就贴出来了。引以为戒,自己测试通过再贴,保持严谨,免得误人。

//看好类全路径是否都对,网上有不靠谱的写法,org.apache.flume.plugins.SinglePartition 令人鄙视
a1.sinks.k1.type =  org.apache.flume.sink.kafka.KafkaSink
//不知道为什么很多人这里项写为:a1.sinks.k1.metadata.broker.list,可能是之前版本有这个吧
a1.sinks.k1.brokerList =master:9092,slave1:9092,slave2:9092
a1.sinks.k1.serializer.class=kafka.serializer.StringEncoder
//还有这玩意,这写法太坑人了a1.sinks.k1.custom.topic.name
a1.sinks.k1.topic=kafka-storm-cluster
a1.sinks.k1.channel=c1

6.读取telnet监控内容配置sink

a1.sources.r1.type= netcat
a1.sources.r1.bind= localhost
a1.sources.r1.port= 44444

  

7.常用命令:

启动: bin/flume-ng agent  -c ./conf/ -f conf/spool.conf -Dflume.root.logger=DEBUG,console -n a1

转载于:https://www.cnblogs.com/xyang/p/5667956.html

storm基础系列之五---------接入数据收集系统flume相关推荐

  1. JavaScript基础系列之五 浏览器

    JavaScript基础系列之五 浏览器 浏览器 由于JavaScript的出现就是为了能在浏览器中运行,所以,浏览器自然是JavaScript开发者必须要关注的. 目前主流的浏览器分这么几种: IE ...

  2. ASP.NET企业开发框架IsLine FrameWork系列之五--DataProvider 数据访问(中)

    ASP.NET企业开发框架IsLine FrameWork系列之五--DataProvider 数据访问(中) 接上文 使用DataProvider前,需要先在web.config中配置以下节点,添加 ...

  3. oracle 物料属性批次过期,系列之五:ORACLE EBS 系统主数据管理(C)

    系列之五:ORACLE EBS 系统主数据管理(C) 热度 9已有 748 次阅读2009/12/30 10:01 ORACLE EBS 系统主数据管理 二.物料(Item) (九)Item的属性内容 ...

  4. Linux基础系列(六)Linux系统定时任务Crond

    Linux系统定时任务Crond Crond是什么 Crond是Linux系统中用来定期执行命令或指定程序任务的一种服务或软件. 特殊需求:(秒级别)crond服务就无法搞定,一般工作中邪脚本守护进程 ...

  5. 探秘Hadoop生态12:分布式日志收集系统Flume

    这位大侠,这是我的公众号:程序员江湖.  分享程序员面试与技术的那些事. 干货满满,关注就送.  在具体介绍本文内容之前,先给大家看一下Hadoop业务的整体开发流程:  从Hadoop的业务开发流程 ...

  6. oracle保留款数据,系列之五:ORACLE EBS 系统主数据管理(B) - season的日志 - 网易博客...

    ORACLE EBS 系统主数据管理 五.结语 (三)Item 的类别(Category) 上面所讲到的Item编码中的分类(UNSPSC),一般来说还不是系统(各应用功能模块)中真正使用到的类别,原 ...

  7. storm基础系列之二----zookeeper的作用

    在storm集群中,我们常常使用zookeeper作为协调者.那么具体发挥的是什么作用呢? 概括来说,zookeeper是nimbus和supervisor进行交互的中介.具体来说有二: 1.nimb ...

  8. 【大数据新手上路】“零基础”系列课程--MySQL 数据整库迁移到 MaxCompute

    随着公司业务的增多,云数据库 RDS 下的 MySQL 数据库的表越来越多,想要把它全部迁移到 MaxCompute 中进行计算分析,但又愁要配置太多次同步任务.如何能将大量的数据表一次性上传到 Ma ...

  9. python爬虫数据存储文本_Python爬虫开发系列之五》数据存储为TXT、JSON格式

    在上一篇中我们介绍了Beautiful Soup解析库的使用方法,用解析出数据之后,接下来就是存储数据的问题了.数据保存的方式多种多样,最简单的形式是直接保存成文本文件,比如txt/json/csv. ...

最新文章

  1. Ubuntu里面一些权限问题
  2. 【图灵】12月书讯:新书多娇
  3. [数据库] Navicat for MySQL触发器更新和插入操作
  4. windows下多tomcat部署
  5. [css] 说说你对!important的理解,一般在哪些场景使用?
  6. python编写代码_用 Python 编写干净、可测试、高质量的代码
  7. iOS 滑块拼图游戏(Puzzle8)
  8. 清北学堂2019.5.3
  9. 不用 SWIG,Go 使用 C++ 代码的方式
  10. php 删除最后一个空数组,php删除空数组
  11. servlet过滤器 实例_Java Servlet过滤器示例教程
  12. 大数据分析具备哪些特点
  13. 3、JSON相关基础知识点总结(3)
  14. nslookup get public/external IP
  15. java求航班飞行时间代码,基于JAVA的航班动态接口调用代码实例
  16. SQL分组统计-每个学科前三名
  17. 反射和动态代理的区别
  18. U3D PDF 旋转中心设置方法
  19. 【ArcGIS Server】切片时C盘空间不足(本地缓存目录空间不足)
  20. 2种js动态绑定事件方法

热门文章

  1. 一文搞懂重复测量资料分析
  2. PerfLab(直接在服务器上完成)
  3. MyEclipse 2017(英文版)安装教程
  4. keyshot详细安装教程
  5. 光流 | 基于光流的实时运动物体检测(MATLAB代码)
  6. mysql完整字段包括_MySQL字段类型最全解析
  7. linux 改成utc时间_C++下四种常用的程序运行时间的计时方法总结
  8. c++计算机等级考试笔记(1)
  9. wxWidgets随笔(1)-hello,world
  10. vb.net2019-多线程并行计算(1)