Flume读取文本文件写入到HBase
操作场景
Flume采集文件内容导入到habse
前提条件
· 已创建启用Kerberos认证的流集群。
· 已在日志生成节点安装Flume客户端,请参见安装Flume客户端。
· 已配置网络,使日志生成节点与流集群互通。
操作步骤
(1) 从HBase客户端拷贝配置文件hbase-site.xml到Flume Client的配置目录 " /opt/FlumeClient/fusioninsight-flume-1.6.0/conf" 下。通常可以在分析集群Master节点HBase客户端安装目录如“/opt/client/HBase/hbase/conf/”下找到hbase-site.xml文件。
(2) 从MRS集群下载用户的认证凭据。
①在MRS Manager,单击“系统设置”。
②在“权限配置”区域,单击“用户管理”。
③在用户列表中选择需要的用户,单击后面的“更多”下载用户凭据。
④解压下载的用户凭据文件,获取krb5.conf和user.keytab文件。
(3) 将上一步获得的krb5.conf和user.keytab拷贝到Flume Client所在节点的配置目录 " /opt/FlumeClient/fusioninsight-flume-1.X.X/conf" 下。
(4)修改配置文件jaas.conf,
① 将/opt/Bigdata/MRS_x.x.x/1_x_Flume/etc/" 的jaas.conf文件拷贝到/opt/FlumeClient/fusioninsight-flume-1.X.XS/conf下
② 修改jaas.conf文件中的参数principal 与keyTab
Principal: 可以kinit 用户名进行认证查看参数
keyTab: 定义的用户认证文件完整路径即步骤(1)中保存user.keytab认证文件的目录
(5) 修改配置文件flume-env.sh,文件所在目录 /opt/FlumeClient/fusioninsight-flume-1.6.0/conf。
在 “-XX:+UseCMSCompactAtFullCollection”后面,增加以下内容:-Djava.security.krb5.conf=/opt/FlumeClient/fusioninsight-flume-1.6.0/conf /krb5.conf -Djava.security.auth.login.config=/opt/FlumeClient/fusioninsight-flume-1.6.0/conf /jaas.conf -Dzookeeper.request.timeout=120000
krb5.conf与jaas.conf根据实际情况,修改配置文件路径,然后保存并退出配置文件。
(6)假设Flume客户端安装路径为“/opt/FlumeClient”,执行以下命令,重启Flume客户端:
cd /opt/FlumeClient/fusioninsight-flume-1.6.0/bin
./flume-manage.sh restart
(7)执行以下命令,修改Flume客户端配置文件“properties.properties”。
vi Flume客户端安装目录/fusioninsight-flume-1.6.0/conf/properties.properties
将以下内容保存到文件中:
client.sources = r1 client.sinks = k1 client.channels = c1
# Describe/configure the source client.sources.r1.type = spooldir #实时读取本地目录 client.sources.r1.spoolDir = /tmp/data/ client.sources.r1.trackerDir = /tmp/data/tracker/ client.sources.r1.fileSuffix = .COMPLETED client.sources.r1.deletePolicy= never client.sources.r1.fileHeader = true client.sources.r1.channels = c1 client.sources.r1.batchSize = 100 # Use a channel which buffers events in memory client.channels.c1.type = memory client.channels.c1.capacity = 10000 client.channels.c1.transactionCapacity = 100
client.sinks.k1.type = hbase #表名 client.sinks.k1.table = movie #列组 client.sinks.k1.columnFamily = analyse #通配符(数据格式为 1001,猫,9 ) client.sinks.k1.serializer.regex =(.*),(.*),(.*) client.sinks.k1.serializer = org.apache.flume.sink.hbase.RegexHbaseEventSerializer client.sinks.k1.channel = c1 #列 client.sinks.k1.serializer.colNames = ROW_KEY,movie_name,rating # 索引为0,即ROW_KEY(ROW_KEY是特殊字符) client.sinks.k1.serializer.rowKeyIndex = 0 client.sinks.k1.kerberosPrincipal = 用户名 client.sinks.k1.kerberosKeytab=/opt/FlumeClient/fusioninsight-flume-1.6.0/conf/user.keytab |
client.sinks.k1.kerberosPrincipal 用户名
client.sinks.k1.kerberosKeytab user.keytab文件路径指定
(8)添加数据
创建测试数据
vim /tmp/data/test1.txt
1001,tom,3 1002,jerry,5 1003,jack,4 |
(9)创建hbase表
hbase(main):001:0> create 'movie','analyse'
- 点赞
- 收藏
- 关注作者
评论(0)