2020寒假生活学习日记(十三)
林子雨实验六
(1)解压安装包
sudo tar -zxvf /home/hadoop/下载/apache-flume-1.7.0-bin.tar.gz -C /usr/local cd /usr/local sudo mv ./apache-flume-1.7.0-bin ./flume sudo chown -R hadoop:hadoop ./flume

(2)配置环境变量
sudo vim ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64; export FLUME_HOME=/usr/local/flume export FLUME_CONF_DIR=$FLUME_HOME/conf export PATH=$PATH:$FLUME_HOME/bin
注意, 上面的JAVA_HOME,如果以前已经在.bashrc文件中设置过,就不要重复添加了,使用以前的设置即可。

接下来使环境变量生效:
source ~/.bashrc
修改 flume-env.sh 配置文件:
cd /usr/local/flume/conf sudo cp ./flume-env.sh.template ./flume-env.sh sudo vim ./flume-env.sh

3.查看flume版本信息
cd /usr/local/flume
./bin/flume-ng version
注意:如果系统里安装了hbase,会出现错误: 找不到或无法加载主类 org.apache.flume.tools.GetJavaProperty。如果没有安装hbase,这一步可以略过。
cd /usr/local/hbase/conf sudo vim hbase-env.sh
#1、将hbase的hbase.env.sh的这一行配置注释掉,即在export前加一个# #export HBASE_CLASSPATH=/home/hadoop/hbase/conf #2、或者将HBASE_CLASSPATH改为JAVA_CLASSPATH,配置如下 export JAVA_CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar #笔者用的是第一种方法

安装成功:

使用Avro数据源测试Flume
Avro 可以发送一个给定的文件给 Flume,Avro 源使用 AVRO RPC 机制。请对 Flume 的的相关配置文件进行设置,从而可以实现如下功能:在一个终端中新建一个文件helloworld.txt(里面包含一行文本“Hello World”),在另外一个终端中启动 Flume 以后,可以把 helloworld.txt 中的文本内容显示出来。
创建agent配置文件
cd /usr/local/flume sudo vim ./conf/avro.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 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

启动flume agent a1
/usr/local/flume/bin/flume-ng agent -c . -f /usr/local/flume/conf/avro.conf -n a1 -Dflume.root.logger=INFO,console
创建指定文件
先打开另外一个终端,在/usr/local/flume下写入一个文件log.00,内容为hello,world:

我们再打开另外一个终端,执行:
cd /usr/local/flume bin/flume-ng avro-client --conf conf -H localhost -p 4141 -F /usr/local/flume/log.00 #4141是avro.conf文件里的端口名


创建agent配置文件
cd /usr/local/flume sudo vim ./conf/example.conf

在example.conf里写入以下内容:
#example.conf: A single-node Flume configuration
# 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

启动flume agent (即打开日志控制台):
/usr/local/flume/bin/flume-ng agent --conf ./conf --conf-file ./conf/example.conf --name a1 -Dflume.root.logger=INFO,console

再打开一个终端,输入命令:telnet localhost 44444
telnet localhost 44444

然后我们可以在终端下输入任何字符,第一个终端的日志控制台也会有相应的显示,如我们输入”hello,world”,得出

第一个终端的日志控制台显示:

netcatsource运行成功!
这里补充一点,flume只能传递英文和字符,不能用中文。

浙公网安备 33010602011771号