flume+zookeeper
阐述
我是自己在阿里云租了一台服务器,安装的组件也都是选的单机模式
提示:以下是本篇文章正文内容,下面案例可供参考
一、开发环境
java:1.8.0_201
flume:1.9.0
kafka:2.11-2.2.2
zookeeper:3.5.8
hive:2.3.7
hadoop:2.7.6
二、下载安装组件
1、将下载好的组件解压
代码如下(示例):hadoop跟java我之前都装好了
这里就不想细说了
tar -zxvf apache-flume-1.9.0-bin.tar.gz /opt
tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz /opt
tar -zxvf hbase-2.2.5-bin.tar.gz /opt
2.修改flume配置
添加test.conf.properties文件:
test.conf.properties这个配置文件是flume加载数据到hbase的时候使用的
可以写好几个,flume支持同时将好几份数据写入Hbase中
cd /opt/flume/conf
vim test.conf.properties
a1.sources = r1
a1.sinks = k1
a1.channels = c1 # Describe/configure the source
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /date/hbase.txt
a1.sources.r1.channels = c1 # Describe the sink
a1.sinks.k1.type = logger
a1.sinks.k1.type = hbase
# 与hbase中创建的表名相同
a1.sinks.k1.table = t2
# 与hbase中创建的表的列簇相同
a1.sinks.k1.columnFamily = f2
a1.sinks.k1.serializer = org.apache.flume.sink.hbase.RegexHbaseEventSerializer
a1.sinks.k1.channel = memoryChannel # 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
将内容添加到test.conf.properties文件中
修改/opt/flume/conf/flume-env.sh配置文件,添加jdk目录
export JAVA_HOME=/date/jdk1.8.0_201
3.修改hbase配置
1.将/opt/hadoop-2.7.6/etc/hadoop/core-site.xml跟hdfs-site.xml
拷贝到 /opt/hbase/conf/目录下
2.修改hbase-site.xml
export JAVA_HOME=/date/jdk1.8.0_201
vim hbase-site.xml
<property>
<name>hbase.zookeeper.property.dataDir</name>(zookeeper目录)
<value>/opt/zookeeper</value>
</property>
<property>
<name>hbase.cluster.distributed</name>(false为单例模式,true为集群模式)
<value>false</value>
</property>
<property>
<name>hbase.rootdir</name>(Hbase数据存储路径)
<value>hdfs://服务器ip:9000/hbase</value>
</property>
<property>
<name>zookeeper.znode.quorum</name>(zookeeper,ip+端口)
<value>127.0.0.1:2181</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>(hbase端口)
<value>2182</value>
</property>
</configuration>
修改hbase-env.sh配置文件
jdk目录:export JAVA_HOME=/date/jdk1.8.0_201
使用自己安装的zookeeper:export HBASE_MANAGES_ZK=false
将hbase下面的所有jar包拷贝到flume下面
scp *.jar /opt/flume/lib/
4.启动flume
先启动hbase
启动hbase后创建表
cd /opt/hbase/bin
./hbase shell
create ‘t2’,‘f2’
再启动flume
flume启动命令:./flume-ng agent -c …/conf -f …/conf/test.conf.properties -n a1 -Dflume.root.logger=INFO,console
启动成功后去/date目录将数据写入hbase.txt
echo ‘Iamzhangli’>>hbase.txt
然后去Hbase表里面看
scan ‘te’
就可以查到刚刚写入的数据
如果想要一次写入多张表的数据:多建几个test.conf.properties文件
然后启动flume的时候加载不同的test文件就可以实现同时多表导入了。