翻译Flume 1.8.0 User Guide(用户指南)

Posted springmoon-venn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了翻译Flume 1.8.0 User Guide(用户指南)相关的知识,希望对你有一定的参考价值。

翻译自官网flume1.8用户指南,原文地址:Flume 1.8.0 User Guide

一、 介绍

1. 概述

  Apache Flume 是收集、汇总和移动大数据量的不同数据源到集中的数据仓库的分布式的、可靠的、可用的系统。

  使用flume 不仅仅可以做日志收集。自从数据源可自定义,flume可以转移大量的事件数据,包括但不限于网络数据、社交网络数据、邮件数据和处理任何数据源的问题。

  Apache Flume是Apache基金会的顶级项目。

  现有两个可用的发布版本:0.x 和 1.x。

  0.9.x的文档在 flume0.9.x 用户指南

  这篇文档适用于1.4.x版本。

  新的和已使用的用户推荐使用1.x版本,这是可以使用最新版本带来的性能提升和更灵活的配置。

2. 系统要求

  1. Java运行环境 java1.8 及以上

  2. 内存-给source、channel、sink配置足够的内存

  3. 磁盘空间-给channel或sink配置足够的磁盘空间

  4. 目录全选-给agent目录的读写权限

3. 架构

1.1 数据流模型

  一个flume的事件定为为一个byte的数据流和一组可选的字符串属性。flume的 agent(JVm)进程是外部数据源通过(agent)到下一个目的地的组件。

      技术分享图片

  flume的source,消费外部(比如一个web 系统)传递给它的事件。外部source 发送目标flume source可识别的格式的事件到flume。如:一个Avro flume source 可以接收Avro客户端发送的Avro格式的事件,或者接收另一个flume agent 的Avro sink发送的数据。一个相似的流可以使用flume的 Thrift source接收Thrift sink 或者Thrift  RPC客户端和Thrift 客户端用任何语言使用flume Thrift 协议生成的事件。文件channel是一个例子,使用本地文件系统支撑,sink从channel里面拿出数据,放到外部的资源库(如HDFS)或者在流中转发到另一个flume的agent的source。source和sink在指定的agent中以异步的方式传递事件。

1.2 复杂流

  flume 允许用户创建复杂的数据链路,事件在到达终点前可以经过多个agent,也允许fail-in和fail-out的流,为失败的跳跃点创建上下文路由和备份路由。

1.3 可靠性

  流中的事件事件在交付到下一个agent或者最终的仓库(如HDFS),在每个agent的channel中事件是分段的。事件只有在他们存储到下一个agent的channl或最终的仓库中,才会从channel中删除。这就是flume在流支持的“simple-hop”的端到端可靠性交付语义。

  flume使用一个交易方法保证数据交付。source和sink分别将事件从一个channel中存储和取出,这样可以确保事件流可靠的从一个点到另一个点。在多链路的流中,为了保证数据安全的存储到下一个链路的channel中,上一个链路的sink和下一个链路的source都会执行交易。

1.4 可恢复性

  channel存储事件,并管理数据恢复。flume支持持久化的备份在本地文件系统中的channel。flume也有事件存储在内存队列的channel,更快,但是事件存放在内存中,agent进程死亡不能恢复。

二、配置

2.1 配置一个agent

  flume的agent 配置存储在本地配置文件中。这是一个java properties 文件格式。一个配置文件里面可以有一个或多个agent。配置文件里面包括每一个source,sink和channel的配置和他们怎么绑定数据流的连接。

2.2 配置单个组件   

  每个组件(source,sink和channel)在流中名字,类型和配置,都有特定的类型。例如,Avrosource需要接收数据的hostname(或ip 地址) 和端口号。内存channel有最大队列容量, HDFS sink需要知道文件系统的URI, 创建文件的路径,文件滚动的频率等。flume agent的所有配置属性都需要在配置文件中配置。

2.3 连接组件

  agent需要知道加载的组件和他们的连接方式去构建一个流。这是监听每一个agent的source,sinks和channel名字完成的和每一个sink和source跟channel的连接。例如,一个事件流从avroWeb的Avro source到hdfs集群的HDFS sink ,通过一文件channel连接。配置文件包含组件的名字和avroWeb source和hdfs-cluster sinke的绑定。

2.4 启动一个aget

  使用flume发布版本bin目录下的shell脚本flume-ng启动一个agent。你需要在命令行下执行agent命名、配置文件路径和配置文件:

$ bin/flume-ng agent -n $agent_name -c conf -f conf/flume-conf.properties.template

  现在agent会启动配置文件中的source和sink。

2.5 一个简单的案列

  我们提供一个配置文件的样例,描述一个简单的flume部署节点。这个配置文件让用户生成事件,并打印在console日志中。

# 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

 

 

 

--------------未完待续---------------------

 

以上是关于翻译Flume 1.8.0 User Guide(用户指南)的主要内容,如果未能解决你的问题,请参考以下文章

Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)中一些知识点

Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)

Dagger2 User's Guide(翻译)

flume安装配置

Flume-1.8.0_部署与常用案例

Flume伪分布式配置