- 浏览: 218852 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (114)
- hbase (3)
- akka (7)
- hdfs (6)
- mapreduce (1)
- hive (0)
- zookeeper (8)
- storm (0)
- geese (0)
- leaf (0)
- stormbase (0)
- scala (2)
- oozie (11)
- zeromq (1)
- netty (3)
- mongodb (0)
- sqoop (2)
- flume (3)
- mahout (1)
- redis (0)
- lucene (1)
- solr (1)
- ganglia (3)
- 分布式理论 (2)
- hadoop (42)
- others (14)
- mq (1)
- clojure (3)
- flume ng (1)
- linux (1)
- esper (0)
最新评论
-
javalogo:
[b][i][u]引用[list]
[*][*][flash= ...
什么是Flume -
leibnitz:
what are they meanings
Hadoop Ganglia Metric Item -
di1984HIT:
没用过啊。
akka 介绍-Actor 基础 -
di1984HIT:
写的不错。
Hadoop管理-集群维护 -
developerinit:
很好,基本上介绍了
什么是Flume
(说明,名词对应解释 源-Source,接收器-Sink,通道-Channel)
配置
设置代理
Flume代理配置存储在本地配置文件。这是一个文本文件格式,是Java属性文件格式。在相同的配置文件,可以指定一个或多个代理的配置。配置文件包括每个源,接收器和通道,把它们连接在一起,形成数据流。
配置单个组件
流中每个组件(源,接收器或通道)都有名称,类型,和一组特定实例的属性。例如,Avro源需要一个接收数据的主机名(或IP地址)和端口号。一个内存通道可以有最大队列大小(“能力”),HDFS的Sink需要知道文件系统的URI,路径创建文件,文件的创建频率(“hdfs.rollInterval”)等,所有这些组件的属性需要设置在Flume代理的属性文件。
组合组件
代理需要知道如何加载各个组件以及它们是如何连接,以构成流。这是通过列出的源,接收器及通道的名称,然后指定每个接收器和源的连接通道。例如,流定义,Avro源avroWeb 到HDFS接收器hdfs-cluster1,通过JDBC通道jdbc-channel。该配置文件将包含这些组件,jdbc-channel通道作为avroWeb源和hdfs-cluster接收器共享存在。
flume-ng 命令行参数
Usage: ./flume-ng <command> [options]... commands: help display this help text agent run a Flume agent avro-client run an avro Flume client 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 -Dproperty=value sets a JDK system property value agent options: --conf-file,-f specify a config file (required) --name,-n the name of this agent (required) --help,-h display help text avro-client options: --host,-H <host> hostname to which events will be sent (required) --port,-p <port> port of the avro source (required) --filename,-F <file> text file to stream to avro source [default: std input] --headerFile,-R <file> headerFile containing headers as key/value pairs on each new line --help,-h display help text Note that if <conf> directory is specified, then it is always included first in the classpath.
定义流
启动代理
代理是通过使用在bin目录下的shell脚本flume-ng。你需要在命令行上指定的代理的名称和配置文件
$ bin/flume-ng agent -n foo -f conf/flume-conf.properties.template |
数据摄取
Flume支持摄取外部数据源的数量的机制。
RPC
Avro客户端包含在Flume发行版本中,可以发送一个给定的文件给Flume,Avro 源使用AVRO RPC机制。
$ bin/flume-ng avro-client -H localhost -p 41414 -F /usr/logs/log.10 |
上面的命令,将要发送/usr/logs/log.10到Flume Source(监听在41414端口)
执行命令
还有一个exec执行一个给定的命令获得输出的源。一个单一的输出,即“line”。回车('\ R')或换行符('\ N'),或两者一起的文本。Flume不支持tail做为一个源,不过可以通过exec tail。
网络流
Flume支持以下的机制,从流行的日志流类型读取数据
1)Avro
2)Syslog
3)Netcat
Flume部署种类
1)多代理流程
2)合并
3)多路复用流
配置
Flume代理配置读取一个文件,类似于一个Java属性格式文件。
定义流
在一个单一的代理定义的流,你需要通过一个通道的来源和接收器链接。你需要列出源,接收器和通道,为给定的代理,然后指向源和接收器及通道。一个源的实例可以指定多个通道,但只能指定一个接收器实例通道。格式如下:
#List the sources, sinks and channels for the agent <agent>.sources = <Source> <agent>.sinks = <Sink> <agent>.channels = <Channel1> <Channel2>
#set channel for source <agent>.sources.<Source>.channels = <Channel1> <Channel2> ...
#set channel for sink <agent>.sinks.<Sink>.channel = <Channel1> |
例如一个代理名为weblog-agent,外部通过avro客户端,并且发送数据通过内存通道给hdfs。在配置文件weblog.config的可能看起来像这样:
weblog-agent.sources = avro-AppSrv-source weblog-agent.sinks = hdfs-Cluster1-sink weblog-agent.channels = mem-channel-1
#set channel for source weblog-agent.sources.avro-AppSrv-source.channels = mem-channel-1
#set channel for sink weblog-agent.sinks.hdfs-Cluster1-sink.channel = mem-channel-1 |
这将使事件流从avro-AppSrv-source到hdfs-Cluster1-sink通过内存通道mem-channel-1。当代理开始weblog.config作为其配置文件,它会实例化流。
配置单个组件
定义流之后,你需要设置每个源,接收器和通道的属性。可以分别设定组件的属性值。
#Properties for sources <agent>.sources.<Source>.<someProperty> = <someValue> ..
#Properties for channels <agent>.channel.<Channel>.<someProperty> = <someValue> ..
#Properties for sinks <agent>.sources.<Sink>.<someProperty> = <someValue> |
“type”属性必须为每个组件设置,以了解它需要什么样的对象。每个源,接收器和通道类型有其自己的一套,它所需的性能,以实现预期的功能。所有这些,必须根据需要设置。在前面的例子中,我们拿到从hdfs-Cluster1-sink中的流到HDFS,通过内存通道mem-channel-1的avro-AppSrv-source源。下面是一个例子,显示了这些组件的配置。
weblog-agent.sources = avro-AppSrv-source weblog-agent.sinks = hdfs-Cluster1-sink weblog-agent.channels = mem-channel-1
#set channel for sources, sinks ..
#properties of avro-AppSrv-source weblog-agent.sources.avro-AppSrv-source.type = avro weblog-agent.sources.avro-AppSrv-source.bind = localhost weblog-agent.sources.avro-AppSrv-source.port = 10000
#properties of mem-channel-1 weblog-agent.channels.mem-channel-1.type = memory weblog-agent.channels.mem-channel-1.capacity = 1000 weblog-agent.channels.mem-channel-1.transactionCapacity = 100
#properties of hdfs-Cluster1-sink weblog-agent.sinks.hdfs-Cluster1-sink.type = hdfs weblog-agent.sinks.hdfs-Cluster1-sink.hdfs.path = hdfs://namenode/flume/webdata/ … |
在代理添加多个流
单个Flume代理可以包含几个独立的流。你可以在一个配置文件中列出多个源,接收器和通道。这些组件可以连接形成多个流。
#List the sources, sinks and channels for the agent <agent>.sources = <Source1> <Source2> <agent>.sinks = <Sink1> <Sink2> <agent>.channels = <Channel1> <Channel2> |
那么你就可以连接源和接收器到其相应的通道,设置两个不同的流。例如,如果您需要设置一个weblog代理两个流,一个从外部Avro客户端到HDFS,另外一个是tail的输出到Avro接收器,然后在这里是做一个配置:
#List the sources, sinks and channels in the agent weblog-agent.sources = avro-AppSrv-source1 exec-tail-source2 weblog-agent.sinks = hdfs-Cluster1-sink1 avro-forward-sink2 weblog-agent.channels = mem-channel-1 jdbc-channel-2
## Flow-1 configuration weblog-agent.sources.avro-AppSrv-source1.channels = mem-channel-1 weblog-agent.sinks.hdfs-Cluster1-sink1.channel = mem-channel-1
## Flow-2 configuration weblog-agent.sources.exec-tail-source2.channels = jdbc-channel-2 weblog-agent.sinks.avro-forward-sink2.channel = jdbc-channel-2 |
配置多代理流程
设置一个多层的流,你需要有一个指向下一跳avro源的第一跳的avro 接收器。这将导致第一Flume代理转发事件到下一个Flume代理。例如,如果您定期发送的文件,每个事件(1文件)AVRO客户端使用本地Flume代理,那么这个当地的代理可以转发到另一个有存储的代理。
## weblog agent config
#List sources, sinks and channels in the agent weblog-agent.sources = avro-AppSrv-source weblog-agent.sinks = avro-forward-sink weblog-agent.channels = jdbc-channel
#define the flow weblog-agent.sources.avro-AppSrv-source.channels = jdbc-channel weblog-agent.sinks.avro-forward-sink.channel = jdbc-channel
#avro sink properties weblog-agent.sources.avro-forward-sink.type = avro weblog-agent.sources.avro-forward-sink.hostname = 10.1.1.100 weblog-agent.sources.avro-forward-sink.port = 10000
#configure other pieces ... |
## hdfs-agent config
#List sources, sinks and channels in the agent hdfs-agent.sources = avro-collection-source hdfs-agent.sinks = hdfs-sink hdfs-agent.channels = mem-channel
#define the flow hdfs-agent.sources.avro-collection-source.channels = mem-channel hdfs-agent.sinks.hdfs-sink.channel = mem-channel
#avro source properties hdfs-agent.sources.avro-collection-source.type = avro hdfs-agent.sources.avro-collection-source.bind = 10.1.1.100 hdfs-agent.sources.avro-collection-source.port = 10000
#configure other pieces ... |
这里我们连接从weblog-agent的avro-forward-sink 到hdfs-agent的avro-collection-source收集源。最终结果从外部源的appserver最终存储在HDFS的事件。
扇出流
Flume支持扇出流从一个源到多个通道。有两种模式的扇出,复制和复用。在复制流的事件被发送到所有的配置通道。在复用的情况下,事件被发送到合格的渠道只有一个子集。煽出流,需要指定源和煽出通道的规则。这是通过添加一个通道“选择”,可以复制或复。再进一步指定选择的规则,如果它是一个多路。如果你不指定一个选择,则默认情况下它复制。
#List the sources, sinks and channels for the agent <agent>.sources = <Source1> <agent>.sinks = <Sink1> <Sink2> <agent>.channels = <Channel1> <Channel2>
#set list of channels for source (separated by space) <agent>.sources.<Source1>.channels = <Channel1> <Channel2>
#set channel for sinks <agent>.sinks.<Sink1>.channel = <Channel1> <agent>.sinks.<Sink2>.channel = <Channel2>
<agent>.sources.<Source1>.selector.type = replicating |
复用的选择集的属性进一步分叉。这需要指定一个事件属性映射到一组通道。选择配置属性中的每个事件头检查。如果指定的值相匹配,那么该事件被发送到所有的通道映射到该值。如果没有匹配,那么该事件被发送到设置为默认配置的通道。
# Mapping for multiplexing selector <agent>.sources.<Source1>.selector.type = multiplexing <agent>.sources.<Source1>.selector.header = <someHeader> <agent>.sources.<Source1>.selector.mapping.<Value1> = <Channel1> <agent>.sources.<Source1>.selector.mapping.<Value2> = <Channel1> <Channel2> <agent>.sources.<Source1>.selector.mapping.<Value3> = <Channel2> ... <agent>.sources.<Source1>.selector.default = <Channel2> |
映射允许每个值通道可以重叠。默认值可以包含任意数量的通道。下面的示例中有一个单一的流复用两条路径。代理有一个单一的avro源和连接道两个接收器的两个通道。
#List the sources, sinks and channels in the agent weblog-agent.sources = avro-AppSrv-source1 weblog-agent.sinks = hdfs-Cluster1-sink1 avro-forward-sink2 weblog-agent.channels = mem-channel-1 jdbc-channel-2 # set channels for source weblog-agent.sources.avro-AppSrv-source1.channels = mem-channel-1 jdbc-channel-2
#set channel for sinks weblog-agent.sinks.hdfs-Cluster1-sink1.channel = mem-channel-1 weblog-agent.sinks.avro-forward-sink2.channel = jdbc-channel-2
# weblog-agent.sources.avro-AppSrv-source1.selector.type = multiplexing weblog-agent.sources.avro-AppSrv-source1.selector.header = State weblog-agent.sources.avro-AppSrv-source1.selector.mapping.CA = mem-channel-1 weblog-agent.sources.avro-AppSrv-source1.selector.mapping.AZ = jdbc-channel-2 weblog-agent.sources.avro-AppSrv-source1.selector.mapping.NY = mem-channel-1 jdbc-channel-2 weblog-agent.sources.avro-AppSrv-source1.selector.default = mem-channel-1 |
“State”作为Header的选择检查。如果值是“CA”,然后将其发送到mem-channel-1,如果它的“AZ”的,那么jdbc-channel-2,如果它的“NY”那么发到这两个。如果“State”头未设置或不匹配的任何三个,然后去默认的mem-channel-1通道。
Flume 源(Source)
Avro 源
Avro端口监听并接收来自外部的Avro客户流的事件。当内置AvroSink另一个(前跳)Flume代理,它可以创建分层集合配对拓扑。
Property Name |
Default |
Description |
type |
- |
The component type name, needs to be avro |
bind |
- |
hostname or IP address to listen on |
port |
- |
Port # to bind to |
Exec 源
此源启动运行一个给定的Unix命令,预计这一过程中不断产生标准输出(stderr被简单地丢弃,除非logStdErr= TRUE)上的数据。如果因任何原因的进程退出时,源也退出,并不会产生任何进一步的数据。
Property Name |
Default |
Description |
type |
- |
The component type name, needs to be exec |
command |
- |
The command to execute |
restartThrottle |
10000 |
Amount of time (in millis) to wait before attempting a restart |
restart |
false |
Whether the executed cmd should be restarted if it dies |
logStdErr |
false |
Whether the command’s stderr should be logged |
备注: 在ExecSource不能保证,如果有一个失败的放入到通道的事件,客户也知道。在这种情况下,数据将丢失。 |
例,
exec-agent.sources = tail exec-agent.channels = memoryChannel-1 exec-agent.sinks = logger
exec-agent.sources.tail.type = exec exec-agent.sources.tail.command = tail -f /var/log/secure |
Property Name |
Default |
Description |
type |
- |
The component type name, needs to be netcat |
bind |
- |
Host name or IP address to bind to |
port |
- |
Port # to bind to |
max-line-length |
512 |
Max line length per event body (in bytes) |
Property Name |
Default |
Description |
type |
- |
The component type name, needs to be seq |
Syslog 源
读取syslog数据,并生成Flume事件。 UDP源将作为一个单一的事件的整个消息。 TCP源回车(\ n)来分隔的字符串创建一个新的事件。
Syslog TCP
Property Name |
Default |
Description |
type |
- |
The component type name, needs to be syslogtcp |
host |
- |
Host name or IP address to bind to |
port |
- |
Port # to bind to |
例如, a syslog TCP source:
syslog-agent.sources = syslog syslog-agent.channels = memoryChannel-1 syslog-agent.sinks = logger
syslog-agent.sources.syslog.type = syslogtcp syslog-agent.sources.syslog.port = 5140 syslog-agent.sources.syslog.host = localhost |
Syslog UDP
Property Name |
Default |
Description |
type |
- |
The component type name, needs to be syslogudp |
host |
- |
Host name or IP address to bind to |
port |
- |
Port # to bind to |
例如, a syslog UDP source:
syslog-agent.sources = syslog syslog-agent.channels = memoryChannel-1 syslog-agent.sinks = logger
syslog-agent.sources.syslog.type = syslogudp syslog-agent.sources.syslog.port = 5140 syslog-agent.sources.syslog.host = localhost |
Avro Legacy
Property Name |
Default |
Description |
type |
- |
The component type name, needs to be org.apache.flume.source.avroLegacy.AvroLegacySource |
host |
- |
The hostname or IP address to bind to |
port |
- |
The port # to listen on |
Thrift Legacy
Property Name |
Default |
Description |
type |
- |
The component type name, needs to be org.apache.source.thriftLegacy.ThriftLegacySource |
host |
- |
The hostname or IP address to bind to |
port |
- |
The port # to listen on |
注:Flume1.x中的可靠性语义不同的是从0.9.x.端到端或DFO模式的0.9.x版本的代理不会被遗留源支持。 0.9.x版本唯一支持的模式是Best Effort。 |
%{host} |
host name stored in event header |
%t |
Unix time in milliseconds
|
%a |
locale’s short weekday name (Mon, Tue, …) |
%A |
locale’s full weekday name (Monday, Tuesday, …) |
%b |
locale’s short month name (Jan, Feb,…) |
%B |
locale’s long month name (January, February,…) |
%c |
locale’s date and time (Thu Mar 3 23:05:25 2005) |
%d |
day of month (01) |
%D |
date; same as %m/%d/%y |
%H |
hour (00..23) |
%I |
hour (01..12) |
%j |
day of year (001..366) |
%k |
hour ( 0..23) |
%m |
month (01..12) |
%M |
minute (00..59) |
%P |
locale’s equivalent of am or pm |
%s |
seconds since 1970-01-01 00:00:00 UTC |
%S |
second (00..59) |
%y |
last two digits of year (00..99) |
%Y |
year (2010) |
%z |
+hhmm numeric timezone (for example, -0400) |
使用中的文件将有指定扩展名,以".tmp"结尾。一旦文件被关闭,该扩展被删除。这使得不包括部分完成的文件在该目录中。
Name |
Default |
Description |
type |
- |
The component type name, needs to be hdfs |
hdfs.path |
- |
HDFS directory path (eg hdfs://namenode/flume/webdata/) |
hdfs.filePrefix |
FlumeData |
Name prefixed to files created by Flume in hdfs directory |
hdfs.rollInterval |
30 |
Number of seconds to wait before rolling current file |
hdfs.rollSize |
1024 |
File size to trigger roll (in bytes) |
hdfs.rollCount |
10 |
Number of events written to file before it rolled |
hdfs.batchSize |
1 |
number of events written to file before it flushed to HDFS |
hdfs.txnEventMax |
100 |
|
hdfs.codeC |
- |
Compression codec. one of following : gzip, bzip2, lzo, snappy |
hdfs.fileType |
SequenceFile |
File format - currently SequenceFile or DataStream |
hdfs.maxOpenFiles |
5000 |
|
hdfs.writeFormat |
- |
“Text” or “Writable” |
hdfs.appendTimeout |
1000 |
|
hdfs.callTimeout |
5000 |
|
hdfs.threadsPoolSize |
10 |
|
hdfs.kerberosPrincipal |
“” |
Kerberos user principal for accessing secure HDFS |
hdfs.kerberosKeytab |
“” |
Kerberos keytab for accessing secure HDFS |
Logger sink
INFO级别的日志事件。通常有用的测试/调试目的。
type |
- |
The component type name, needs to be logger |
Avro
avro支持Flume分层。Flume事件发送到sink通过avro事件发送到配置的主机名/端口对。这些事件可以批量传输到通道。
Property Name |
Default |
Description |
type |
- |
The component type name, needs to be avro |
hostname |
- |
The hostname or IP address to bind to |
port |
- |
The port # to listen on |
batch-size |
100 |
number of event to batch together for send. |
The IRC sink takes messages from attached channel and relays those to configured IRC destinations.
Property Name |
Default |
Description |
type |
- |
The component type name, needs to be irc |
hostname |
- |
The hostname or IP address to connect to |
port |
6667 |
The port number of remote host to connect |
nick |
- |
Nick name |
user |
- |
User name |
password |
- |
User password |
chan |
- |
channel |
name |
|
|
splitlines |
- |
(boolean) |
splitchars |
\n |
line separator (if you were to enter the default value into the config file, the you would need to escape the backslash, like this: \\n) |
File Role
Property Name |
Default |
Description |
type |
- |
The component type name, needs to be file_roll |
sink.directory |
- |
|
sink.rollInterval |
30 |
|
Property Name |
Default |
Description |
type |
- |
The component type name, needs to be null |
自定义Sink
自定义接收器是你自己的Sink接口实现。自定义Sink和它的依赖必须包含在代理中的classpath。自定义Sink的类型是其FQCN。
Flume通道
通道是一个仓库,事件存储在上面。源通过通道添加事件,接收器通过通道取事件。
内存通道
事件存储在一个可配置的最大尺寸在内存中的队列。适用场景:需要更高的吞吐量,代理出现故障后数据丢失的情况。
Property Name |
Default |
Description |
type |
- |
The component type name, needs to be memory |
capacity |
100 |
The max number of events stored in the channel |
transactionCapacity |
100 |
The max number of events stored in the channel per transaction |
keep-alive |
3 |
Timeout in seconds for adding or removing an event |
JDBC通道
事件存储在数据库。目前的JDBC通道支持嵌入式Derby。这是一个持久的理想的地方,可恢复是很主要的特性。
Property Name |
Default |
Description |
type |
- |
The component type name, needs to be jdbc |
db.type |
DERBY |
Database vendor, needs to be DERBY. |
driver.class |
org.apache.derby.jdbc.EmbeddedDriver |
Class for vendors JDBC driver |
driver.url |
(constructed from other properties) |
JDBC connection URL |
db.username |
sa |
User id for db connection |
db.password |
|
password for db connection |
connection.properties.file |
- |
JDBC Connection property file path |
create.schema |
true |
If true, then creates db schema if not there |
create.index |
true |
Create indexes to speed up lookups |
create.foreignkey |
true |
|
transaction.isolation |
READ_COMMITTED |
Isolation level for db session READ_UNCOMMITTED, READ_COMMITTED, SERIALIZABLE, REPEATABLE_READ |
maximum.connections |
10 |
Max connections allowed to db |
maximum.capacity |
0 (unlimited) |
Max number of events in the channel |
sysprop.* |
|
DB Vendor specific properties |
sysprop.user.home |
|
Home path to store embedded Derby database |
Property Name |
Default |
Description |
type |
- |
The component type name, needs to be org.apache.flume.channel.recoverable.memory.RecoverableMemoryChannel |
wal.dataDir |
(${user.home}/.flume/recoverable-memory-channel |
|
wal.rollSize |
(0x04000000) |
Max size (in bytes) of a single file before we roll |
wal.minRetentionPeriod |
300000 |
Min amount of time (in millis) to keep a log |
wal.workerInterval |
60000 |
How often (in millis) the background worker checks for old logs |
wal.maxLogsSize |
(0x20000000) |
Total amt (in bytes) of logs to keep, excluding the current log |
文件通道
NOTE: 目前还不可用
Property Name |
Default |
Description |
type |
- |
The component type name, needs to be org.apache.flume.channel.file.FileChannel |
备注: 仅仅用来测试目的,不是在生产环境中使用。
Property Name |
Default |
Description |
type |
- |
The component type name, needs to be org.apache.flume.channel.PseudoTxnMemoryChannel |
capacity |
50 |
The max number of events stored in the channel |
keep-alive |
3 |
Timeout in seconds for adding or removing an event |
评论
例如 收集数据我通过./flume-ng avro-client -F filename -H host1 ...
然后我再host1上面通过agent,源以source = avro的方式获取,sink type为FILL_ROLL的方式,将client中获取的内容写入到host1的文件中,如果只是一次性取文件内容没有问题,可是增量的内容应该怎么取呢?
avro-client 进程只执行一次就退出了,没有实时监听的程序吗?
主要是需要适应我们的rpc和分布式文件系统~
要尝试一下日志收集。
我按照你最上面那个avro发送/usr/logs/log.10到Flume Source的过程来做。
想问下你执行后发送的/usr/logs/log.10去到哪个目录下了?
我是在同一台机子上做的操作。
相关推荐
Flumeng简介 Apache Flume是从不同数据源收集、聚合、传输大量数据、日志到数据中心的分布式系统,具有可靠、可伸缩、可定制、高可用、高性能等明显优点。其主要特点有:声明式配置,可动态更新;提供上下文路由,...
Flume-NG 安装与配置指南 Flume-NG 是一个分布式日志收集系统,能够从各种数据源中实时采集数据,并将其传输到集中式存储系统中。本文将指导您完成 Flume-NG 的安装和基本配置。 安装 Flume-NG 1. 先决条件:...
### Flume NG 分享资料详解 #### Flume NG 概述 Flume NG 是一个分布式、可靠且可用的服务,用于高效地收集、聚合并移动大量的日志数据。它具有简单而灵活的架构,基于流式数据流。Flume NG 非常健壮且能够容忍...
FlumeNG是Apache Flume的一个分支版本,旨在通过重写和重构来解决现有版本中的一些已知问题和限制。Flume是Cloudera开发的一个分布式、可靠且可用的系统,用于有效地收集、聚合和移动大量日志数据。它的主要用途是将...
一、Flume-ng 安装与配置 首先,需要下载 Flume-ng 并解压到指定目录。然后,需要设置环境变量,新建 FLUME_HOME 变量,填写 Flume 安装目录。接着,需要编辑系统变量 path,追加 %FLUME_HOME%\conf; %FLUME_HOME%\...
`Mvn Flume NG SDK` 是一个用于Apache Flume集成开发的重要工具,它基于Maven构建系统,使得在Java环境中开发、管理和部署Flume插件变得更加便捷。Apache Flume是一款高度可配置的数据收集系统,广泛应用于日志聚合...
- **数据库兼容性**:Flume-ng-sql-source通常需要JDBC驱动来连接各种类型的SQL数据库,因此需要确保正确安装并配置了相应的驱动。 - **查询定制**:用户可以编写自定义SQL查询来获取所需的数据,也可以根据时间戳...
在实际应用中,用户可以根据业务需求配置Flume NG,例如设置多个数据源来收集不同来源的数据,利用不同的通道类型保证数据安全,最后通过接收器将数据写入Hadoop集群进行进一步的分析。同时,Flume NG还可以与其他...
要使用flume-ng-sql-source,首先需要在Flume配置文件中定义一个Source,然后配置相关的数据库连接信息,包括JDBC驱动、URL、用户名和密码,以及SQL查询语句。配置完成后,Flume将按照设定的间隔执行SQL查询,并将...
"flume-ng-1.6.0-cdh5.5.0.tar.gz" 是 Apache Flume 的一个特定版本,具体来说是 "Next Generation" (ng) 版本的 1.6.0,与 Cloudera Data Hub (CDH) 5.5.0 发行版兼容。CDH 是一个包含多个开源大数据组件的商业发行...
在本例中,我们使用了 flume-ng 命令来启动 Flume,指定了 Agent 的名称为 a1,配置文件路径为 conf,配置文件名称为 flume-client.properties。 六、Flume 的集群配置 在 Flume 的集群配置中,需要将 Flume 的...
本文将深入探讨`flume-ng-1.5.0-cdh5.3.6.tar.gz`压缩包中的核心概念、配置方法及实际应用。 **Flume NG简介** Flume NG是Flume的升级版,它引入了新的架构,增强了可扩展性和灵活性。Flume NG的主要任务是收集、...
《Flume NG与Elasticsearch 6.5.4集成详解》 Flume NG,全称为Apache Flume,是一款由Apache软件基金会开发的数据收集系统,主要用于日志聚合、监控和数据传输。它设计的目标是高效、可靠且易于扩展,特别适合...
在安装和配置Flume-ng-1.6.0-cdh5.7.0时,用户需要注意以下几点: 1. 确保系统环境满足CDH 5.7.0的硬件和软件要求。 2. 安装Java开发环境,因为Flume依赖Java运行。 3. 解压压缩包`apache-flume-1.6.0-cdh5.7.0-bin`...
1. **配置**:配置flumeng-kafka-plugin涉及到设置Flume代理的配置文件,包括Kafka服务器的地址、要消费或发布的主题、以及认证信息等。 2. **性能优化**:考虑到Flume和Kafka的吞吐量,我们可能需要调整缓冲区大小...
Flume NG相较于老版Flume,进行了重大改进,包括组件模型的重构、配置方式的简化以及性能的提升。 二、Flume NG 1.6.0-cdh5.12.0特性 1. **增强的稳定性**:1.6.0版本在CDH5.12.0环境下,针对集群环境做了优化,...
在实际使用中,配置Flume-ng-sql-source涉及到以下几个关键步骤: 1. **安装与依赖**:首先需要将flume-ng-sql-source-1.4.3.jar添加到Flume的类路径中,确保所有必要的JDBC驱动也在类路径内,因为这些驱动是连接...
`flume-ng-1.6.0-cdh5.10.1.tar.gz` 是一个针对Cloudera Distribution Including Apache Hadoop (CDH) 5.10.1 版本优化的Flume NG的打包文件,Flume NG是Flume的下一代版本,提供更先进的特性和性能。 Flume的核心...
- **Flume-ng**:作为数据收集器,其`Source`组件通常配置为`SpoolingDirectory`类型,用于监测指定目录下的日志文件变化。 - **Sink**:配置为`Kafka`类型,将监测到的日志文件推送到Kafka的特定Topic中。 2. **...
标题中的"flumeng for streaming spark"涉及到两个关键的开源技术:Flume和Spark Streaming。Flume是Apache软件基金会的一个项目,主要用于收集、聚合和移动大量日志数据,而Spark Streaming是Apache Spark的一个...