Apache doris介绍:
Apache Doris是一个现代化的MPP分析型数据库产品。仅需亚秒级响应时间即可获得查询结果,有效地支持实时数据分析。Apache Doris的分布式架构非常简洁,易于运维,并且可以支持10PB以上的超大数据集。
Apache Doris可以满足多种数据分析需求,例如固定历史报表,实时数据分析,交互式数据分析和探索式数据分析等。令您的数据分析工作更加简单高效!
一,镜像编译
生产环境使用了百度的PALO-0.14.12.4版本,百度发行版本在百度内部进行过测试和上线,相比较开源社区的doris更稳定一些,推荐使用palo
下载地址:
http://palo.baidu.com/docs/%E4%B8%8B%E8%BD%BD%E4%B8%93%E5%8C%BA/%E9%A2%84%E7%BC%96%E8%AF%91%E7%89%88%E6%9C%AC%E4%B8%8B%E8%BD%BD/
0.14.12.4版本可使用此镜像编译docker.io/apachedoris/doris-dev:build-env-1.2
下载好编译镜像运行镜像,在镜像里下载palo源码后执行sh build.sh命令等待一段时间即可编译出fe和be文件
详细步骤可参考:
编译 | Apache Doris
有了fe和be文件后续可以根据运行的平台自行打包出fe和be镜像,需要MySQL客户端也可在镜像内自行安装,jdk版本需要使用jdk11
二,如何使用
Doris 采用 MySQL 协议进行通信,用户可通过 MySQL client 或者 MySQL JDBC连接到 Doris 集群
1,从fe节点执行进入客户端
mysql -h 127.0.0.1 -P 2312 -uroot -p
可自行修改mysql客户端密码
SET PASSWORD FOR 'root' = PASSWORd('自定义密码');
doris集群添加BE节点
ALTER SYSTEM ADD BACKEND "XX.XXX.XX.XX:XXXX";
ALTER SYSTEM ADD BACKEND "XX.XXX.XX.XX:XXXX";
ALTER SYSTEM ADD BACKEND "XX.XXX.XX.XX:XXXX";
doris集群添加FE节点
ALTER SYSTEM ADD FOLLOWER "XX.XXX.XX.XX:XXXX";
ALTER SYSTEM ADD FOLLOWER "XX.XXX.XX.XX:XXXX";
后续可根据业务需求自行建库建表
部署完成节点创建好之后可通过doris自带的监控暴露一下metrics端口
通过promethues抓取数据放到grafana展示便于查看集群使用情况:
效果如下:
数据发送方式:
推荐使用stream load通过http方式连接fe节点(多个fe节点自行处理负载均衡问题)往doris发送数据
代码可参考:
https://github.com/apache/incubator-doris/blob/master/samples/stream_load/java/DorisStreamLoad.java
通过Java程序调用stream load导入数据,在一批次数据量较大时,可能会报错Broken Pipe
除了Broken Pipe外,还可能出现一些其他的奇怪的错误。
这个情况通常出现在开启httpv2后。因为httpv2是使用spring boot实现的http 服务,并且使用tomcat作为默认内置容器。但是jetty对307转发的处理似乎有些问题,所以后面将内置容器修改为了jetty。此外,在java程序中的 apache http client的版本需要使用4.5.13以后的版本。之前的版本,对转发的处理也存在一些问题。
所以这个问题可以有两种解决方式:
1.关闭 httpv2
在 fe.conf 中添加 enable_http_server_v2=false 后重启FE。但是这样无法再使用新版UI界面,并且之后的一些基于httpv2的新接口也无法使用(正常的导入查询不受影响)
2.升级
可以升级到百度的Palo发行版0.14.13及之后的版本,已修复这个问题
如遇到消息发送失败可通过http请求返回结果的报文查看具体原因
以上doris使用是一个轻量级的实时计算kafka-stream往doris发送数据的案例的一部分,后续会写篇博客详细说明下kafka-stream往doris发送数据如何处理数据不丢,多线程批量发送数据时如何顺序插入数据等问题