flume
文章平均质量分 51
flume介绍
Allen019
技术博客
展开
-
Hive(六)分区表
以上数据在Hive的分区表中,分区字段在原始数据中并不存在,而是在加载数据的时候来手动指定。在查询数据的时候,指定了分区字段,分区表的查询效率就会高于未分区的表,如select * from cities where province='hebei';在查询数据的时候,进行了跨分区查询,此时未分区表的查询效率就要高于分区表 select * from cities where id=1;在Hive中,分区表是一种特殊的表,它根据数据的分区键值将数据存储在不同的目录中。但是真正的数据里是没有prince的。原创 2024-08-12 11:38:16 · 1191 阅读 · 0 评论 -
Flume(三十四)Ganglia 监控flume
Gmond :是一个守护进程是一个轻量级的服务,他运行在每一个需要监测的节点上,收集监测统计,发送和接受在同一个组播或单播通道上的统计信息 如果他是一个发送者(mute=no)他会收集基本指标,比如系统负载(load_one),CPU利用率,磁盘,网络以及活跃的进程数量。他同时也会发送用户通过添加C/Python模块来自定义的指标。如果他是一个接收者(deaf=no)他会聚合所有从别的主机上发来的指标,并把它们都保存在内存缓冲区中。原创 2024-08-10 11:02:16 · 397 阅读 · 0 评论 -
Flume(三十三)Ganglia的部署
Gmond :是一个守护进程是一个轻量级的服务,他运行在每一个需要监测的节点上,收集监测统计,发送和接受在同一个组播或单播通道上的统计信息 如果他是一个发送者(mute=no)他会收集基本指标,比如系统负载(load_one),CPU利用率,磁盘,网络以及活跃的进程数量。他同时也会发送用户通过添加C/Python模块来自定义的指标。如果他是一个接收者(deaf=no)他会聚合所有从别的主机上发来的指标,并把它们都保存在内存缓冲区中。原创 2024-08-10 09:38:54 · 411 阅读 · 0 评论 -
Flume(三十二)Flume的执行流程
根据 Flume 的架构原理,Flume 是不可能丢失数据的,其内部有完善的事务机制, Source 到 Channel 是事务性的,Channel 到 Sink 是事务性的,因此这两个环节不会出现数 据的丢失,唯一可能丢失数据的情况是 Channel 采用 memoryChannel,agent 宕机导致数据 丢失,或者 Channel 存储数据已满,导致 Source 不再写入,未写入的数据丢失。用户也可以根据自己的数据处理需求,自己开发自定义拦截器,这也是Flume的一个可以用来自定义扩展的接口。原创 2024-08-09 18:00:19 · 468 阅读 · 0 评论 -
Flume(三十一)Custom Interceptor
在Flume中,也允许自定义拦截器。但是不同于其他组件,自定义Interceptor的时候,需要再额外覆盖其中的内部接口。自定义类实现Interceptor接口,覆盖其中initialize,intercept和close方法。定义静态内部类,实现Interceptor.Builder内部接口。编写配置文件selfinterceptor.conf。打成jar包方法Flume安装目录的lib目录下。构建Maven工程,导入对应的依赖。查看数据,发现有了timestamp。发送数据nc m1 9999。原创 2024-08-09 17:43:43 · 227 阅读 · 0 评论 -
Flume(三十)Regex Filtering Interceptor
如果excludeEvents的值为false,则表示过滤掉不符合正则表达式形式的数据,符合形式的数据留下来。默认情况下,excludeEvents的值为false。编写配置文件regex.conf,其中 a1.sources.r1.interceptors.i1.excludeEvents = true,表示数据中含有字符不显示。a1.sources.r1.interceptors.i1.excludeEvents = false或者不设置表示,只显示含有数字的数据。结果只显示不含数字的数据。原创 2024-08-09 14:22:31 · 158 阅读 · 0 评论 -
Flume(二十九)Search And Replace Interceptor
搜索和替换拦截器,在使用的时候需要指定正则表达式,会根据正则表达式指定的规则,对Event中body部分的数据进行替换。注意,只替换body部分的数据,而不会影响headers中的数据。正则表达式的使用规则和Java中正则表达式的规则是一致的。这个拦截器会把Event的body当做字符串来处理,并用配置的正则表达式来匹配。可以配置指定被匹配到的Event丢弃还是没被匹配到的Event丢弃。查看结果,可以看到包含有数字的数据被转换成*原创 2024-08-09 12:55:13 · 260 阅读 · 0 评论 -
Flume(二十八)UUID Interceptor
UUID拦截器,本质上也不是一个拦截器,而是在数据的headers中添加一个id字段,可以用于标记数据的唯一性。查看结果,每次发送数据不同id不同。编写配置文件uuid.conf。原创 2024-08-09 12:21:09 · 137 阅读 · 0 评论 -
Flume(二十七)Static Interceptor
查看结果,可以看到header里有datatype的key value为music。静态拦截器,本质上不是拦截器,而是在数据的headers中添加一个指定的字段。可以利用这个Interceptor来标记数据的类型。原创 2024-08-09 11:32:23 · 152 阅读 · 0 评论 -
Flume(二十六)Host Interceptor
这个拦截器会把当前Agent的 hostname 或者 IP 地址写入到Event的header中,key默认是“host”(也可以通过配置自定义key),value可以选择使用hostname或者IP地址。主机拦截器,本质上不是拦截数据,而是在数据的headers中添加一个host字段,可以用于标记数据来源(被收集)的主机。1.在时间拦截器案例的基础上,在配置文件中增加主机名拦截器的配置。命名为hostname.conf。可以看见event headers 中 增加了主机名信息,时间戳信息。原创 2024-08-09 11:17:28 · 106 阅读 · 0 评论 -
Flume(二十五)Timestamp Interceptor(时间添加戳拦截器)
Interceptor(拦截器)本身是Source的子组件之一,可以对数据进行拦截、过滤、替换等操作。不同于Selector的地方在于,一个Source上可以配置多个拦截器,构成拦截器链。需要注意的是,后一个拦截器不能和前一个拦截器相悖。原创 2024-08-09 11:01:19 · 429 阅读 · 0 评论 -
Flume(二十四)Sink Processor
Sink Processor是将一个或者多个Sink绑定到一个组中,针对一个组中的Sink来进行整体的操作。Sink Processor本质上就是Sink Group,是将一个或者多个Sink绑定到一个组中来使用,是Flume用于实现失败恢复和负载均衡的组件。在企业级开发中,通常有多个客户端Agent来收集数据,发送给中心服务器Agent,中心服务器Agent要承载若干客户端Agent发送的数据,负载较高,且中心服务器Agent如果只有一个,会造成单节点故障风险。原创 2024-08-08 21:45:27 · 1011 阅读 · 0 评论 -
Flume(二十三)Selector
这是Flume1.10.0版本开始提供的一种新的分发模式。节点收入数据之后,会根据数据中headers中的指定字段的值来决定将数据分发给哪一个Channel,所以此时各个节点的数据是不同的。Channel Selector本身是Source的子组件,决定了将数据的分发方式以及数据分发给哪一个Channel。节点收入数据之后,会将数据复制之后发送给每一个节点,所以此时每一个节点收到的数据都是完全相同的。比如根据数据不同发送到不同的节点,音乐的数据发送到一个节点,影片的数据发送到另一个节点。原创 2024-08-08 19:06:19 · 172 阅读 · 0 评论 -
Flume(二十二)File Channel
File Channel默认会将数据临时存储到~/.flume/file-channel/data目录下,可以通过属性dataDirs来修改,如果指定了多个数据目录,那么目录之间用逗号隔开。File Channel支持断点续传,默认情况下,会将偏移量记录到~/.flume/file-channel/checkpoint目录下,可以通过属性checkpointDir来修改。File Channel是将数据临时存储到本地磁盘上,因此数据不会丢失,但是读写速度相对较慢,适用于要求可靠性但是不要求速度的场景。原创 2024-08-08 18:40:20 · 230 阅读 · 0 评论 -
Flume(二十一)Memory Channel
Memory Channel是将收集来的数据临时存储到内存队列中,如果不指定,那么该队列默认大小是100,即最多允许在队列中存储100条数据。Channel可以批量接受Source的数据,也可将数据批量发送给Sink,transactionCapacity 属性,默认每一批数据是100条,实际过程中一般会把这个值调整为1000-3000。需要注意的是,Memory Channel是将数据临时存储在内存中,所以是不可靠的,但是数据的读写速度相对较快,因此适用于要求速度但是不要求可靠性的场景。原创 2024-08-08 18:22:43 · 125 阅读 · 0 评论 -
Flume(二十)自定义Sink
chanel有了数据之后,会通过doTabke将数据推送到TakeList(本质上是一个组赛队列),成功执行doCommit,失败执行doRollback。要在Flume中实现自定义Sink,你需要继承。3.编写配置文件,配置生成文件的路径为/5.使用nc m1 6666 发送数据。接口,自定义Sink需要考虑事务问题。2.编写自定义Sink的java代码。6.去根目录下查看文件。原创 2024-08-08 17:53:17 · 205 阅读 · 0 评论 -
Flume(十九)扇出 Sink
编写配置文件m1 shanchu.conf。编写配置文件m2 shanchu.conf。编写配置文件m3 shanchu.conf。启动flume,其次启动m2,m3,m1。一个source对应多个channel。在m1上nc m1 9999 发送数据。一个chanel只能对应一个sink。原创 2024-08-08 10:44:35 · 144 阅读 · 0 评论 -
Flume(十八)扇入 Sink
m1上 nc m1 9999 发送数据h1。m1 上nc m2 9999 发送数据h2。结果,两条数据都显示在了m3的终端上。启动flume,先启动m3。原创 2024-08-07 21:50:03 · 126 阅读 · 0 评论 -
Flume(十七)AVRO Sink
AVRO Sink会将数据利用AVRO序列化之后再写出到指定节点的指定端口上,结合之前学习的AVRO Source可以是现实数据的多级、扇入、扇出等流动效果。此时将数据发送给m2,102(第二个节点上),第二个节点通过avro格式接受后,传递给第三个节点m3,103上,数据如下。1.那我们先来把flume的整个安装包都拷贝到第二个主机节点和第三个主机节点上。第一个节点传给第二个节点,第二个节点传给第三个节点。4.编写m3,接受数据的最后一个节点的配置文件。3.编写m2,中间主机的配置文件。原创 2024-08-07 19:26:10 · 228 阅读 · 0 评论 -
Flume(十六)Null Sink
Null Sink会抛弃掉所有接收到的数据。结果,一套数据也没有收到。原创 2024-08-07 13:09:27 · 177 阅读 · 0 评论 -
Flume(十五)File Roll Sink
File Roll Sink是将收集到的数据写到磁盘的指定位置上。同HDFS Sink一样,File Roll Sink在往磁盘上写的时候,也有一个滚动时间,默认同样是30s间隔,因此在磁盘上同样会形成大量的小文件。查看结果:生成一个文件。原创 2024-08-07 11:41:11 · 136 阅读 · 0 评论 -
Flume(十四)Logger Sink
Logger Sink是将收集到的数据以日志形式打印。需要注意的是,从Flume1.10.0版本开始,使用log4j2.x替换log4j1.x,使用log4j2.xml替换了log4j.properties,因此使用Logger Sink不再输出到控制台上,而是将结果输出到了flume.log文件中。另外在打印的时候,为了防止过多的数据占满屏幕,所以要求数据body的部分不能超过16个字节,超过16个字节的部分不打印。另外,Logger Sink对中文打印支持的不好。如果要在终端输出,请参考。原创 2024-08-07 11:27:10 · 243 阅读 · 0 评论 -
Flume(十三)HDFS Sink
它还通过类似时间戳或机器属性对数据进行 buckets/partitions 操作 HDFS的目录路径可以包含将要由HDFS替换格式的转移序列用以生成存储事件的目录/文件名。同样,HDFS Sink在写数据的时候,数据对应的存储文件会定时地滚动。如果不指定,那么默认是每隔30s滚动一次,生成一个小文件,所以此时会生成大量的小文件,因此在实际过程中一般需要调节这个属性。如果安全模式为关闭,只需要删除flume的lib下面的guava包,然后拷贝kafka下面的guava包给flume即可。原创 2024-08-07 11:13:35 · 220 阅读 · 0 评论 -
Flume(十二)自定义source
Source 组件可以处理各种类型、各种格式的日志数据,包括 avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy。官方提供的 source 类型已经很多,但是有时候并不能满足实际开发当中的需求,此时我们就需要根据实际需求自定义某些 source。案例,实现自定义sequencesource ,步长step,和最大值自定义。步骤3,打成jar包,上传到服务器的lib目录下。原创 2024-08-06 22:24:16 · 290 阅读 · 0 评论 -
Flume(十一)HTTP Source
HTTP Source用于监听和接收HTTP请求,但是需要注意的是,该Source只能监听GET请求和POST请求。其中,官网指出,GET请求的监听最好只用于实验环境,所以实际生产环境中只用这个Source来监听POST请求。原创 2024-08-06 20:30:52 · 192 阅读 · 0 评论 -
Flume(十)Sequence Generator Source
Sequence Generator Source本质上是一个序列产生器,会从0开始依次递增。实际过程中,经常使用这个Souce来测试流动模型是否搭建成功。递增到的最大值为Long.MAX_VALUE。编辑格式文件 vim secsource.conf。原创 2024-08-06 19:04:29 · 255 阅读 · 0 评论 -
Flume(九)NetCat Source
NetCat Source分为NetCat TCP Source和NetCat UDP Source,都是用于监听指定的主机和端口,从该端口接收TCP请求或者UDP请求的数据。如果需要发送TCP请求,使用nc命令;如果需要发送UDP请求,使用nc -u命令。发送数据 nc -u 127.0.0.1 6666。原创 2024-08-06 10:41:42 · 318 阅读 · 0 评论 -
Flume(八)Flume1.10及以上版本实现控制台console打印输出
Flume控制台不输出日志原因Flume从1.10版本开始,使用Log4j 2.x替换Log4j 1.x版本,使用log4j2.xml替换log4j.properties。因为日志文件的修改了,即便使用-Dflume.root.logger=INFO,console参数也无法正常在控制台输出数据,只能查看flume.log日志文件中的数据。那flume1.10及以上版本怎么样才能像以前版本正常在控制台打印输出数据,目前有2种方法可以参考。原创 2024-08-06 09:26:34 · 196 阅读 · 0 评论 -
Flume(七)之Spooling Directory Source
监听一个文件夹下新产生的文件,并读取内容,发至 channel。使用该 Source 需要注意两点:第一个是拷贝到 spool 目录下的文件不可以再打开编辑,第二个是 spool 目录下不可包含相应的子目录。由于该Source可靠性和稳定性较好,被不少公司采用。Spooling Directory Source用于监听指定的目录,如果目录中有新的文件,那么会自动收集新文件中的数据。注意,被收集过的文件会自动的添加一个后缀。.COMPLETED。vim test.logs 输入内容。原创 2024-08-06 09:20:05 · 187 阅读 · 0 评论 -
Flume(六) 配置错误Error: Could not find or load main class org.apache.flume.tools.GetJavaProperty
flume-ng 启动时发现Error: Could not find or load main class org.apache.flume.tools.GetJavaProperty的解决办法。原创 2024-08-05 21:23:48 · 141 阅读 · 0 评论 -
Flume(五) Exec Source
Exec Source会运行指定的命令,然后收集这个命令的执行结果。可以利用这个Source来完成部分场景的监控,例如对方是否有返回,文件是否有新增等, 适用于监控一个实时追加的文件,但不能保证数据不丢失;举例:要实时监听test.log文件的变化,如果文件有变化,要实时指导。编辑配置文件添加如下内容。会发现监控到了日志的变化。原创 2024-08-05 21:19:06 · 230 阅读 · 0 评论 -
Flume(四) AVRO Source
AVRO Source会监听指定的端口,接收其他节点传过来的被AVRO序列化之后的数据。AVRO Source结合AVRO Sink可以实现更多的流动模型/拓扑结构,例如多级流动、扇入流动、扇出流动等。发送文件test.txt数据序列化给flume,指定主机名m1,端口号4141,文件名test.txt。注意bind要填写主机名或ip。在另一个目录中编辑一个文件。原创 2024-08-05 18:26:33 · 452 阅读 · 0 评论 -
Flume(三)流动模型
在单个 Agent 内由单个 Source, Channel, Sink 建立一个单一的数据流模型,如下图所示,整个数据流为 Web Server --> Source --> Channel --> Sink --> HDFS。原创 2024-08-04 22:03:44 · 186 阅读 · 0 评论 -
flume (二)安装
flume安装及第一个列子原创 2024-07-30 22:12:42 · 318 阅读 · 0 评论 -
Flume(一)介绍
它可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http等。通过配置不同的Source,Flume可以实现对不同数据源的支持。采集、聚合和传输软件。Channel:Channel是Flume中的缓存组件,用于存储从Source接收到的数据,直到这些数据被Sink组件消费掉。Sink:Sink是Flume中的输出组件,负责将Channel中的数据发送到指定的目的地。原创 2024-08-04 21:27:28 · 337 阅读 · 0 评论