Flume 高效写入 OSS | 学习笔记

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 快速学习 Flume 高效写入 OSS。

开发者学堂课程【分布式数据库 HBase快速入门:Flink 高效写入 oss】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/833/detail/13967


 

Flume 高效写入 OSS

 

内容介绍

.Flume 简介

.Flume 常用组件

.Flume 使用 JindoFS SDK

.Flume 实战 JindoFS SDK

 

一、Apache Flume 简介

1.Apache Flumepache 是基金会的一个顶级项目,以下简称 Flume

2.Flume 是一个分布式、可靠、高可用的系统,支持从不同数据源高效地收集、聚合、迁移大量日志数据,

聚合到中心化的数据存储服务。

3.Flume 使用最多的场景是日志收集,也可以通过定制 Source 来传输其他不同类型的数据。

4.E -MapReduce-3.16.0版本开始支持 Apache Flume

Flume 中的概念及术语

一个 Flume AgentSource Channelsink 组成。

Event

数据流通过 Flume Agen t的基本单位。

Event由一个装载字节数组负载( Payload )和一个可选的字符串属性集合组成。

Source

数据源收集器,从外部数据源收集数据,并发送到 Channel

Channel

Source sink 之间的缓冲队列

Sink

MChannelEvent 从中获取,并将以事务的形式 commitcommit 到外部存储中。一旦事务成功, Event 会从 Channel 中移除。

 

 

二、Flume常用组件

常用组件介绍

常见 Source

1.Avro Source:通过监听vro端口 Avro 获取 Client 发送的事件。Avro Hadoop 提供的一种协议,用于序列化反序列化数据。

2.Exec Source:通过监听命令行输出获取数据,tail-fvar/log/messages

3.NetCat TCP Source:监听指定tcp端口获取数据。类似的还有 Netcat UDP Source

4.Taildir Source:监控目录下的多个文件,会记录偏移量,不会丢失数据,最为常用。

常见 Channel

1.Memory Channel:缓存到内存中,性能高,最为常用。

2.File Channel:缓存到文件中,会记录 checkpoint data 文件,可靠性高,但性能较差。

3.JDBC Channel缓存到关系型数据库中

4.Kakfa Channel:通过 Kafka 来缓存数据

常见Sink

1.Logger Sink 用于测试

2.Avro Sink 转换成 Avro Event 主要用于连接多个 Flume Agent

3.HDFS Sink 写入 hdF,最为常用

4.Hive sink 写入 hive 表或分区,使用 ive 事务 events

5.Kafka sink 写入 Kafka

文档

官方文档:

https://flume. apache org/documentation.html

中文文档:

https: //flume. liyifeng .org/

 

三、Flume 使用 JindoFS SDK

Flume 使用 JindoFS SDK 写入 OSS

环境要求

在集群上已经部署 Fume,已部署 JindoSDK34 以上版本。

为什么需要使用 JindoFS SDK 写入 OS

Fume 通过 flush() 调用保证事务性写入,oss 本身不支持 Flush 功能,通过 JindoFS SDK 写入 OSS,虽然不能让 fush 后的数据立刻可见,但是可以保证 flush后的数据不丢失,Flume 作业失败后,可以使用 JindoFS 命令恢复 flush 过的数据。

配置示例

xoox.sinks. oss sink hdfs path oss:/{your bucket}/flume dir/%Y-m-d/%H

xoox sinks. oss sink hdfs batchSize=100000

xoox sinks.oss sink hdfs. round =true

xoo.sinks. oss sink hdfs. roundValue= 15

xox sinks. oss sink hdfs. Unit =minute

xoox.sinks. oss_sinkhdfs. filePrefix= your_topic

xoox sinks. oss sink rollSize =3600

xox.sinks. oss sink threadsPoolSize=30

文档链接

https://github.com/aliyun/alibabacloud-jindofs/blob/master/docs/flume/jindofs_sdk_on_flume_for oss.md

EMR 集群内对Fush文件恢复

jindo ifs-recover [-R]

[-flushStagingPath (flushStagingPath)]

-accessKeyld$(accessKeyld)]

-accessKeySecret $(accessKeySecret]]

<path>

:如需递归恢复(-R),建议先停止Flume任务,避免Fume任务运行异常。

EMR集群外对Fush文件恢复

JindoOssFileSystem jindoFileSystem =(JindoOssFileSystem)fs;

boolean isFolder= true:

jindoFileSystem. recover(path, isFolder)

文档链接

https://github.com/aliyun/alibabacloud-jindofs/blob/master/docs/flume/ jindofs_sdk_on_flume_for oss.md

 

四、Flume 实战 JindoFS SDK

自建 Flume使用 JindoFS SDK 压缩写入 OSS

环境准备

Hadoop-2.8.5

配置 JindoFS SDK

 https://github.com/aliyun/alibabacloud-indofs/blob/master/docs/ jindofs _sdk _how_ to _hadoop. md

下载 Flume

flume-1.9.0: wget https://downloads apache. or/fiume/1.9.0/apache-flume-1.9.0-bin.tar.

添加必要的依赖库

cd $SHADOOP_HOME/share/hadoop/httpfs/tor_home/share/hadoop/ttpfs/tomcat/webapps/webhdfs/web-inf/lib

cp commons-configuration-1.6.jar $FLUME_HOME/lib

cp hadoop-auth-2.8.5. jar SFLUME_HOME/lib

cp hadoop-common-2.8.5. jar SFLUME_HOME/lib

cp hadoop-hdfs-2.8.5.jar SFLUME_HOME/

cp commons-io-2.4. jar SFLUME_HOME/ib

cp htrace-core4-4,0.1-incubating. jar SFLUME_HOME/lib

 

 

 

 

 

 

 

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
6月前
|
消息中间件 存储 分布式计算
Hadoop学习笔记(HDP)-Part.20 安装Flume
01 关于HDP 02 核心组件原理 03 资源规划 04 基础环境配置 05 Yum源配置 06 安装OracleJDK 07 安装MySQL 08 部署Ambari集群 09 安装OpenLDAP 10 创建集群 11 安装Kerberos 12 安装HDFS 13 安装Ranger 14 安装YARN+MR 15 安装HIVE 16 安装HBase 17 安装Spark2 18 安装Flink 19 安装Kafka 20 安装Flume
104 0
Hadoop学习笔记(HDP)-Part.20 安装Flume
java202304java学习笔记第五十二天员工管理-阿里云oss-集成服务2
java202304java学习笔记第五十二天员工管理-阿里云oss-集成服务2
88 0
java202304java学习笔记第五十二天员工管理-阿里云oss-集成服务2
java202304java学习笔记第五十二天员工管理-阿里云oss-集成服务2
280 0
java202304java学习笔记第五十二天员工管理-oss-文件上传2
java202304java学习笔记第五十二天员工管理-oss-文件上传2
75 0
java202304java学习笔记第五十二天员工管理-阿里云oss-集成服务1
java202304java学习笔记第五十二天员工管理-阿里云oss-集成服务1
109 0
java202304java学习笔记第五十二天员工管理-oss-文件上传1
java202304java学习笔记第五十二天员工管理-oss-文件上传1
54 0
java202304java学习笔记第五十二天员工管理-oss-文件上传1
java202304java学习笔记第五十二天员工管理-oss-文件上传1
63 0
|
存储 编解码 弹性计算
云存储-对象存储的介绍和使用场景 | 学习笔记
快速学习云存储-对象存储的介绍和使用场景
云存储-对象存储的介绍和使用场景 | 学习笔记
|
存储 JavaScript PHP
|
数据采集 JSON 监控
网站流量日志Flume收集--新组件taildir source介绍| 学习笔记
快速学习网站流量日志Flume收集--新组件taildir source介绍
网站流量日志Flume收集--新组件taildir source介绍| 学习笔记