Flume架构介绍和安装

写在前面

在学习一门新的技术之前,我们得知道了解这个东西有什么用?我们可以使用它来做些什么呢?简单来说,flume是大数据日志分析中不能缺少的一个组件,既可以使用在流处理中,也可以使用在数据的批处理中。

1.流处理:



2.离线批处理:



分析:不管你是数据的实时流处理,还是数据的离线批处理,都是会使用flume这个日志收集框架来做日志的收集。因此,学习这个这个组件是很重要的。这个组件的使用也是很简单的。

简单介绍一下Flume

Flume是一种分布式的、可靠的、可用的服务,用于高效地收集、聚合和移动大量日志数据。它具有基于流数据流的简单灵活的体系结构。它具有可调的可靠性机制和许多故障转移和恢复机制,具有健壮性和容错性。它使用一个简单的可扩展的数据模型,允许联机分析应用程序。

一句话总结:Flume就是用来做日志收集的这么一个工具

Flume架构介绍

  1. Source 收集 (从webserver读取数据到Channel中去)

  2. Channel 聚集 (减少直接与磁盘的对接次数(生产环境中一般使用类型为Memory),当channel满了,再写到sink中去。同时,也起到了容错的作用,因为只有当sink接收到了数据,channel才会把原有的数据丢弃)

  3. Sink 输出(从channel中读取数据,写到目的地,这里的目的地可以是HDFS、其余的一些文件系统或者作为下一个agent的source等)

顺便说一下

Event的概念

在整个数据的收集聚集传送的过程中,流动的是event,即事务保证是在event级别进行的。

那么什么是event呢?—–event将传输的数据进行封装,是flume传输数据的基本单位,如果是文本文件,通常是一行记录,event也是事务的基本单位。

event从source,流向channel,再到sink,本身为一个字节数组,并可携带headers(头信息)信息。event代表着一个数据的最小完整单元,从外部数据源来,向外部的目的地去。

为了方便大家理解,给出一张event的数据流向图:

上面这段引用来自大神“安静的技术控”的文章,因为我觉得大神已经解释得很到位了。很好理解,在这里,感谢大神啦

工欲善其事,必先利其器

因为有的小伙伴可能还没有安装flume组件,接下来我们就开始介绍一下flume的安装。

我们也可以去官网看一下,怎么安装。

System Requirements

Java Runtime Environment - Java 1.8 or later

Memory - Sufficient memory for configurations used by sources, channels or sinks

Disk Space - Sufficient disk space for configurations used by channels or sinks

Directory Permissions - Read/Write permissions for directories used by agent

这段话,简单解释:我们必须得安装java1.8或者更高版本,内存要足够(因为我们的Channel一般是写在内存上的),磁盘空间要足够,还有就是对我们代理中的目录要有读写权限

说明:Flume的安装是不需要Hadoop集群的环境的

(一)安装JDK

  1. 到官网下载jdk1.8,下载地址

    http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    或者,也可以使用我分享的链接地址(64位):

    链接:http://pan.baidu.com/s/1hsvQmB6 密码:a1gh
  2. 解压到自己常用的目录,我一般喜欢解压到~/app/目录下,这个都可以,按照自己的习惯就好
  3. 配置java的系统环境变量,把我们解压出来的东西export导出
    [hadoop@hadoop000 app]$ vim ~/.bash_profile
#新增导出的java环境,JAVA_HOME后面的值为自己的解压目录
export JAVA_HOME=/home/hadoop/app/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH
#:wq 保存退出 [hadoop@hadoop000 app]$ source ~/.bash_profile
#回车就好,使得刚刚的导出生效
#验证配置
[hadoop@hadoop000 app]$ java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
[hadoop@hadoop000 app]$

(二)安装flume

  1. 下载flume,推荐使用cdh5版本的,地址:

    http://archive.cloudera.com/cdh5/cdh/5/

    这里需要说明一下,虽然我们前面说过不需要hadoop集群环境,但是后面我们肯定是需要结合集群来实现我们的业务情景的,所以在选型的时候就得注意,选择和hadoop集群一致版本的flume,还有就是没有使用官网的版本,是因为cdh已经为我们解决掉了很多的依赖和冲突,这样使用起来会更加方便。不会让我们的开发在困扰在解决没必要的东西上
  2. 同样,下载自己合适的版本之后,就是开始解压到指定目录,然后导出我们的解压目录,再source。如果你多操作几次,就会发现,这个操作是大数据里面安装各种组件的一致操作。
[hadoop@hadoop000 app]$ vim ~/.bash_profile
# .bash_profile # Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi # User specific environment and startup programs export JAVA_HOME=/home/hadoop/app/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH export FLUME_HOME=/home/hadoop/app/flume
export PATH=$FLUME_HOME/bin:$PATH #:wq 保存退出

3.来到flume下的conf文件目录下:

[hadoop@hadoop000 conf]$ cp flume-env.sh.template flume-env.sh
[hadoop@hadoop000 conf]$
[hadoop@hadoop000 conf]$ vim flume-env.sh
#修改这里默认的JAVA_HOME为自己的java目录
export JAVA_HOME=/home/hadoop/app/jdk1.8.0_144
#:wq保存退出

4.测试是否安装成功

[hadoop@hadoop000 conf]$ flume-ng version
Flume 1.6.0-cdh5.7.0
Source code repository: https://git-wip-us.apache.org/repos/asf/flume.git
Revision: 8f5f5143ae30802fe79f9ab96f893e6c54a105d1
Compiled by jenkins on Wed Mar 23 11:38:48 PDT 2016
From source with checksum 50b533f0ffc32db9246405ac4431872e
[hadoop@hadoop000 conf]$

到这里我们的环境就搭建成功了,接下来,我们就可以开始我们的Flume之旅啦....

推荐Flume系列二之案例实战

http://blog.csdn.net/liuge36/article/details/78591367

Flume系列一之架构介绍和安装的更多相关文章

  1. Kafka系列一之架构介绍和安装

    Kafka架构介绍和安装 写在前面 还是那句话,当你学习一个新的东西之前,你总得知道这个东西是什么?这个东西可以用来做什么?然后你才会去学习它,使用它.简单来说,kafka既是一个消息队列,如今,它也 ...

  2. openresty开发系列10--openresty的简单介绍及安装

    openresty开发系列10--openresty的简单介绍及安装 一.Nginx优点 十几年前,互联网没有这么火,软件外包开发,信息化建设,帮助企业做无纸化办公,收银系统,工厂erp,c/s架构偏 ...

  3. API网关系列之Kong的介绍以及安装

    一.API网关产生背景 在微服务的架构中,一个大的应用会被拆分成多个小的单一的服务提供出来,这些小的服务有自己的处理,有自己的数据库(也可以共用),也许语言也是不一样的,他们可以部署在一个或多个服务器 ...

  4. 【Docker】2. Docker的架构介绍、安装与卸载 (CentOS 7)

    一.docker的基本组成 开局一张图. docker的组成: Client:客户端,可以通过它与docker服务进行交互.比如容器的构建.拉取.运行. DOCKER_HOST:就是docker服务. ...

  5. dubbo系列三、架构介绍及各模块关系

    一.整体设计 图例说明: 图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口. 图中从下至上分为十层,各层均为单向依赖,右边的黑色箭头代 ...

  6. LNMP架构介绍 MySQL安装 PHP安装 Nginx介绍

  7. 01 Flume系列(一)安装配置

    01 Flume系列(一)安装配置 Flume(http://flume.apache.org/) is a distributed, reliable, and available service ...

  8. MySQL系列-第一章节:MySQL介绍与安装

    1.数据库介绍 1.1.什么是数据库`<Database>` 简单说存放数据的仓库,这个仓库按照一定的数据结构<数据结构是指数据的组织形式或数据之间的联系>来组织.存储的,我们 ...

  9. windows下mongodb基础玩法系列一介绍与安装

    windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...

随机推荐

  1. Hive常用函数的使用

    Hive常用函数的使用 文章作者:foochane  原文链接:https://foochane.cn/article/2019062501.html 1 基本介绍 1.1 HIVE简单介绍 Hive ...

  2. python学习——高阶函数

    递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数.使用递归函数的优点是逻辑简单清晰,缺点就是过深的调用会导致栈溢出.但是针对尾递归优化的语言可以通过尾递归防 ...

  3. XMind使用教程入门

    什么是思维导图 借用百度百科的介绍,思维导图又称脑图.心智导图.是一种将思维形象化的方法,它利用图文并重的方法,将各级主题之间的关系用相互隶属与相关的层级图表现出来,将主题关键词与图像.颜色等建立记忆 ...

  4. C函数指针状态机实现

    C函数指针状态机实现 有限状态机(finite state machine)简称FSM,表示有限个状态及在这些状态之间的转移和动作等行为的数学模型,在计算机领域有着广泛的应用.FSM是一种逻辑单元内部 ...

  5. Spring Boot 2.0 教程 | 快速集成整合消息中间件 Kafka

    欢迎关注个人微信公众号: 小哈学Java, 每日推送 Java 领域干货文章,关注即免费无套路附送 100G 海量学习.面试资源哟!! 个人网站: https://www.exception.site ...

  6. JMeter特点&性能测试工具选型的原则&模拟压力的原理

    1.JMeter自身的特点 1)开源.轻量级.更适合自动化和持续集成(100M左右,LoadRunner 4G左右) 2)学习难度大 3)资料少.全英文 2. 性能测试工具选型的原则 1)成本 a.工 ...

  7. 五月月赛 寻宝 exkmp + 主席树

    : 寻宝 时间限制: Sec 内存限制: MB 提交: 解决: [提交] [状态] [讨论版] [命题人:admin] 题目描述 采蘑菇的小西佬找到了一张上古年间的藏宝图,上面画着m座连绵不断的山,他 ...

  8. BZOJ-2743: [HEOI2012]采花 前缀和 树状数组

    BZOJ-2743 LUOGU:https://www.luogu.org/problemnew/show/P4113 题意: 给一个n长度的序列,m次询问区间,问区间中出现两次及以上的数字的个数.n ...

  9. codeforces #583 problem D(搜索好题)

    题目大意:在一个已经有障碍的地图上,设置尽可能少的障碍使得(1,1)无法到达(n,m),行进路线位向下或向右. 数据范围:n*m<=1e6 解题思路:答案一定是小于等于2的,因为可以直接阻碍(1 ...

  10. axios跨域访问eggjs的坑egg-cors egg-passport passport-local session传递问题

    在同一机器上写前端和后端,前端使用webpack-dev-server启动,后端直接在eggjs项目目录下使用npm run dev启动,这种情况下,前端访问后端就是跨域访问.eggjs提供了一个跨域 ...