doris01-begin

doris01-开始

https://blog.bcmeng.com/post/meituan-doris.html

1. 对比其他的doris

doris是一个rolap, 可以满足以下需求

  • 灵活多维分析
  • 明细+聚合
  • 主键更新

相比较kylin, druid而言, Kylin 主要满足离线固化多维分析的需求,Druid 主要满足实时多维分析的需求

对比其他的ROLAP系统,

  • SQL on Hadoop 系统:无法支持更新,性能也较差。
  • TiDB: TiDB 虽然当初号称可以支撑 100%的 TP 和 80%的 AP,但是架构设计主要是面向 TP 场景,缺少针对 AP 场景专门的优化,所以 OLAP 查询性能较差,TiDB 团队目前正在研发专门的 OLAP 产品:TiFlash,TiFlash 具有以下特点:列存,向量化执行,MPP,而这些特点 Doris 也都有。
  • SnappyData:SnappyData 是基于 Spark + GemFire 实现的内存数据库,机器成本较高,而我们机器资源很有限,此外 SnappyData 的计算是基于 JVM 的,会有 GC 问题,影响查询稳定性。
  • ClickHouse:Clickhouse 是一款单机性能十分彪悍的 OLAP 系统,但是当集群加减节点后,系统不能自动感知集群拓扑变化,也不能自动 balance 数据,导致运维成本很高,此外 Clickhouse 也不支持标准 SQL,我们用户接入的成本也很高。

2. 为什么选择doris

Doris 的优点是功能强大,易用性好。 功能强大指可以满足我们用户的需求,易用性好主要指 兼容 Mysql 协议和语法,以及 Online Schema Change

Doris 的数据存储在类似 SSTable(Sorted String Table)的数据结构中。该结构是一种有序的数据结构,可以按照指定的列进行排序存储。在这种数据结构上,以排序列作为条件进行查找,会非常的高效。

对平台侧来说,Doris 的优点是易运维,易扩展和高可用

  • 易运维指 Doris 无外部系统依赖,部署和配置都很简单。
  • 易扩展指 Doris 可以一键加减节点,并自动均衡数据。
  • 高可用值 Dors 的 FE 和 BE 都可以容忍少数节点挂掉
  • 可以提供秒级join应用

3. 编译

此处使用docker编译

具体可见: http://doris.apache.org/documentation/cn/installing/compilation.html

编译完成后,产出文件在 output/ 目录中。

3.1) 什么是MMP

MPP ( Massively Parallel Processing ),即大规模并行处理,在数据库非共享集群中,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上,每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务。非共享数据库集群有完全的可伸缩性、高可用、高性能、优秀的性价比、资源共享等优势。简单来说,MPP 是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果 ( 与 Hadoop 相似 )。

3.2) 环境建议

centos8, 根目录至少保证50G空间, 否则可能不够用的

编译最好采用挂载外部包的形式, 即使编译中间出了问题, 也可以继续从上次的位置编译

3.3) 下载docker镜像

docker pull apachedoris/doris-dev:build-env-1.2

在这儿因为自己的电脑和网不给力, 卡了许久, 最终用阿里云的服务器30s下载下来了... 然而回传速度极慢

3.4) 下载源码

clone 最新的master分支代码  https://github.com/apache/incubator-doris/

3.5) 开启

docker run -it \
--name doris \
--net=host \
-v /root/doris/incubator-doris:/root/incubator-doris/ apachedoris/doris-dev:build-env-1.2

开启之后, 就在容器内了

3.6) 编译

在容器内, 进入挂载的源码目录执行

sh build.sh

在这儿最开始想本机编译, 但无奈网络不过关, 下载不下来

编译时需要用到maven, 可以修改镜像内为阿里云的 nexus, 速度会大有提升

vim /usr/share/maven/conf/setting.xml

<mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
</mirror>
posted @ 2020-02-05 15:22  bronk  阅读(499)  评论(0编辑  收藏