文档章节

Flume02——发送数据到Flume02

night4soul
 night4soul
发布于 2016/03/01 14:01
字数 483
阅读 191
收藏 0

RpcClient

package org.apache.flume.api;

import java.util.List;

import org.apache.flume.Event;
import org.apache.flume.EventDeliveryException;
import org.apache.flume.FlumeException;

public interface RpcClient {
  public int getBatchSize();
  public void append(Event event) throws EventDeliveryException;
  public void appendBatch(List<Event> events) throws
      EventDeliveryException;
  public boolean isActive();
  public void close() throws FlumeException;
}

RpcClient接口十分简单,其通过调用appendBatch 或者 append方法发送Event到Flume Agent。如果方法成功返回,意味着成功将事件写入目的地。反之将会抛出EventDeliveryException异常,Rpc客户端可以根基自己的异常处理规则进行回滚或者重试。

在执行每个RPC调用之前,通过调用isActive来确认RPC客户端是否仍然活跃。一旦不需要RPC客户端或者返回false,必须通过close方法来关闭RPC客户端,以释放资源,避免资源泄露。

RpcClient客户端公共参数    

参数 默认值 描述
client.type - 该参数值必须为default,default_loadbalance,default_failover或thrift
batch-size 100

每个批量发送事件的最大数量

如果传入的数量大于批次数量,RPC客户端将把列表分批顺次写出,只有当所有成功写出,才会返回。如果有一个批次失败就会抛出异常。如果一些批次失败而另一些批次成功,应用程序重试的时候就会导致数据重复,故最好的是传入小于等于批次数量的事件列表

hosts - 可以用来指定主机参数的名字列表
hosts.<hostalis> - 已hostname:port格式的主机配置


示例:

这里以Avro 客户端为例

properties 文件

client.type = default
batch-size = 100
hosts = h1
hosts.h1 = 192.168.0.7:58085

测试代码

package com.flumeTest.handler;

import java.nio.charset.Charset;
import java.util.Properties;

import org.apache.flume.api.RpcClient;
import org.apache.flume.api.RpcClientFactory;
import org.apache.flume.event.EventBuilder;

public class RpcDefaultClient {
	public static void main(String[] args) throws Exception {
		Properties properties = new Properties();
		properties.load(RpcDefaultClient.class.getClassLoader().getResourceAsStream("client.properties"));
		RpcClient c = RpcClientFactory.getInstance(properties);
		c.append(EventBuilder.withBody("test again 01", Charset.forName("UTF-8")));
		c.close();
	}
}

测试输出:

2016-03-01 13:48:40,118 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: { headers:{} body: 74 65 73 74 20 61 67 61 69 6E 20 30 31          test again 01 }


© 著作权归作者所有

night4soul
粉丝 0
博文 8
码字总数 3927
作品 0
苏州
私信 提问
Flume02——发送数据到Flume

构建Flume事件 事件是Flume中数据的基本形式,每个Flume事件包含header的一个map集合和一个body,是表示为字节数组的有效载荷。 package org.apache.flume;import java.util.Map; public inte...

night4soul
2016/02/29
86
0
为什么TCP需要三次握手和四次挥手

本文希望以简单易懂的形式解释下这个问题,其具体的发包数据、过程等还请自行Google。纯属个人观点,如有不妥,还请各位看官指教。 TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信...

河图再现
2018/05/17
37
0
scapy框架安装和入门

描述   使用scapy进行以太网帧的注入,相对于RAW_SOCKET还是比较简单的。在讲述packet注入之前,先了解一下scapy伪造以太网帧的相关知识。下图为以太网帧格式和scapy对应的封装包格式。  ...

enet01
2016/11/16
129
0
Java数字签名——RSA算法

  数字签名:带有密钥(公钥,私钥)的消息摘要算法。        验证数据的完整性,认证数据的来源,抗否性   OSI参考模型   私钥签名,公钥验证   签名算法:RSA,DSA,ECDSA...

奶berber
2018/01/24
0
0
『随笔』Socket 链接 必须 上下行 同时使用

结论: > Socket 理论上 支持 只上行,或者 只下行。 > 心跳包 必须是 上下行的 —— 心跳包请求(上行) - 心跳包响应(下行)。 > 如果 长时间 只有单向链接(只发送不接受,或者 只接受不...

InkFx
2016/08/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

redis 学习2

网站 启动 服务端 启动redis 服务端 在redis 安装目录下 src 里面 ./redis-server & 可以指定 配置文件或者端口 客户端 在 redis 的安装目录里面的 src 里面 ./redis-cli 可以指定 指定 连接...

之渊
昨天
2
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
昨天
4
0
hash slot(虚拟桶)

在分布式集群中,如何保证相同请求落到相同的机器上,并且后面的集群机器可以尽可能的均分请求,并且当扩容或down机的情况下能对原有集群影响最小。 round robin算法:是把数据mod后直接映射...

李朝强
昨天
4
0
Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
昨天
24
0
java数据类型

基本类型: 整型:Byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean 引用类型: 类类型: 接口类型: 数组类型: Byte 1字节 八位 -128 -------- 127 short 2字节...

audience_1
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部