在“管道管理”页面,点击“新建管道”按钮,创建一个管道:
进入管道配置页面,点击“引用模板”按钮,同时引用“input-elasticsearch”和“output-elasticsearch”两个模板:
在管道配置中,分别针对“input-elasticsearch”和“output-elasticsearch”进行配置,一些关键的配置参数说明如下:
查看更多参数,可以参考 input-elasticsearch
查看更多参数,可以参考 output-elasticsearch
在配置完管道后,点击“保存并部署”创建一个管道并自动部署:
在控制台查看Logstash的运行日志,如果没有ERROR级别的日志,则说明管道运行正常:
进入到output-elasticsearch中定义的输出端的ES集群对应的kibana页面,在Dev tools工具栏里查看索引是否存在,以及索引的文档数量是否正确:
工作中我们遇到了把Hive数据同步到Clickhouse的业务需求,一开始我们写Spark任务,用SparkSQL读Hive,再用JDBC写入到Clickhouse。
后来,随着要同步的表越来越多,每次都写Spark任务,成本就显得有些高了。于是,写了一个通用的Spark任务,指定Hive表、字段,指定Clickhouse表、字段,每次指定不同的参数。
再后来,业务越来越复杂,不仅是简单的同步,而是要支持更复杂的SQL,结果进行数据类型转换、值转化等,然后再插入Clickhouse。
这不是ETL要干的事儿吗?!
当然,继续增强之前的Spark,完全可以实现这个功能。但是说到ETL,不是有专业强大的Logstash吗,为什么要重复造轮子?
经过一番调研,还真有人写了Logstash插件,用来导出数据到Clickhouse: logstash-output-clickhouse
输出端搞定了,输入端怎么搞呢?很建达,用JDBC插件就可以了。
如上,配置jdbc连接信息即可。
需要说明的是,相关的jar包比较多,需要给全了,否则会有各种ClassNotFoundException。完整的jar列表为:
这些jar最好与hive环境版本一致,我们用的是CDH版,所以都是从CDH目录下找到的jar。
Clickhouse插件使用说明参考: https://github.com/mikechris/logstash-output-clickhouse
主要说下安装过程。
说明文档里说的 bin/logstash-plugin install logstash-output-clickhouse 方式,没有安装成功,所以只能自己编译安装。
先clone源码,然后进入源码根路径:
编译:
此时,若没有安装ruby环境,按照提示安装一下,再编译。
编译成功后,会多出一个文件
安装:
logstash的安装就不多说了,按照logstash官方文档安装就可以了。
此时,如果logstash版本是5.x,可能会遇到一个错误:
按照提示,修改gemfile:
修改logstash-mixin-http_client的版本:
原来是>6且<7,改成>5且<6。
然后,再次编译、安装,就可以了。
按照文档中的使用说明,配置Clickhouse连接信息即可:
这部分工作可以放在filter里处理,各种filter插件就不说了,参考logstash官方文档吧。
https://artifacts.elastic.co/downloads/logstash/logstash-7.9.1.tar.gz
jdbc驱动 可以在maven 仓库里复制出来
另外两个文件是新建的
mysql.sql 随便写个select语句
mysql.config
./logstash -f ../mysql/mysql.conf
logstash只支持增量 相关问题请查看 https://blog.csdn.net/laoyang360/article/details/51747266
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)