采用Flume作为Spark Streaming数据源的编程实践
写在前面
我的spark集群的配置状态:我使用的是windows系统,安装了wsl子系统(Ubuntu),然后在Ubuntu中安装了docker,搭建了一个master两个slave的centos集群。
一、Flume的安装和使用
1. flume 的下载
官网:http://flume.apache.org/download.html
2. 写环境变量
vim ~/.bashrc
在文件后面追加
export FLUME_HOME=/root/software/flume-1.8.0
export PATH=$PATH:$FLUME_HOME/bin
使配置文件生效:source ~/.bashrc
3.修改配置文件
将conf目录下的flume-env.sh.template模板文件复制一份并重命名flume-env.sh,添加jdk的路径。
cp flume-env.sh.template flume-env.sh
如果不想看环境变量中变量位置在什么地方,可以使用echo $JAVA_HOME
,返回值既是路径。
4.验证是否安装成功
flume-ng version
二、使用netcat数据源测试Flume
1.在conf文件夹下,新建netcat_source.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 = 44445
# 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
要记住配置文件中使用的端口,在后续的步骤会用到。
2.在控制台中flume目录下使用命令启动
flume-ng agent --conf ./conf --conf-file ./conf/netcat_source.conf --name a1 -Dflume.root.logger=INFO,console
#–conf:配置目录
#–conf-file:配置文件
#–name:代理名称
#-Dflume:额外的参数
当前终端启动之后会处于一个阻塞状态,需要重新打开一个终端进行操作。
3.使用netcat进行发送信息验证
新开启一个终端(telnet端),使用telnet localhost 44445
访问。
如果没有telnet:
- Ubuntu使用
sudo apt-get install xinetd telnetd
安装 - centos使用如下命令安装
yum -y install telnet-server.x86_64
yum -y install telnet.x86_64
yum -y install xinetd.x86_64
输入:telnet localhost 44445
之后,如下:
此时就可以输入文字了。
显示“OK”之后在之前那个终端中就出现输入的文本。
不过,这里显然还是有些问题,文本的末尾出现了一些偏差,截断了两个字符。
按住Ctrl键输入“]”能结束当前连接,跳回telnet连接命令,再输入quit退出,回到命令行。