第十一章-安装Flume(使用Flume操作两个实例)

一、安装Flume

1.     解压Flume安装包到/usr/local中

$>sudo tar -zxf apache-flume-1.7.0-bin.tar.gz -C/usr/local

2.     给Flume文件夹改名

$>cd /usr/local

$>sudo mv apache-flume-1.7.0-bin/ flume

3.     修改flume文件夹的拥有者

$> sudo chown -R hadoop:hadoop flume

4.     将flume路径添加到环境变量中,并使文件立即生效

$>vim~/.bashrc

    $>source~/.bashrc

 

添加:

# flumeinstall

exportFLUME_HOME=/usr/local/flume

export PATH=$PATH:$FLUME_HOME/bin

5.     配置flume

$>cd flume

$>mv ./conf/flume-env.sh.template ./conf/flume-env.sh

$> vim ./conf/flume-env.sh

添加:

export JAVA_HOME=/usr/locla/jdk

6.     验证flume是否安装成功

$>flume-ng version

 

二、应用Flume的两个实例

1.     使用Flume接收来自AvroSource的信息

案例:AvroSource 可以发送一个给定的文件给FlumeFlume接收到以后可以进行相应的处理,例如显示到屏幕上

a.   创建agent配置文件

/usr/local/flume/conf目录下创建一个新文件avro.conf

$>cd  /usr/local/flume

$>gedit./conf/avro.conf

并添加以下信息:

a1.sources= r1

a1.sinks= k1

a1.channels= c1

#Describe/configure the source

a1.sources.r1.type=avro

a1.sources.r1.channels= c1

a1.sources.r1.bind= 0.0.0.0

a1.sources.r1.port= 4141

#Describe the sink

a1.sinks.k1.type=logger

# Use achannel which buffers events in memory

a1.channels.c1.type=memory

a1.channels.c1.capacity= 1000

a1.channels.c1.transactionCapacity= 100

# Bindthe source and sink to the channel

a1.sources.r1.channels= c1

a1.sinks.k1.channel= c1

b.   启动服务 flumeagent a1

$> flume-ngagent -c . -f /usr/local/flume/conf/avro.conf -n a1 -Dflume.root.logger=INFO,console

c.   创建指定文件

打开另一个Linux终端,使用如下命令在/usr/local/flume目录下新建一个文件log.00,并在文件中加入一行内容"hello world"

$>sh–c ‘echo “hello world” > /usr/local/flume/log.00’

d.   使用avro-client发送文件

再打开另一个Linux终端,执行如下命令:

$> flume-ng avro-client --conf conf -H localhost -p 4141 -F/usr/local/flume/log.00

命令:

 

e.   m1的控制台,可以看到以下信息,注意最后一行: hello world

结果:

2.     使用Flume接收来自NetcatSource的信息

NetcatSource可以把用户实时输入的信息不断地发送给Flume,Flume接收到以后可以进行相应的处理,例如显示到屏幕上。

a.   /usr/local/flume/conf目录下创建一个新文件example.conf

$>cd/usr/local/flume

$>gedit./conf/example.conf

配置以下内容:

# Name the components on this agent

a1.sources = r1

a1.sinks = k1

a1.channels = c1

# Describe/configure the source

a1.sources.r1.type = netcat

a1.sources.r1.bind = localhost

a1.sources.r1.port = 44444

# Describe the sink

a1.sinks.k1.type = logger

# Use a channel which buffers events in memory

a1.channels.c1.type = memory

a1.channels.c1.capacity = 1000

a1.channels.c1.transactionCapacity = 100

#Bind the source and sink to the channel

a1.sources.r1.channels = c1

a1.sinks.k1.channel = c1

 

b.   开启两个linux终端,在第一个终端中输入

$>/usr/local/flume/bin/flume-ngagent --conf ./conf --conf-file ./conf/example.conf  --name a1 -Dflume.root.logger=INFO,console

命令截图:

结果截图:

c.   在第二个终端中输入

$> telnet localhost 44444

这样,在第二个终端命令行输入的信息,就可以实时显示在第一个终端界面了。

结果:

 

 

总结:

遇到的问题:再实例2使用Flume接收来自NetcatSource的信息中,开启服务命令:$>/usr/local/flume/bin/flume-ngagent --conf ./conf --conf-file ./conf/example.conf  --name a1 -Dflume.root.logger=INFO,console

,最初给的是错误的,给的命令是把--conf写成了—conf,还有--name 写成了—name 这是word的原因。

提示的错误是:org.apache.commons.cli.UnrecognizedOptionException:Unrecognized option: -conf。一般这种错误是,参数写错了。

 

由于图片不能复制过来,该博客有很多详细步骤的截图没有,如果需要详细版的Flume安装与使用,可以点击此处下载链接:https://download.csdn.net/download/weixin_42006411/10468879

你可能感兴趣的:(hadoop学习)