前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于 Flume

关于 Flume

原创
作者头像
来自银河系的员程序
发布2022-02-09 14:48:17
4060
发布2022-02-09 14:48:17
举报
文章被收录于专栏:Java学习中Java学习中

Flume

简介

在一个完整的大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心之外,还需要数据采集、结果数据导出、任务调度等不可或缺的辅助系统,而这些辅助工具在hadoop生态体系中都有便捷的开源框架,如图所示:

img
img

设计Flume的宗旨是向Hadoop批量导入基于事件的海量数据。一个典型的例子是利用Flume从一组Web服务器中收集日志文件,然后把这些文件中的日志事件转移到一个新的HDFS汇总文件中以做进一步处理,其终点(sink)通常为HDFS。也可以写到HBASE或Solr等其他系统。

概述

  • Flume是Cloudera提供的一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。
  • Flume可以采集文件,socket数据包、文件夹等各种形式源数据,又可以将采集到的数据输出到HDFS、hbase、hive、kafka等众多外部存储系统中
  • 一般的采集需求,通过对flume的简单配置即可实现
  • Flume针对特殊场景也具备良好的自定义扩展能力,因此,flume可以适用于大部分的日常数据采集场景

当前Flume有两个版本:

  • Flume 0.9X版本的统称Flume-og
  • Flume1.X版本的统称Flume-ng 由于Flume-ng经过重大重构,与Flume-og有很大不同,使用时请注意区分

运行机制

1、要想使用Flume,就需要运行Flume代理。Flume代理是由持续运行的source(数据源),sink(数据目标)已经channel(用于连接source和sink)构成的Java进程。Flume 是由一组以分布式结构相互连接的代理构成

2、Flume分布式系统中最核心的角色是agent,flume采集系统就是由一个个agent所连接起来形成

3每一个agent相当于一个数据传递员(Source 到 Channel 到 Sink之间传递数据的形式是Event事件;Event事件是一个数据流单元),内部有三个组件:

  • Source:采集源,用于跟数据源对接,以获取数据
  • Sink:下沉地,采集数据的传送目的,用于往下一级agent传递数据或者往最终存储系统传递数据
  • Channel:angent内部的数据传输通道,用于从source将数据传递到sink
img
img

Flume采集系统结构图

简单结构

单个agent采集数据
img
img

复杂结构

多级agent之间串联
1.第一种:2个agent串联
img
img
2.多个agnet的采集的数据进行汇总
img
img
3.采集的数据可以下层到不同的系统中
img
img

安装Flume

Flume的下载

下载地址https://flume.apache.org/download.htmlhttp://archive.apache.org/dist/flume/

Flume的安装

Flume框架对hadoop和zookeeper的依赖只是在jar包上,并不要求flume启动时必须将hadoop和zookeeper服务也启动。

将安装包上传到服务器并解压
代码语言:javascript
复制
tar -zxvf apache-flume-1.8.0-bin.tar.gz
修改安装包名称
代码语言:javascript
复制
mv apache-flume-1.8.0-bin flume-1.8.0
修改配置文件
代码语言:javascript
复制
cd flume-1.8.0/conf
cp flume-env.sh.template flume-env.sh
chmod 777 flume-env.sh

在flume-env.sh脚本中配置JAVA_HOME

export JAVA_HOME= /usr/jdk1.8.0_131

flume-env.sh
flume-env.sh

配置环境变量

代码语言:javascript
复制
vi /etc/profile

添加如下内容

代码语言:javascript
复制
末尾追加
#FLUME
export FLUME_HOME=/opt/flume/flume-1.8.0
export PATH=$PATH:$FLUME_HOME/bin

保存后,加载生效

代码语言:javascript
复制
source /etc/profile
查看版本
代码语言:javascript
复制
flume-ng version

出现问题

解决方案

1、修改 Flume 的 flume-ng 文件

代码语言:javascript
复制
vim flume-ng

2、编辑内容

代码语言:javascript
复制
local HBASE_JAVA_LIBRARY_PATH=$(HBASE_CLASSPATH="$FLUME_CLASSPATH" \
        ${HBASE_IN_PATH} org.apache.flume.tools.GetJavaProperty \
        java.library.path 2>/dev/null | grep hbase)

修改前

修改后

查看版本

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Flume
    • 简介
      • 概述
        • 运行机制
          • Flume采集系统结构图
            • 简单结构
            • 复杂结构
          • 安装Flume
            • Flume的下载
            • Flume的安装
            • 出现问题
        相关产品与服务
        大数据
        全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档