Flume

  如果数据是在MySQL中的话,需要用到Sqoop工具将数据导入大数据平台。如果是日志类型的日志,需要用到Flume导入大数据平台。
  Flume是一个分布式、 基于流式数据。Flume的灵魂(Agent)就是采集(source)、聚合(channel)、转移(sink)。对于Flume只需要会配置,并不需要(或者很少)需要自己开发代码。Flume在CDH中是更改过的,使用的是1.6.0版本,所以不能参考官网的文档,所以要参考cdh文档(http://archive.cloudera.com/cdh5/cdh/5/flume-ng-1.6.0-cdh5.7.0/)。
这里写图片描述

一、配置

  老规矩,解压,添加环境变量。

解压:
tar -zxvf flume-ng-1.6.0-cdh5.7.0.tar.gz -C ../app/
归属:
sudo chown -R hadoop:hadoop apache-flume-1.6.0-cdh5.7.0-bin/
添加环境变量:
vim ~/.bash_profile
#FLUME
export FLUME_HOME=/home/hadoop/app/apache-flume-1.6.0-cdh5.7.0-bin
export PATH=$FLUME_HOME/bin:$PATH
source ~/.bash_profile

  配置比较简单,就是在${FLUME_HOME}/conf/下设置flume-env.sh,添加java_home。

cp flume-env.sh.template flume-env.sh
flume-env.sh文件添加:
export JAVA_HOME=/usr/java/jdk1.8.0_45

二、使用

  Flume的agent配置在配置文件中,启动命令flume-ng,配置上配置文件的参数,指定agent,就可以按照事先配好的agent进行工作了。

flume-ng agent \
--name $agent_name \           //指定agent的名称
--conf ${FLUME_HOME}/conf \    //指定通用配置文件的目录
--conf-file  ${config}  \       //指定的agnet的配置文件      
-Dflume.root.logger=INFO,console \ //Log日志输出
-Dflume.monitoring.type=http \    //flume监控相关
-Dflume.monitoring.port=34343     //flume监控相关

  ${FLUME_HOME}/conf用来指定通用的配置文件夹的地址,${config}用来配置当前项目的配置文件的地址。

三、agnet配置

  上面提到特殊项目特殊配置agent。下面这个就是配置agent的flume-example.conf文件。

#模板->  <agent_name>.sources=<source1_name> <source2_name>....
a1.sources = r1
#模板->  <agent_name>.sinks=<sink1_name> <sink2_name>....
a1.sinks = k1
#模板->  <agent_name>.channels=<channel1_name> <channel2_name>....
a1.channels = c1

# Describe/configure the source
#模板->  <agent_name>.sources.<source_name>.[params] = [values]
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444

# Describe the sink
#模板->  <agent_name>.sinks.<sink_name>.[params] = [values]
a1.sinks.k1.type = logger

# Use a channel which buffers events in memory
#模板->  <agent_name>.channels.<channel_name>.[params] = [values]
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# Bind the source and sink to the channel
#模板->  <agent_name>.sources.<source_name>.channels = <channel2_name> <channel2_name> ...
a1.sources.r1.channels = c1
#模板->  <agent_name>.sinks.<sink_name>.channel = <channel_name> 
a1.sinks.k1.channel = c1

  由以上的配置的信息知道,一个agent中可以有很多的source、channel、sink,其中source、channel应该是可以多对多,但是sink、channel只能一对一。

四、常用

4.1 常用source
名称含义注意点
avroavro协议的数据源
execunix命令可以命令监控文件 tail -F
spooldir监控一个文件夹不能含有子文件夹,不监控windows文件夹
处理完文件不能再写数据到文件
文件名不能冲突
TAILDIR既可以监控文件也可以监控文件夹支持断点续传功能,重点使用这个
netcat监听某个端口
kafka监控卡夫卡数据
4.2 常用sink
名称含义注意点
kafka写到kafka中
HDFS将数据写到HDFS中
logger输出到控制台
avroavro协议配合avro source使用
4.3 常用channel
名称含义注意点
memory存在内存中
kafka将数据存到kafka中
file存在本地磁盘文件中
  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值