Flume 中文入门手冊
原文:https://cwiki.apache.org/confluence/display/FLUME/Getting+Started
什么是 Flume NG?
Flume NG 旨在比起 Flume OG 变得明显更简单。更小。更easy部署。在这样的情况下,我们不提交Flume NG 到 Flume OG 的后向兼容。当前。我们期待来自感兴趣測试Flume NG 正确性、易用性和与别的系统集成的可能性的人的反馈。
变了什么?
Flume NG (下一代)的实现中尽管保持了非常多原来的概念,但 与 Flume OG (原版) 还是有非常大的差别。假设你熟悉 Flume, h这些可能是你想知道的。
- 你仍会有 sources 和sinks ,他们还做相同的事情.
他们由 channels 连接.- Channels 可插入式的、命令持久的。
Flume NG ships with an in-memory channel for fast, but non-durable event delivery and a file-based channel for durable event delivery. ?
- Channels 可插入式的、命令持久的。
- 没有很多其它的逻辑或物理的节点。我们能够把全部的物理节点叫做 agents,agents 能够执行0到多个 sources 和 sinks。
- 没有 master 和 ZooKeeper 的依赖了。此时, Flume 执行于一个简单的基于文件配置的系统。
- 一切都是插件,一些面向终于用户的,一些面向工具和系统开发人员的。可插入组件包含 channels, sources, sinks, interceptors, sink processors, 和 event serializers.
获得 Flume NG
Flume在下载页面上有源代码包和二进制文件可用。假设你并不打算为Flume 创建 补丁,二进制文件可能是開始的最好方式。
从源代码中创建
要从源代码中创建,你须要git, Sun JDK 1.6, Apache Maven 3.x, 大约 90MB 的本地硬盘空间和网络连接。
1. 签出源代码
$ git clone https: //git-wip-us.apache.org/repos/asf/flume.git $ cd flume $ git checkout trunk |
2. 编译项目
Apache Flume 的创建须要比默认配置很多其它的内存。
我们推荐设置Maven的例如以下选项:
export MAVEN_OPTS= "-Xms512m |
# 创建代码和运行測试 (注意: 用 mvn install, 不是 mvn package , $ mvn install # ...或者不运行測试的安装 $ mvn install -DskipTests |
(请注意为编译成功 Flume 要求 Google Protocol Buffers 编译器在path 中。你能够依照这里的步骤下载安装它。 here.)
这些在 flume-ng-dist/target 中生成两种包.他们是:
- apache-flume-ng-dist-1.4.0-SNAPSHOT-bin.tar.gz - Flume 的二进制版, 待执行
- apache-flume-ng-dist-1.4.0-SNAPSHOT-src.tar.gz - 仅有源代码的 Flume 公布版
假设你是一个用户,仅仅想要执行 Flume, 你可能想要的是 -bin 版本号。复制一个、解压之,你就准备好用了。
$ cp flume-ng-dist/target/apache-flume- 1.4 . 0 -SNAPSHOT-bin.tar.gz $ tar -zxvf apache-flume- 1.4 . 0 -SNAPSHOT-bin.tar.gz $ cd apache-flume- 1.4 . 0 -SNAPSHOT-bin |
3.基于工作模板创建你的属性文件(或从头创建一个)
$ cp conf/flume-conf.properties.template conf/flume.conf |
4. (可选) 基于模板创建你的 flume-env.sh 文件(或从头创建一个)。
flume-ng 可运行文件通过在命令行中指定--conf/-c 在conf 文件夹中寻找一个名为 "flume-env.sh" 的文件。 一个使用 flume-env.sh 的样例是在开发你自己的如sources 和 sinks的 Flume NG组件时通过 JAVA_OPTS 指定debugging 或 profiling 选项。
$ cp conf/flume-env.sh.template conf/flume-env.sh |
5. 配置和执行Flume NG
在你配置完 Flume NG (见下),你能够用 bin/flume-ng
运行它. 这个脚本有一些參数和模式。
配置
Flume 用一个基于配置格式的 Java 属性文件。
当执行一个 agent时。须要你通过 -f <file> 选项(见上)的方式告诉 Flume 哪个文件要用。
这个文件可放在不论什么地方,可是从传统-和在未来-conf文件夹才是正确放置配置文件的地方。
让我们開始一个简单的样例. 复制粘贴这些到 conf/flume.conf
:
# 在 agent1上定义一个 叫做ch1的内存channelagent1.channels.ch1.type = memory # 在 agent1 上定义一个叫做avro-source1 的 Avro source 并告诉它 # 绑定到 0.0 . 0.0 : 41414 . agent1.sources.avro-source1.channels = ch1 agent1.sources.avro-source1.type = avro agent1.sources.avro-source1.bind = 0.0 . 0.0 agent1.sources.avro-source1.port = 41414 # 定义一个 logger sink ,记录它收到的全部事件 # 把它和在同一 channel 上的别的终端相连 agent1.sinks.log-sink1.channel = ch1 agent1.sinks.log-sink1.type = logger # 最后,既然我们已经定义了全部的组件,告诉agent1 我们想要激活 哪一个agent1.channels = ch1 agent1.sources = avro-source1 agent1.sinks = log-sink1 |
这是样例创建了一个内存channel(如,一个不可信或“最小效果”的传输),一个 Avro RPC source。和一个连接他们的日志sink. Avro source 接收的不论什么事件 被路由给 channel ch1并发送给日志sink。须要注意的是定义组件是配置 Flume 的第一半,他们必须被通过列在 <agent>.channels,
<agent>.sources
,
(和 sections. Multiple sources, sinks, 和 channels 也可能被列入,按空格分隔)激活。
要看很多其它细节,请看 org.apache.flume.conf.properties.PropertiesFileConfigurationProvider
类的 文档。.
这是一列此时已实现了的 sources, sinks, 和 channels。每一个插件有其自身的选项并须要配置属性,所以请 看文档(如今)。
组件 |
类型 |
描写叙述 |
实现类 |
---|---|---|---|
Channel |
memory |
内存中,快,非持久事件传输 |
MemoryChannel |
Channel |
file |
一个 reading, writing, mapping, 和 manipulating 一个文件 的 channel |
FileChannel |
Channel |
jdbc |
JDBC-based, durable event transport (Derby-based) |
JDBCChannel |
Channel |
recoverablememory |
一个用本地文件系统做存储的非持久 channel 实现 |
RecoverableMemoryChannel |
Channel |
org.apache.flume.channel.PseudoTxnMemoryChannel |
主要用作測试,不是生产用的 |
PseudoTxnMemoryChannel |
Channel |
(custom type as FQCN) |
你自己的 Channel 实现 |
(custom FQCN) |
Source |
avro |
Avro Netty RPC event source |
AvroSource |
Source |
exec |
Execute a long-lived Unix process and read from stdout |
ExecSource |
Source |
netcat |
Netcat style TCP event source |
NetcatSource |
Source |
seq |
Monotonically incrementing sequence generator event source |
SequenceGeneratorSource |
Source |
org.apache.flume.source.StressSource |
主要用作測试,不是生产用的。Serves as a continuous source of events where each event has the same payload. The payload consists |
org.apache.flume.source.StressSource |
Source |
syslogtcp |
SyslogTcpSource |
|
Source |
syslogudp |
SyslogUDPSource |
|
Source |
org.apache.flume.source.avroLegacy.AvroLegacySource |
AvroLegacySource |
|
Source |
org.apache.flume.source.thriftLegacy.ThriftLegacySource |
ThriftLegacySource |
|
Source |
org.apache.flume.source.scribe.ScribeSource |
ScribeSource |
|
Source |
(custom type as FQCN) |
你自己的 Source 实现 |
(custom FQCN) |
Sink |
hdfs |
Writes all events received to HDFS (with support for rolling, bucketing, HDFS-200 append, and more) |
HDFSEventSink |
Sink |
org.apache.flume.sink.hbase.HBaseSink |
A simple sink that reads events from a channel and writes them to HBase. |
org.apache.flume.sink.hbase.HBaseSink |
Sink |
org.apache.flume.sink.hbase.AsyncHBaseSink |
org.apache.flume.sink.hbase.AsyncHBaseSink |
|
Sink |
logger |
Log events at INFO level via configured logging subsystem (log4j by default) |
LoggerSink |
Sink |
avro |
Sink that invokes a pre-defined Avro protocol method for all events it receives (when paired with an avro source, forms tiered collection) |
AvroSink |
Sink |
file_roll |
RollingFileSink |
|
Sink |
irc |
IRCSink |
|
Sink |
null |
/dev/null for Flume - blackhole all events received |
NullSink |
Sink |
(custom type as FQCN) |
你自己的 Sink 实现 |
(custom FQCN) |
ChannelSelector |
replicating |
ReplicatingChannelSelector |
|
ChannelSelector |
multiplexing |
MultiplexingChannelSelector |
|
ChannelSelector |
(custom type) |
你自己的 ChannelSelector 实现 |
(custom FQCN) |
SinkProcessor |
default |
DefaultSinkProcessor |
|
SinkProcessor |
failover |
FailoverSinkProcessor |
|
SinkProcessor |
load_balance |
多sink时提供平衡加载的能力 |
LoadBalancingSinkProcessor |
SinkProcessor |
(custom type as FQCN) |
你自己的 SinkProcessor 实现 |
(custom FQCN) |
Interceptor$Builder |
host |
HostInterceptor$Builder |
|
Interceptor$Builder |
timestamp |
TimestampInterceptor |
TimestampInterceptor$Builder |
Interceptor$Builder |
static |
StaticInterceptor$Builder |
|
Interceptor$Builder |
regex_filter |
RegexFilteringInterceptor$Builder |
|
Interceptor$Builder |
(custom type as FQCN) |
你自己的 Interceptor$Builder 实现 |
(custom FQCN) |
EventSerializer$Builder |
text |
BodyTextEventSerializer$Builder |
|
EventSerializer$Builder |
avro_event |
FlumeEventAvroEventSerializer$Builder |
|
EventSerializer |
org.apache.flume.sink.hbase.SimpleHbaseEventSerializer |
SimpleHbaseEventSerializer |
|
EventSerializer |
org.apache.flume.sink.hbase.SimpleAsyncHbaseEventSerializer |
SimpleAsyncHbaseEventSerializer |
|
EventSerializer |
org.apache.flume.sink.hbase.RegexHbaseEventSerializer |
RegexHbaseEventSerializer |
|
HbaseEventSerializer |
Custom implementation of serializer for HBaseSink. |
你自己的 HbaseEventSerializer 实现 |
(custom FQCN) |
AsyncHbaseEventSerializer |
Custom implementation of serializer for AsyncHbase sink. |
你自己的 AsyncHbaseEventSerializer 实现 |
(custom FQCN) |
EventSerializer$Builder |
Custom implementation of serializer for all sinks except for HBaseSink and AsyncHBaseSink. |
你自己的 EventSerializer$Builder 实现 |
(custom FQCN) |
flume-ng 让你执行一个有利于測试和实验的 Flume NG agent 或一个 Avro client 。
无论如何,你须要指定一个命令(如。 agent
或 avro-client
) 和一个
conf 文件夹 (--conf <conf dir>
).。
全部别的选项都在命令行指定。
用上面的 flume.conf 启动flume server:
bin/flume-ng agent --conf ./conf/ -f conf/flume.conf -Dflume.root.logger=DEBUG,console |
注意,agent 名称是以 -n
指定必须与
agent1-f conf/flume.conf 中给定的名字匹配
你的输出应该像这样:
$ bin/flume-ng agent --conf conf/ -f conf/flume.conf -n 2012 - 03 - 16 16 : 36 : 11 , 918 (main) 58 )] 1 2012 - 03 - 16 16 : 36 : 11 , 921 (main) 54 )] 2012 - 03 - 16 16 : 36 : 11 , 926 (lifecycleSupervisor- 1 - 0 ) 110 )] 2012 - 03 - 16 16 : 36 : 11 , 928 (lifecycleSupervisor- 1 - 0 ) 58 )] 10 2012 - 03 - 16 16 : 36 : 11 , 929 (lifecycleSupervisor- 1 - 0 ) 114 )] 2012 - 03 - 16 16 : 36 : 11 , 926 (lifecycleSupervisor- 1 - 1 ) 67 )] 2012 - 03 - 16 16 : 36 : 11 , 930 (lifecycleSupervisor- 1 - 1 ) 87 )] 2012 - 03 - 16 16 : 36 : 11 , 930 (conf-file-poller- 0 ) 189 )] for changes 2012 - 03 - 16 16 : 36 : 11 , 931 (conf-file-poller- 0 ) 196 )] 2012 - 03 - 16 16 : 36 : 11 , 936 (conf-file-poller- 0 ) 225 )] for agent: SOURCES: {avro-source1=ComponentConfiguration[avro-source1] CONFIG: 41414 , 0.0 . 0.0 } RUNNER: CONFIG: } CHANNELS: {ch1=ComponentConfiguration[ch1] CONFIG: } SINKS: {log-sink1=ComponentConfiguration[log-sink1] CONFIG: RUNNER: CONFIG: } 2012 - 03 - 16 16 : 36 : 11 , 936 (conf-file-poller- 0 ) 119 )] for agents: 2012 - 03 - 16 16 : 36 : 11 , 937 (conf-file-poller- 0 ) 67 )] 2012 - 03 - 16 16 : 36 : 11 , 944 (conf-file-poller- 0 ) 73 )] 2012 - 03 - 16 16 : 36 : 11 , 957 (conf-file-poller- 0 ) 69 )] 2012 - 03 - 16 16 : 36 : 11 , 963 (conf-file-poller- 0 ) 52 )] 0.0 . 0.0 port: 41414 } @79f6f296 counterGroup:{ null counters:{} @43b09468 } 2012 - 03 - 16 16 : 36 : 11 , 974 (lifecycleSupervisor- 1 - 1 ) 122 )] 0.0 . 0.0 port: 41414 } 2012 - 03 - 16 16 : 36 : 11 , 975 (Thread- 1 ) 123 )] 2012 - 03 - 16 16 : 36 : 12 , 352 (lifecycleSupervisor- 1 - 1 ) 132 )] |
flume-ng global 选项
选项 |
描写叙述 |
---|---|
--conf,-c <conf> |
在 <conf> 文件夹使用配置 |
--classpath,-C <cp> |
追加到 classpath |
--dryrun,-d |
不真正启动 Flume,仅仅打印命令 |
-Dproperty=value |
设置一个JDK 系统的合适值 |
flume-ng agent 选项
给定 agent 命令,一个 Flume NG agent 将被一个给定的配置文件(必须) 启动。
选项 |
描写叙述 |
---|---|
--conf-file,-f <file> |
声明你要执行哪一个配置文件 (必须) |
--name,-n <agentname> |
声明我们要执行的 agent 的名字(必须) |
flume-ng avro-client 选项
从标准输入执行一个 Avro client,发送文件或数据给一个 Flume NG Avro Source正在监听的指定的主机和port。
选项 |
描写叙述 |
---|---|
--host,-H <hostname> |
指定 Flume agent 的主机名 (可能是本机) |
--port,-p <port> |
指定 Avro source 监听的port号 |
--filename,-F <filename> |
发送 <filename> 的每一行给 Flume (可选) |
--headerFile,-F <file> |
头文件的每一行包括 键/值对 |
Avro client把每一行(以 \n
, \r
, 或 \r\n
) 都当作一个事件。对Flume 来说
结尾avro-client
命令就是 cat。比如,以下为每个linux用户创建一个事件并将其发送到本机的41414port上的
Flume
的 avro source 上。
在一个新窗体中键入 :
$ bin/flume-ng avro-client --conf conf -H localhost -p 41414 -F |
你应该看到像这样 :
2012 - 03 - 16 16 : 39 : 17 , 124 (main) 175 )] 2012 - 03 - 16 16 : 39 : 17 , 127 (main) 178 )] 2012 - 03 - 16 16 : 39 : 17 , 127 (main) 183 )] 2012 - 03 - 16 16 : 39 : 17 , 129 (main) 73 )] |
在你的第一个窗体,即server执行的那个:
2012 - 03 - 16 16 : 39 : 16 , 738 (New 1 ([id: 0x49e808ca , 0 : 0 : 0 : 0 : 0 : 0 : 0 : 0 : 41414 ])) 123 )] 0x0b92a848 , 1 27.0 . 0.1 : 39577 => 127.0 . 0.1 : 41414 ] 2012 - 03 - 16 16 : 39 : 16 , 742 (New 1 - 1 ) 123 )] 0x0b92a848 , 127.0 . 0.1 : 39577 => 127.0 . 0.1 : 41414 ] ND: / 127.0 . 0.1 : 41414 2012 - 03 - 16 16 : 39 : 16 , 742 (New 1 - 1 ) 123 )] 0x0b92a848 , 127.0 . 0.1 : 39577 => 127.0 . 0.1 : 41414 ] NECTED: / 127.0 . 0.1 : 39577 2012 - 03 - 16 16 : 39 : 17 , 129 (New 1 - 1 ) 123 )] 0x0b92a848 , 127.0 . 0.1 : 39577 :> 127.0 . 0.1 : 41414 ] 2012 - 03 - 16 16 : 39 : 17 , 129 (New 1 - 1 ) 123 )] 0x0b92a848 , 127.0 . 0.1 : 39577 :> 127.0 . 0.1 : 41414 ] 2012 - 03 - 16 16 : 39 : 17 , 129 (New 1 - 1 ) 123 )] 0x0b92a848 , 127.0 . 0.1 : 39577 :> 127.0 . 0.1 : 41414 ] 2012 - 03 - 16 16 : 39 : 17 , 302 (Thread- 1 ) 68 )] @5c1ae90c } 2012 - 03 - 16 16 : 39 : 17 , 302 (Thread- 1 ) 68 )] @6aba4211 } 2012 - 03 - 16 16 : 39 : 17 , 302 (Thread- 1 ) 68 )] @6a47a0d4 } 2012 - 03 - 16 16 : 39 : 17 , 302 (Thread- 1 ) 68 )] @48ff4cf } ... |
祝贺你 !
你正在执行 Apache Flume !
Flume 中文入门手冊的更多相关文章
- 平实给力的写作指导入门手冊——leo鉴书57
写作是个体力活儿,须要不断的练习和砥砺.既然是体力劳动,那必定有套路,前人总结.后人学习并加以积累沉积,日久则形成不同的风格和流派有点儿像.相同,写作也有自己的套路和学习路径.初涉写作有必备之书吗?当 ...
- FreeMarker中文API手冊(完整)
FreeMarker概述 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用 ...
- Linux安装中文man手冊
1.下载中文包: http://pkgs.fedoraproject.org/repo/pkgs/man-pages-zh-CN/manpages-zh-1.5.1.tar.gz/13275fd039 ...
- 谷歌Web中文开发手冊:3响应式
https://developers.google.com/web/fundamentals/getting-started/your-first-multi-screen-site/responsi ...
- Nginx中文手冊
下载 : Nginx 中文手冊 Nginx 常见应用技术指南[Nginx Tips] 第二版 作者:NetSeek http://www.linuxtone.org (IT运维专家网|集群架构|性能调 ...
- MySQL中文參考手冊
非常好的中文手冊: 链接:http://www.sdau.edu.cn/support/mysq_doc/manual_toc.html
- 【D3 API 中文手冊】
[D3 API 中文手冊] 声明:本文仅供学习所用,未经作者同意严禁转载和演绎 <D3 API 中文手冊>是D3官方API文档的中文翻译. 始于2014-3-23日,基于VisualCre ...
- Python学习手冊笔记
之前为了编写一个svm分词的程序而简单学了下Python.认为Python非常好用.想深入并系统学习一下,了解一些机制,因此開始阅读<Python学习手冊(第三版)>. 假设仅仅是想高速入 ...
- L脚本语言语法手冊 0.10版
L脚本语言语法手冊 0.10版 简 介 L脚本语言是一个轻量级的,旨在接近自然语言的编程语言,眼下支持在中文.英文基础上的编程.并可扩展为随意语种.L脚本语言的语法结构简单.程序结构相对 ...
随机推荐
- java代码逆向工程生成uml
今天在看一个模拟器的源码,一个包里有多个类,一个类里又有多个属性和方法,如果按顺序看下来,不仅不能对整个模拟器的框架形成一个大致的认识,而且只会越看越混乱,所以,想到有没有什么工具可以将这些个类以及它 ...
- 容器+AOP实现动态部署(四)
上篇咱们介绍了容器和AOP的结合,结合后怎样将对象增强服务并没有过多的说明,这里将详细说明怎样将对象 进行增强 ,达到一个一对多和多对多的增强方式 先从简单的方式说起 /** *JDK代理类,实现动态 ...
- mysql concat函数进行模糊查询
concat() 函数,是用来连接字符串. 精确查询: select * from user where name=”zhangsan” 模糊查询: select * from user where ...
- LaTeX绘图宏包 Pgfplots package
Pgfplots package The pgfplots package is a powerful tool, based on tikz, dedicated to create scienti ...
- OpenCV和Matlab 通过XML传递数据
因为现在下到的数据集大部分都使用了Matlab的Calibration toolbox 进行标定,其结构大部分是.mat结构的,所以它和opencv中数据传递需要一个中间过程,网上也有直接调用matl ...
- 初见-TensorRT简介<转>
下面是TensorRT的介绍,也可以参考官方文档,更权威一些:https://developer.nvidia.com/tensorrt 关于TensorRT首先要清楚以下几点: 1. TensorR ...
- mysql的正则表达式
所谓正在表达式,就是通过模式去匹配一类字符串.MySQL支持的模式字符如下表所示: MySQL支持的模式字符 模式字符 含义 ^ 匹配字符串的开始部分 $ 匹配字符串的结束部分 . 匹配字符串中的任意 ...
- HTML5 Canvas(画布)实战编程初级篇:基本介绍和基础画布元素
欢迎大家阅读HTML5 Canvas(画布)实战编程初级篇系列,在这个系列中,我们将介绍最简单的HTML5画布编程.包括: 画布元素 绘制直线 绘制曲线 绘制路径 绘制图形 绘制颜色,渐变和图案 绘制 ...
- HAWQ技术解析(八) —— 大表分区
一.HAWQ中的分区表 与大多数关系数据库一样,HAWQ也支持分区表.这里所说的分区表是指HAWQ的内部分区表,外部分区表在后面"外部数据"篇讨论. 在数据仓库应用中 ...
- SQL2005 镜像配置
新添加了一台服务器,做原来服务器的备份机,用交叉线+双网卡配置了内网. 系统环境:Windows 2008 R2 数据库:SQL2005 SP3 设置镜像可以用证书和域两种情况,不过域设置的权限比 ...