一、数据收集工具
Hadoop业务的整体开发流程:
任何完整的大数据平台,一般都会包括以下的基本处理过程:
数据采集
数据 ETL
数据 存储
数据 计算/ 分析
数据展现
其中,数据采集是所有数据系统必不可少的,随着大数据越来越被重视,数据采集的挑战也变的尤为突出。这其中包括:
数据源多种多样
数据量大,变化快
如何保证数据采集的可靠性能
如何避免重复数据
如何保证数据的质量
我们今天就来看看当前可用的一些数据采集的产品,重点关注一些它们是如何做到高可靠,高性能和高扩展。
二、Fulme概念
Flume是一个分布式、可靠、高可用的海量日志聚合系统,支持在系统中定制各类数据 发送方,用于数据收集,同时flume提供对数据的简单处理,并写到各种数据接收方的能力。
1.Apache Flume 是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统,和Sqoop 同属于数据采集系统组件,但是 Sqoop 用来采集关系型数据库数据,而 Flume 用来采集流动型数据。
2. Flume 名字来源于原始的近乎实时的日志数据采集工具,现在被广泛用于任何流事件数据的采集,它支持从很多数据源聚合数据到 HDFS。
3.一般的采集需求,通过对 flume 的简单配置即可实现。Flume 针对特殊场景也具备良好的自定义扩展能力,因此flume 可以适用于大部分的日常数据采集场景。
三、Flume核心组件
Flume 以 agent 为最小的独立运行单位。一个 agent 就是一个 JVM。单 agent 由 Source、Sink和 Channel 三大组件构成,如下图:
组件 | 功能 |
Agent | 使用jvm运行Flume。每个机器运行一个agent,但一个agent可以运行多个sources和sinks |
Client | 生产数据,运行在一个独立的线程 |
Source | 从Client收集数据传递给Channel |
Sink | 从Channel收集数据,运行在一个独立线程 |
Channel | 连接sources和sinks,这个有点像一个队列 |
Events | 可以使日志记录,avro对象。 |
四、Flume安装及测试
1.上传flume安装包然后解压到/home/hadoop/apps/目录下
2.进入flume的目录,修改conf下的 flume-env.sh入下
3.配置环境变量 JAVA_HOME
五、测试
运行一个小程序实验下:
1.在$FLUME_HOME/agentconf(提前建文件夹)目录下创一个数据采集方案,创一个配置文件如下: netcat-logger.properties:
# 定义这个 agent 中各个组件的名字 a1.sources = r1 a1.sinks = k1 a1.channels = c1 # 描述和配置 source 组件:r1 a1.sources.r1.type = netcat a1.sources.r1.bind = localhost a1.sources.r1.port = 44444 # 描述和配置 sink 组件:k1 a1.sinks.k1.type = logger # 描述和配置 channel 组件,此处使用是内存缓存的方式 a1.channels.c1.type = memory a1.channels.c1.capacity = 1000 a1.channels.c1.transactionCapacity = 100 # 描述和配置 source channel sink 之间的连接关系 a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1 |
2.yum源安装 nc
Sudo yum install -y nc
Sudo yum install -y telnet
3.启动agent去采集数据
在$FLUME_HOME 路径下执行如下命令
bin/flume-ng agent -c conf -f agentconf/netcat-logger.properties -n a1 -Dflume.root.logger=INFO,console
-c conf 指定 flume 自身的配置文件所在目录
-f conf/netcat-logger.con 指定我们所描述的采集方案
-n a1 指定我们这个 agent 的名字
4. 测试
在本机节点使用nc localhost 44444就可以完成数据采集
服务器获得采集数据