storm基础系列之五---------接入数据收集系统flume
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
storm基础系列之五---------接入数据收集系统flume的更多相关文章
- 分布式日志收集系统 —— Flume
一.Flume简介 Apache Flume 是一个分布式,高可用的数据收集系统.它可以从不同的数据源收集数据,经过聚合后发送到存储系统中,通常用于日志数据的收集.Flume 分为 NG 和 OG ( ...
- mongodb基础系列——数据库查询数据返回前台JSP(一)
经过一段时间停顿,终于提笔来重新整理mongodb基础系列博客了. 同时也很抱歉,由于各种原因,没有及时整理出,今天做了一个demo,来演示,mongodb数据库查询的数据在JSP显示问题. 做了一个 ...
- storm基础系列之一----storm并发度概念剖析
前言: 学了几天storm的基础,发现如果有hadoop基础,再理解起概念来,容易的多.不过,涉及到一些独有的东西,如调度,如并发度,还是很麻烦.那么,从这一篇开始,力争清晰的梳理这些知识. 在正式学 ...
- mongodb基础系列——数据库查询数据返回前台JSP(二)
上篇博客论述了,数据库查询数据返回前台JSP.博客中主要使用Ajax调用来显示JSON串,来获取其中某一个字段,赋给界面中的某一个控件. 那这篇博客中,我们讲解,把后台List传递JSP展示. Lis ...
- storm基础系列之二----zookeeper的作用
在storm集群中,我们常常使用zookeeper作为协调者.那么具体发挥的是什么作用呢? 概括来说,zookeeper是nimbus和supervisor进行交互的中介.具体来说有二: 1.nimb ...
- AIR 程序开发系列 之五 保存数据的几种方式
Local SharedObject 这种方法比较简单方便的保存少的数据到到设备中.你不用自己去管理这些数据,设备会自动管理他. SharedObject 在 flash.net 包中,继承自Even ...
- 日志收集系统Flume及其应用
Apache Flume概述 Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统.Flume 支持定制各类数据发送方,用于收集各类型数据:同时,Fl ...
- Hadoop数据收集与入库系统Flume与Sqoop
Hadoop提供了一个中央化的存储系统,其有利于进行集中式的数据分析与数据共享. Hadoop对存储格式没有要求.可以存储用户访问日志.产品信息以及网页数据等数据. 常见的两种数据来源.一种是分散的数 ...
- 基于Flume的美团日志收集系统 架构和设计 改进和优化
3种解决办法 https://tech.meituan.com/mt-log-system-arch.html 基于Flume的美团日志收集系统(一)架构和设计 - https://tech.meit ...
随机推荐
- Java随笔一
1.继承:子类调用超类构造器时,super调用构造器的语句必须是子类构造器的第一条语句: Java没有多继承,但是可以构造实现多个接口的类: 2.多态:Java 中,对象变量是多态的.一个父类变量既可 ...
- Linux学习之路—Linux文件权限
内容来源于鸟哥私房菜 1.Linux文件属性 1)第一列为文件类型与权限 第一个字符表示文件的类型: [d]表示目录 [-]表示文件 [l]表示连接文件 [b]表示设备文件中可供存储的接口设备,例如硬 ...
- Chp10 10.7
<Java语言程序设计>P296 本章是关于对象的思考,主要是在研究面向对象的程序设计时类的设计,作业写得比较杂乱,构造方法时没有严格遵守类的流行设计风格,由于是作业,再加上比较简单,没有 ...
- CNN for NLP (CS224D)
斯坦福课程CS224d: Deep Learning for Natural Language Processing lecture13:Convolutional neural networks - ...
- fine-grained
鸟类图像分类,CUB-200-2011,可以适用于图片左右的调整.
- IOS 二维码的实现
1.首先导入Coreimage框架. //创建滤镜对象 CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator&quo ...
- ecshop后台分页浅析
既然是分页,道理都是一样的,不过ecshop前台分页的函数和后台分页的函数不同,后台分页函数为page_and_size(),在admin/includes/lib_main.php里.都是用aj ...
- maven加载jar包配置
maven build时报程序包不存在和找不到符号的错误,但是代码中不报错,如下: [ERROR] Failed to execute goal org.apache.maven.plugins:ma ...
- mouseover事件与mouseenter事件的区别
不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件.对应mouseout 只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件.对应mouseleave 被触发的 M ...
- Vim的分割窗口split命令
显示两个不同的文件:或者同时显示一个文件的两个不同地方:又或者并排比较两个文件.这一切都可以通过分割窗口实现. 打开新窗口最简单的命令如下: :split (水平分割) || :vsplit (垂直分 ...