如果本文的内容对您的学习和工作有所帮助,不妨支付宝赞助(wyphao.2007@163.com)一下:
我们知道,Flume可以和许多的系统进行整合,包括了Hadoop、Spark、Kafka、Hbase等等;当然,强悍的Flume也是可以和Mysql进行整合,将分析好的日志存储到Mysql(当然,你也可以存放到pg、oracle等等关系型数据库)。
不过我这里想多说一些:Flume是分布式收集日志的系统;既然都分布式了,数据量应该很大,为什么你要将Flume分析出来的数据用Mysql进行储存?能否在下面评论处留下你的使用场景呢?
如果想及时了解Spark、Hadoop或者Hbase相关的文章,欢迎关注微信公共帐号:iteblog_hadoop
其实,Flume和Mysql进行整合开发的过程也是相当的简单的。代码如下:
代码太长,格式不好,请到 http://www.iteblog.com/archives/1109查看
pom文件中的依赖:
01
02
03
org.apache.flume
04
flume-ng-core
05
06
07
08
org.apache.flume
09
flume-ng-configuration
10
11
12
13
mysql
14
mysql-connector-java
15
5.1.25
16
17
18
19
org.slf4j
20
slf4j-api
21
22
23
24
org.slf4j
25
slf4j-log4j12
26
test
27
28
运行程序时,先在Mysql中创建一个表
1
mysql> create table mysqltest(
2
-> idint(11) NOT NULL AUTO_INCREMENT,
3
-> content varchar(50000) NOT NULL,
4
-> PRIMARY KEY (`id`)
5
-> ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
6
Query OK,0 rows affected,1 warning (0.05 sec)
然后在flume中创建以下配置
01
# User: 过往记忆
02
# Date:14-9-4
03
# Time: 下午13:16
04
# bolg: http://www.iteblog.com
05
# 本文地址:http://www.iteblog.com/archives/1109
06
# 过往记忆博客,专注于hadoop、hive、spark、shark、flume的技术博客,大量的干货
07
# 过往记忆博客微信公共帐号:iteblog_hadoop
08
09
agent.sinks.mysqlSink.type = com.iteblog.flume.MysqlSink
10
agent.sinks.mysqlSink.hostname=localhost
11
agent.sinks.mysqlSink.port=3306
12
agent.sinks.mysqlSink.databaseName=ngmonitor
13
agent.sinks.mysqlSink.tableName=mysqltest
14
agent.sinks.mysqlSink.user=root
15
agent.sinks.mysqlSink.password=123456
16
agent.sinks.mysqlSink.channel = c1
用下面的命令就可以启动:
1
bin/flume-ng agent -c conf/ -f conf/mysql_test.conf -n agent
再看下Mysql中的情况:
1
mysql> select count(*) from mysqltest;
2
+----------+
3
| count(*) |
4
+----------+
5
|98300 |
6
+----------+