简介
在日常工作中我们使用Mysql作为数据存储,但是随着业务的增长,传统的关系型数据库在做OLAP上有些力不从心,当然可以使用加内存升级硬件等方式来解决这样的问题,但投投资回报率显然不高,所有将部分OLAP业务转移到ClickHouse上来。
什么是ClickHouse?
很直白的讲ClickHouse是一个高性能、易扩展的列存储数据库。
想了解的同学请看另外一篇文章,这里不加赘述。
书归正文
之前的业务是将行为日志收集到Kafka, 在用Logstash从Kafka中读取,并写入到Mysql中,不得不说Logstash在插件方面要比Flume好的多,抱着试试看的态度搜索了下ClickHouse的插件,还真有。
准备工作
- JDK -1.8+
- Logstash -5.6.4(版本随意看你心情)
第一步,去官网下载Logstash安装包,并解压。
第二步,安装目录执行install,当看到Successfuled恭喜你成功了。
bin/logstash-plugin install logstash-output-clickhousekaka
第三步,ClickHouse创建测试表
#创建学生测试表 CREATE TABLE default.student ( `age` Int64, `name` Nullable(String) ) ENGINE = MergeTree ORDER BY age SETTINGS index_granularity = 8192
第四步,配置Logstash的conf。
读Kafaka数据就不在这里演示了,使用命令行方式代替。
input { #命令行输入 stdin{} } filter{ grok { #简单的正则匹配 match => { "message" => "(?<age>\S+) (?<name>\S+)"} } } output { #控制台打印 stdout{ codec=>rubydebug{} } clickhouse { #授权信息,这里注释了 #headers => ["Authorization", "Basic YWRtaW46cGFzc3dvcmQxMjM="] #数据库请求串,集群可直接追加如: ["http://192.168.163.138:8123","http://192.168.163.139:8123","http://192.168.163.140:8123"] http_hosts => ["http://192.168.163.138:8123"] #student 表名称 table => "student" mutations => { #字段名称 age => age name => name } } }
第五步,启动Logstash
logstash -f ../config/clickhouse.conf
在看下数据库
至此,Logstash整合ClickHouse就结束了。
当然这只是一个简单的Demo
详细信息见插件官网:https://github.com/mikechris/logstash-output-clickhouse