资讯专栏INFORMATION COLUMN

2018年第20周-Flume概念(简单例子)

Nekron / 3005人阅读

摘要:两个发布版本和。用于暂存接受过来的事件,直到被消费。使用事务方法保证事件传递的可靠性。一个简单的例子以下是单节点的配置信息这配置可以让用户通过工具连接端口,发送文本,然后在和日志中输出。配置文件可以定一个多个,启动进程时可以指定启动。

Flume 1.8.0

简介 概要

Flume是一个分布式,可靠性和可用性的系统,此系统用于收集、聚合和移动大量数据日志数据,从各种各样的数据源将数据移动到数据存储中心。
Flume不仅仅是日志数据聚合。由于数据源是可以自定义,Flume可以用于传输大量事件数据(event data)不局限于流量数据,社交媒体数据,邮件信息等各种各样的数据。
Flume是Apache的顶级项目。
两个发布版本0.9.x和1.x。
此文档适用于版本1.x,0.9.x的文档在这http://archive.cloudera.com/c...
但还是推荐使用1.x版本,最新架构有性能的提升和灵活的配置。

系统要求(System Requirements)

1.Java1.8及以上的环境
2.内存——需根据source、channel或sink来决定
3.硬盘空间——需根据channel或sink来决定
4.目录权限——agent能够有该数据目录的读写权限

架构(Architecture) 数据流模型(Data flow model)

事件(event)是数据流的单元。可以是字节数据或者是文本。
agent是JVM进程(包含各个组件,如source、channel和sink),接受实践并传递给下个目标。

source消费从外部源(如web server)传递过来的事件。外部源传送的事件的格式需Flume的source认得。例如,Avro source可以接受Avro事件。
channel用于暂存source接受过来的事件,直到被sink消费。
sink从channel中将事件移动到外部存储,如HDFS(通过HDFS sink)。

在agent里的source和sink都是异步运行的,事件存储在channel里。

复杂的流(Complex flows)

Flume运行用户构建多跳跃的流,也就是事件从一个agent留到下一个agent,可以多个agent。也允许fan-in和fan-out,路由和备份路由。

可靠性(Reliability)  

事件暂存在channel里,然后就被传送到下一个agent或最终仓库(如HDFS)。事件只有在下个一个channel保存了或最终仓库保存了,才会从上一个channel里删掉。这是Flume提供的传送语义。

Flume使用事务方法保证事件传递的可靠性。source和sink都封装了事务用于存储和获取。这个保证了多个事件能够可以可靠的点对点传送。

可恢复性(Recoverability)

channel负责从奔溃中恢复。Flume支持可持久化的file channel。但如果用memory channel虽然会快一些,但agent奔溃后,将无法恢复。

部署(Setup) 安装agent(Setting up an agent)

agent的配置文件是文本形式,类似与Java配置文件。多个agent可以使用同一个配置文件。配置文件包括source、sink和channel属性,以及它们之间怎么匹配。

配置独立组件(Configuring individual components)

流里面的每个组件(source、sink或channel)都是有自己的name、type等属性和实例。例如Avro source需要hostname和port去获取数据。memory channel需要最大队列数。HDFS sink需要知道文件系统的URI,创建文件的路径等。这些属性都是配置在一个文件中。

组合起来(Wiring the pieces together)

agent需要知道什么组件启动,以及它们是怎么连接。只需要在agent里把名字列出来,然后将source连接channl,channel接连sink即可。

启动agent(Starting an agent)

可以通过flume-ng命令来启动agent。启动时需指定agent名字、配置文件目录和配置文件。

bin/flume-ng agent -n $agent_name -c conf -f conf/flume-conf.properties.template
一个简单的例子

以下是单节点flume的配置信息:

# example.conf: A single-node Flume configuration

# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444

# 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

这配置可以让用户通过telnet工具连接4444端口,发送文本,然后在和日志logger中输出。

配置文件定义了一个名为a1的agent,此agent拥有一个source监听4444端口,一个channel将事件暂存在内存中,和一个sink将时间输出到console里。这配置文件定义了很多组件,然后定义它们的类型和其他配置信息。
配置文件可以定一个多个agent,启动flume进程时可以指定agent启动。
启动命令如下

 bin/flume-ng agent --conf conf --conf-file example.conf --name a1 -Dflume.root.logger=INFO,console

在另外个终端启动telnet:

telnet localhost 44444
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is "^]".
Hello world! 
OK

在之前的终端就会输出:

12/06/19 15:32:19 INFO source.NetcatSource: Source starting
12/06/19 15:32:19 INFO source.NetcatSource: Created serverSocket:sun.nio.ch.ServerSocketChannelImpl[/127.0.0.1:44444]
12/06/19 15:32:34 INFO sink.LoggerSink: Event: { headers:{} body: 48 65 6C 6C 6F 20 77 6F 72 6C 64 21 0D          Hello world!. }

这样就完成了Flume agent配置。剩下的就是选择自己想使用的sink、channel或source去熟悉。

参考:http://flume.apache.org/Flume...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/8391.html

相关文章

  • 2018年第21-以我角度看大数据

    摘要:吞吐量是对单位时间内完成的工作量的量度。所以在处理全量数据的情况下,目标就是高吞吐量,所以其响应速度可能就无法和传统的关系型数据库媲美了。 以我角度看大数据 最近公司开启了大数据项目,有幸的,我能够有个平台学习和实践大数据。研究和实验了两个月,虽然都是属于个人研究,但还是有所体会。在此分享给大家。既然要从我的角度说大数据,那我得说下我的背景,我写Java已有很多很多年了,工作也快有6年...

    eechen 评论0 收藏0
  • 2018年第52-Kafka知识点

    摘要:预祝年元旦节快乐年最后一周,分享些的知识点。批处理这个可以设置按固定的消息数量或按特定的延迟或。基于的系统的另一个优点是,它可以对发送给消费者的数据进行聚合的批处理。很多消息队列系统在中保存了关于什么消息是被消费了的元数据。 预祝2019年元旦节快乐!2018年最后一周,分享些Kafka的知识点。 Kafka数据分区和消费者的关系 分区(partition) topic是逻辑概念,分区...

    netScorpion 评论0 收藏0
  • 2018年第19-Presto概念(搭建过程)

    摘要:跟踪每个的活动情况并协调查询语句的执行。是负责执行任务和处理数据。是负责从获取结果并返回最终结果给。例如,一个表的权限定名是,则是表名,是,是。运行启动命令日志在目录下记录服务初始化情况和一些的诊断。 Presto简介 不是什么 虽然Presto可以解析SQL,但它不是一个标准的数据库。不是MySQL、PostgreSQL或者Oracle的代替品,也不能用来处理在线事务(OLTP) 是...

    snowLu 评论0 收藏0
  • 2018年第16-ZooKeeper基本概念(配搭建过程和Master-Workers例子

    摘要:有可能是宕机或负荷严重的情况导致的。为分布式系统提供了协调功能和控制冲突。 背景 随着计算机的硬件和操作系统两者相辅相成地发展,从早期的ENIAC计算机到现在的x86的计算机,从以前的单一控制终端(Single Operator, Single Console, SOSC)的操作系统到现在百花争鸣的操作系统(如MacOS、Windows、Linux等),现代的操作系统发展还有一个最重要...

    wemall 评论0 收藏0
  • 2018年第13-虚拟化技术理解(内含Centos7上安装KVM)

    摘要:硬件虚拟化早在世纪年代开发大型机时就认识到了虚拟化的重要性。常见的硬件虚拟化技术例如和都同时支持全虚拟化和半虚拟化。因此,硬件虚拟化也被称为重量级虚拟化,在同一宿主机上能够同时运行的虚拟机数量相当有限。 虚拟化技术简介 说道KVM,那必须先提虚拟化技术,我网上查的资料,貌似大家对虚拟化的一些术语没有达成统一的标准,如:仿真、完全虚拟化、超虚拟化、操作系统级虚拟化。 其实我觉得这些术语...

    cgh1999520 评论0 收藏0

发表评论

0条评论

Nekron

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<