首页
动态
时间轴
归档
友链
关于
Search
1
Spark在Yarn模式下提交未找到驱动
10,718 阅读
2
Spark提交任务内存不足
10,296 阅读
3
Flink集群搭建--Yarn模式
9,806 阅读
4
Spark SQL函数总结
8,524 阅读
5
Flume应用--日志采集
7,206 阅读
日常
大数据
经验分享
技术总结
登录
Search
标签搜索
bigdata
Hive
Spark
hadoop
Flume
建站
Flink
linux
Mysql
sqoop
Yarn
摸鱼
羊毛
docker
VMware
图床
sql
function
清泓
累计撰写
39
篇文章
累计收到
---
条评论
首页
动态
后台
栏目
日常
大数据
经验分享
技术总结
页面
时间轴
归档
友链
关于
搜索到
4
篇
Flume
的结果
2022-06-05
Flume应用--日志采集
创建配置文件 我习惯将配置文件放在Flume安装目录下自建文件夹保存,这样方便后续的查找、使用。创建一个名称为logListen.conf的配置文件,配置相关内容。[root@master ~]# mkdir /usr/local/src/flume/job [root@master ~]# vi /usr/local/src/flume/job/logListen.conf //基本组件 a1.sources = s1 a1.sinks = k1 a1.channels = c1 //描述source a1.sources.s1.type = exec //使用exec时需要指定shell命令,对日志进行读取 a1.sources.s1.command = tail -f /usr/local/src/hadoop/logs/hadoop-root-datanode-master.log //描述sink a1.sinks.k1.type = hdfs a1.sinks.k1.hdfs.path = hdfs://master:9000/flume/%Y%m%d%H //hdfs路径 a1.sinks.k1.hdfs.filePerfix = database-log- //指定上传到hdfs文件名的前缀 a1.sinks.k1.hdfs.round = true //是否按照时间滚动文件夹(根据时间创建新文件夹) a1.sinks.k1.hdfs.roundValue = 1 //多长时间单位创建一个文件夹 a1.sinks.k1.hdfs.roundUnit = hour //重新定义时间单位 a1.sinks.k1.hdfs.useLocalTimeStamp = true //是否使用本地时间戳 a1.sinks.k1.hdfs.batchSize = 1000 //一个批次刷新到hdfs的event数量 a1.sinks.k1.hdfs.fileType = DataStream //设置文件类型,DataStream格式不会被压缩 a1.sinks.k1.hdfs.rollInterval = 600 //多长时间将临时文件滚动成一个新的文件 a1.sinks.k1.hdfs.rollSize = 1024 //当临时文件大小(byte)达到设置值时滚动成一个新的文件 a1.sinks.k1.hdfs.rollCount = 0 //设置临时文件的滚动与event的数量无关 a1.sinks.k1.hdfs.minBlockReplicas = 1 //写入hdfs文件块的最小副本数 //描述channel a1.channels.c1.type = memory //使用内存通道 a1.channels.c1.capacity = 1000 //存储在通道中的最大event数量 a1.channels.c1.transactionCapacity = 100 //一个事务中的最大事件数 //组件连接 a1.sources.s1.channels = c1 //指定agent a1的source(源)s1的通道为c1 a1.sinks.k1.channel = c1 //指定agent a1的sink(槽)k1的通道为c1,注意sink(槽)只能有一个通道,所以连接时为channel启动[root@master ~]# flume-ng agent -f /usr/local/src/flume/job/logListen.conf -n a1参数详解flume-ng flume启动命令agent 运行一个flume agent-f /usr/local/src/flume/job/logListen.conf 指定一个配置文件-n a1 agent名称(必填)
2022年06月05日
7,206 阅读
0 评论
1 点赞
2022-05-09
Flume配置参数详解
Flume配置参数详解 Flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。Flume架构对Flume进行配置需要先清楚Flume的架构{callout color="#f0ad4e"}AgentFlume以agent为最小的独立运行单位,一个Agent包含多个source、channel、sink和其他组件{/callout}{callout color="#4da9ef"}sourceflume提供多种source供用户进行选择,尽可能多的满足大部分日志采集的需求,常用的source的类型包括avro、exec、netcat、spooling-directory和syslog等。具体的使用范围和配置方法详见source.{/callout}{callout color="#e1ff00"}channelflume中的channel不如source和sink那么重要,但却是不可忽视的组成部分。常用的channel为memory-channel,同时也有其他类型的channel,如JDBC、file-channel、custom-channel等,详情见channel.{/callout}{callout color="#4defc7"}sinkflume的sink也有很多种,常用的包括avro、logger、HDFS、Hbase以及file-roll等,除此之外还有其他类型的sink,如thrift、IRC、custom等。具体的使用范围和使用方法详见sink.{/callout}SourcesFlume 中常用的 Source 有NetCat,Avro,Exec,Spooling Directory,也可以根据业务需要自定义Source,具体如下avro sourceavro可以监听和收集指定端口的日志,使用avro的source需要说明被监听的主机ip和端口号例子:agent1.sources = r1 #描述source agent1.sources.r1.type = avro (类型为avro source) agent1.sources.r1.bind = 0.0.0.0 (指定监听的主机ip.本机是0.0.0.0.) agent1.sources.r1.port = 16667 (指定监听的端口号)exec source可以通过指定的操作对日志进行读取,使用exec时需要指定shell命令,对日志进行读取例子:agent1.source = r2 #描述source agent1.sources.r2.type = exec agent1.sources.r2.command =tail -F /root/flume/log/event.txt (监听的文件的路径)Spooling-directory source可以读取文件夹里的日志,使用时指定一个文件夹,可以读取该文件夹中的所有文件,当出现新文件时会读取该文件并获取数据.需要注意的是该文件夹中的文件在读取过程中不能修改,同时文件名也不能修改。1、spoolDirectory是监控目录,不能为空,没有默认值。这个source不具有监控子目录的功能,不能递归监控。2、completedSuffix是文件读取完毕后给完成文件添加的标记后缀,默认是".COMPLETED";3、deletePolicy这是是否删除读取完毕的文件,默认是"never",就是不删除,目前只支持"never"和“IMMEDIATE”;4、fileHeader是否在event的Header中添加文件名,boolean类型, 默认false5、fileHeaderKey这是event的Header中的key,value是文件名6、batchSize这个是一次处理的记录数,默认是100;7、inputCharset编码方式,默认是"UTF-8";8、ignorePattern忽略符合条件的文件名9、trackerDirPath被处理文件元数据的存储目录,默认".flumespool"10、deserializerType将文件中的数据序列化成event的方式,默认是“LINE”---org.apache.flume.serialization.LineDeserializer11、deserializerContext这个主要用在Deserializer中设置编码方式outputCharset和文件每行最大长度maxLineLength。例子:agent1.sources = r3 #描述source agent1.sources.r3.type = spooldir agent1.sources.r3.spoolDir = /root/flume/log (监听的文件目录) agent1.sources.r3.fileHeader = trueNetCat source用来监听一个指定端口,并将接收到的数据的每一行转换为一个事件。例子: agent1.sources = r4 #描述source agent1.sources.r4.type = netcat (source类型) agent1.sources.r4.bind = 0.0.0.0 (指定绑定的ip或主机名) agent1.sources.r4.port = 16668 (指定绑定的端口号)HTTP source接受HTTP的GET和POST请求作为Flume的事件,其中GET方式应该只用于试验。type 类型,必须为"HTTP"port– 监听的端口bind 0.0.0.0 监听的主机名或iphandler org.apache.flume.source.http.JSONHandler处理器类,需要实现HTTPSourceHandler接口handler.* – 处理器的配置参数Selector.typeselector.* interceptors – interceptors.* enableSSL false 是否开启SSL,如果需要设置为true。注意,HTTP不支持SSLv3。excludeProtocols SSLv3 空格分隔的要排除的SSL/TLS协议。SSLv3总是被排除的。keystore 密钥库文件所在位置keystorePassword Keystore 密钥库密码例子:agent1.sources.r1.type = http agent1.sources.r1.port = 66666channel使用内存memory存储Memory Channel是使用内存来存储Event,使用内存的意味着数据传输速率会很快,但是当Agent挂掉后,存储在Channel中的数据将会丢失。例子:agent1.channels = c1 agent1.channels.c1.type = memory agent1.channels.c1.capacity = 100000 agent1.channels.c1.transactionCapacity = 100000使用文件file存储File Channel使用磁盘来存储Event,速率相对于Memory Channel较慢,但数据不会丢失。例子:agent1.channels = c1 agent1.channels.c1.type = file agent1.channels.c1.capacity = 100000 agent1.channels.c1.transactionCapacity = 100000sinkFlume常用Sinks有Log Sink,HDFS Sink,Avro Sink,Kafka Sink,当然也可以自定义Sinklogger sinklogger sink:将收集到的日志写到flume的log中例子:agent1.sinks = k1 agent2.sinks.k1.type = loggeravro sinkavro sink:可以将接受到的日志发送到指定端口,供级联agent的下一跳收集和接受日志,使用时需要指定目的ip和端口例子:agent1.sinks=k1 agent1.sinks.k2.type = avro agent1.sinks.k2.channel = c2 agent1.sinks.k2.hostname = hadoop03 (指定的主机名或ip) agent1.sinks.k2.port = 16666 (指定的端口号)file_roll sinkfile_roll sink:可以将一定时间内收集到的日志写到一个指定的文件中,具体过程为用户指定一个文件夹和一个周期,然后启动agent,这时该文件夹会产生一个文件将该周期内收集到的日志全部写进该文件内,直到下一个周期再次产生一个新文件继续写入,以此类推,周而复始。例子:agent1.sinks=k1 agent1.sinks.k1.type = file_roll agent1.sinks.k1.channel = c1 agent1.sinks.k1.sink.directory=/root/flumelog (指定文件所在目录的路径)hdfs sinkhdfs sink:将收集到的日志写入到新创建的文件中保存起来,存储路径为分布式的文件系统hdfs的路径,同时hdfs创建新文件的周期可以是时间,也可以是文件的大小,还可以是采集日志的条数配置参数说明:例子:agent1.sinks = k1 agent1.sinks.k1.type = hbase agent1.sinks.k1.table = flume agent1.sinks.k1.columnFamily=fl_conf agent1.sinks.k1.serializer=org.apache.flume.sink.hbase.RegexHbaseEventSerializerKafka Sink传输数据到Kafka中,需要注意Flume版本和Kafka版本的兼容性
2022年05月09日
2,050 阅读
0 评论
1 点赞
2022-05-09
Flume启动参数详解
Flume启动参数详解{lamp/}命令获取命令行输入 flume-ng --help 获取启动参数[root@GokouLuli999 ~]# flume-ng --help Usage: /usr/tools/flume/bin/flume-ng <command> [options]... commands: help display this help text agent run a Flume agent avro-client run an avro Flume client version show Flume version info global options: --conf,-c <conf> use configs in <conf> directory --classpath,-C <cp> append to the classpath --dryrun,-d do not actually start Flume, just print the command --plugins-path <dirs> colon-separated list of plugins.d directories. See the plugins.d section in the user guide for more details. Default: $FLUME_HOME/plugins.d -Dproperty=value sets a Java system property value -Xproperty=value sets a Java -X option agent options: --name,-n <name> the name of this agent (required) --conf-file,-f <file> specify a config file (required if -z missing) --zkConnString,-z <str> specify the ZooKeeper connection to use (required if -f missing) --zkBasePath,-p <path> specify the base path in ZooKeeper for agent configs --no-reload-conf do not reload config file if changed --help,-h display help text avro-client options: --rpcProps,-P <file> RPC client properties file with server connection params --host,-H <host> hostname to which events will be sent --port,-p <port> port of the avro source --dirname <dir> directory to stream to avro source --filename,-F <file> text file to stream to avro source (default: std input) --headerFile,-R <file> File containing event headers as key/value pairs on each new line --help,-h display help text Either --rpcProps or both --host and --port must be specified. Note that if <conf> directory is specified, then it is always included first in the classpath. root@ubuntu:/home/wutao# root@ubuntu:/home/wutao# flume-ng --help Error: Unknown or unspecified command '--help' Usage: /usr/tools/flume/bin/flume-ng <command> [options]... commands: help display this help text agent run a Flume agent avro-client run an avro Flume client version show Flume version info global options: --conf,-c <conf> use configs in <conf> directory --classpath,-C <cp> append to the classpath --dryrun,-d do not actually start Flume, just print the command --plugins-path <dirs> colon-separated list of plugins.d directories. See the plugins.d section in the user guide for more details. Default: $FLUME_HOME/plugins.d -Dproperty=value sets a Java system property value -Xproperty=value sets a Java -X option agent options: --name,-n <name> the name of this agent (required) --conf-file,-f <file> specify a config file (required if -z missing) --zkConnString,-z <str> specify the ZooKeeper connection to use (required if -f missing) --zkBasePath,-p <path> specify the base path in ZooKeeper for agent configs --no-reload-conf do not reload config file if changed --help,-h display help text avro-client options: --rpcProps,-P <file> RPC client properties file with server connection params --host,-H <host> hostname to which events will be sent --port,-p <port> port of the avro source --dirname <dir> directory to stream to avro source --filename,-F <file> text file to stream to avro source (default: std input) --headerFile,-R <file> File containing event headers as key/value pairs on each new line --help,-h display help text Either --rpcProps or both --host and --port must be specified. Note that if <conf> directory is specified, then it is always included first in the classpath.命令参数描述help帮助agent运行一个flume agentarvo-client运行一个Arvo Flume客户端version显示Flume版本全局选项参数描述--conf或-c 在目录使用配置文件。指定配置文件路径--classpath或-C 追加一个classpath--dryrun或-d不真正运行Agent,只打印命令信息--plugins-path 插件目录列表 默认$FLUME_HOME/plugins.d-Dproperty=value设置一个java系统属性值-Xproperty=value设置一个java-X的选项Agent选项参数描述--name或-n agent名称(必填)--conf-file或-f 指定一个配置文件(如果zk信息缺失,必填)--zkConnString或-z 指定一个zookeeper连接信息--zkBasePath或-p 指定一个基本路径给agent配置--no-reload-conf配置文件更新了不重新加载--help或-h帮助信息avro-client选项参数描述--rpcProps或-P rpc客户端连接参数的配置文件--host或-H Event所要发送的hostname--port或-p Avro Source的端口--dirname Avro Source流到达的目录--filename或-F Avro Source流到达的文件名--headerFile或-R 包含事件头的信息(每一行都是key/value键值对的格式)的文件--help或-h帮助信息
2022年05月09日
2,799 阅读
0 评论
0 点赞
2022-05-09
Flume基本使用
Flume基本使用{lamp/}Flume概述(一).Flume是什么 Flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。(二).Flume的特点 flume的数据流由事件(Event)贯穿始终。事件是Flume的基本数据单位,它携带日志数据(字节数组形式)并且携带有头信息,这些Event由Agent外部的Source生成,当Source捕获事件后会进行特定的格式化,然后Source会把事件推入(单个或多个)Channel中。你可以把Channel看作是一个缓冲区,它将保存事件直到Sink处理完该事件。Sink负责持久化日志或者把事件推向另一个Source。{callout color="#f0ad4e"}flume的可靠性 当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了三种级别的可靠性保障,从强到弱依次分别为:end-to-end(收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。),Store on failure(这也是scribe采用的策略,当数据接收方crash时,将数据写到本地,待恢复后,继续发送),Besteffort(数据发送到接收方后,不会进行确认)。{/callout}{callout color="#0aff33"}flume的可恢复性 还是靠Channel。推荐使用FileChannel,事件持久化在本地文件系统里(性能较差)。{/callout}(三).Flume的一些核心概念 Agent使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks。 Client生产数据,运行在一个独立的线程。 Source从Client收集数据,传递给Channel。 Sink从Channel收集数据,运行在一个独立线程。 Channel连接 sources 和 sinks ,这个有点像一个队列。 Events可以是日志记录、 avro 对象等。{card-default label="注意" width="100%"} 值得注意的是,Flume提供了大量内置的Source、Channel和Sink类型。不同类型的Source,Channel和Sink可以自由组合。组合方式基于用户设置的配置文件,非常灵活。比如:Channel可以把事件暂存在内存里,也可以持久化到本地硬盘上。Sink可以把日志写入HDFS, HBase,甚至是另外一个Source等等。Flume支持用户建立多级流,也就是说,多个agent可以协同工作,并且支持Fan-in、Fan-out、Contextual Routing、Backup Routes{/card-default}(四).Flume架构{callout color="#604def"}AgentFlume以agent为最小的独立运行单位,一个Agent包含多个source、channel、sink和其他组件{/callout}{callout color="#c4ef4d"}sourceflume提供多种source供用户进行选择,尽可能多的满足大部分日志采集的需求,常用的source的类型包括avro、exec、netcat、spooling-directory和syslog等。{/callout}{callout color="#ef4d4d"}channelflume中的channel不如source和sink那么重要,但却是不可忽视的组成部分。常用的channel为memory-channel,同时也有其他类型的channel,如JDBC、file-channel、custom-channel等。{/callout}{callout color="#4defe5"}sinkflume的sink也有很多种,常用的包括avro、logger、HDFS、Hbase以及file-roll等,除此之外还有其他类型的sink,如thrift、IRC、custom等。{/callout}{dotted startColor="#ff6c6c" endColor="#1989fa"/}Flume的安装与基本配置解压我的安装包在/usr/local/src/software下,安装目录我放在/usr/local/src下,具体命令如下:[root@master ~]# tar -zxvf /usr/local/src/software/apache-flume-1.7.0-bin.tar.gz -C /usr/local/src/为了方便后续使用,这里重命名目录[root@master ~]# mv /usr/local/src/apache-flume-1.7.0-bin /usr/local/src/flume配置环境变量环境变量配置的位置有多处,我这里配置当前用户可用[root@master ~]# vi /root/profile export FLUME_HOME=/usr/local/src/flume export PATH=$PATH:$FLUME_HOME/bin [root@master ~]# source /root/profile修改配置文件 flume需要修改的配置不多,更多是后续自定义需要监听的目录或端口的配置[root@master ~]# cd /usr/local/src/flume/conf [root@master conf]# mv flume-env.sh.template flume-env.sh [root@master conf]# vim flume-env.sh export JAVA_HOME=/usr/local/src/jdk8{dotted startColor="#ff6c6c" endColor="#1989fa"/}Flume的使用监听目录变化上传到HDFS创建配置文件创建配置文件,指定监听目录等信息。配置文件建议在flume安装目录下自建文件夹保存[root@master ~]# mkdir /usr/local/src/flume/job [root@master ~]# vi /usr/local/src/flume/job/test.conf# Name the components on this agent 命名组件 a1.sources = r1 #数据采集组件 a1.sinks = k1 #数据接收器组件 a1.channels = c1 #数据通道组件 # Describe/configure the source 配置(描述)监听源 a1.sources.r1.type = spooldir #spooldir(目录类型) a1.sources.r1.spoolDir = /root/logs #目录路径 a1.sources.r1.fileHeader= true #是否在header中添加完整的文件的完整信息 # Describe the sink 描述接收器 a1.sinks.k1.type = hdfs #输出到hdfs a1.sinks.k1.hdfs.path = /flume/events/%Y-%m-%d/ #文件保存路径 #控制文件夹,把10分钟之内的保存在一个文件夹中 a1.sinks.k1.hdfs.round = true #是否启用时间上的'舍弃' a1.sinks.k1.hdfs.roundValue=10 #时间上进行'舍弃'的值 a1.sinks.k1.hdfs.roundUnit = minute #时间上进行'舍弃'的单位 #描述文件迭代次数 满足其中一个条件则打开一个新的临时文件继续写入 a1.sinks.k1.hdfs.rollInterval = 3 #时隔多长将临时文件滚动成最终文件,单位为秒,如果设置为0,则表示关闭 a1.sinks.k1.hdfs.rollSize = 20 #当临时文件达到多少(单位:byte)时,滚动成目标文件,如果设置为0,则表示关闭 a1.sinks.k1.hdfs.rollCount = 5 #当event数据达到该数量时,将临时文件滚动成目标文件,如果设置为0.则表示关闭 a1.sinks.k1.hdfs.filePrefix = events- #保存数据的浅前缀名 a1.sinks.k1.hdfs.fileType = DataStream #文件格式,DataStream不会被压缩 a1.sinks.k1.hdfs.useLocalTimeStamp = true #是否使用当地时间 # Use a channel which buffers events in memory 使用内存通道缓冲事件 a1.channels.c1.type = memory #指定通道为内存 a1.channels.c1.capacity = 1000 #存储在通道内的最大容量 a1.channels.c1.transactionCapacity = 100 #从一个source中取或者传输到sink,每个事务中最大的事件数 # Bind the source and sink to the channel 将源和接收器绑定到通道 a1.sources.r1.channels = c1 #注意一个源可以有多个通道channels a1.sinks.k1.channel = c1{callout color="#ff0000"}更多配置信息参见 Flume配置参数详解 {/callout}这里监听的/root/logs目录.在这个目录创建的文件会被上传到hdfs的/flume/events/%Y-%m-%d/目录中启动[root@master flume]#bin/flume-ng agent -f job/test.conf -n a1 启动参数概述flume-ng flume启动器agent 运行一个flume agent(最小的独立运行单位,一个Agent包含多个source、channel、sink和其他组件)-f agent选项,指定一个配置文件(还有一种写法:--conf-file),此处为job目录下的test.conf-n agent名称 此处为a1{callout color="#b3ff00"}更多启动参数信息参见{/callout}
2022年05月09日
2,917 阅读
0 评论
1 点赞
首页
复制
搜索
前进
后退
重载网页