StarRocks(一)简介与手动部署

前言

        关于 Apache Doris 和 DorisDB、StarRocks 的关系

        Apache Doris和DorisDB是两个不同公司的产品。DorisDB开源后改名为StarRocks。现在的StarRocks有分为免费版和企业版。

        StarRocks官网:StarRocks - 新一代极速全场景MPP数据库

1、StarRocks简介

1.1、StarRocks介绍

        StarRocks是新一代极速全场景MPP数据库

        StraRocks充分吸收关系型OLAP数据库和分布式存储系统在大数据时代的优秀研究成果,在业界实践的基础上,进一步改进优化、升级架构,并增添了众多全新功能,形成了全新的企业级产品。

        StarRocks致力于构建极速统一分析体验,满足企业用户的多种数据分析场景,支持多种数据模型(明细模型、聚合模型、更新模型),多种导入方式(批量和实时),可整合和接入多种现有系统(SparkFlinkHive ElasticSearch)

        StarRocks兼容MySQL协议,可使用MySQL客户端和常用BI工具对接StarRocks来进行数据分析。

        StarRocks采用分布式架构,对数据表进行水平划分并以多副本存储。集群规模可以灵活伸缩,能够支持10PB级别的数据分析; 支持MPP框架,并行加速计算; 支持多副本,具有弹性容错能力。

        StarRocks采用关系模型,使用严格的数据类型和列式存储引擎,通过编码和压缩技术,降低读写放大;使用向量化执行方式,充分挖掘多核CPU的并行计算能力,从而显著提升查询性能。

1.2、StarRocks适合什么场景

        StarRocks可以满足企业级用户的多种分析需求,包括OLAP多维分析、定制报表、实时数据分析和Ad-hoc数据分析等。具体的业务场景包括:

  • OLAP多维分析:用户行为分析、用户画像、财务报表、系统监控分析
  • 实时数据分析:电商数据分析、直播质量分析、物流运单分析、广告投放分析
  • 高并发查询:广告主表分析、Dashbroad多页面分析
  • 统一分析:通过使用一套系统解决上述场景,降低系统复杂度和多技术栈开发成本

1.3、StarRocks基本概念

  1. FEFrontEnd简称FE,是StarRocks的前端节点,负责管理元数据,管理客户端连接,进行查询规划,查询调度等工作。(namenode)
  2. BEBackEnd简称BE,是StarRocks的后端节点,负责数据存储,计算执行,以及compaction,副本管理等工作。(datanode)
  3. BrokerStarRocks中和外部HDFS/对象存储等外部数据对接的中转服务,辅助提供导入导出功能。
  4. StarRocksManagerStarRocks的管理工具,提供StarRocks集群管理、在线查询、故障查询、监控报警的可视化工具。
  5. TabletStarRocks中表的逻辑分片,也是StarRocks中副本管理的基本单位,每个表根据分区和分桶机制被划分成多个Tablet存储在不同BE节点上。

1.4、StarRocks系统架构

StarRocks(一)简介与手动部署_第1张图片

组件介绍

        StarRocks集群由FEBE构成, 可以使用MySQL客户端访问StarRocks集群。

FE:

  • FE接收MySQL客户端的连接, 解析并执行SQL语句。
  • 管理元数据, 执行SQL DDL命令, Catalog记录库, , 分区, tablet副本等信息。
  • FE高可用部署, 使用复制协议选主和主从同步元数据, 所有的元数据修改操作, FE leader节点完成, FE follower节点可执行读操作。 元数据的读写满足顺序一致性。  FE的节点数目采用2n+1, 可容忍n个节点故障。  FE leader故障时, 从现有的follower节点重新选主, 完成故障切换。
  • FESQL layer对用户提交的SQL进行解析, 分析, 改写, 语义分析和关系代数优化, 生产逻辑执行计划。
  • FEPlanner负责把逻辑计划转化为可分布式执行的物理计划, 分发给一组BE
  • FE监督BE, 管理BE的上下线, 根据BE的存活和健康状态, 维持tablet副本的数量。
  • FE协调数据导入, 保证数据导入的一致性。

BE:

  • BE管理tablet副(默认3副本), tablettable经过分区分桶形成的子表, 采用列式存储。
  • BEFE指导, 创建或删除子表。
  • BE接收FE分发的物理执行计划并指定BE coordinator节点, BE coordinator的调度下, 与其他BE worker共同协作完成执行。
  • BE读本地的列存储引擎获取数据,并通过索引和谓词下沉快速过滤数据。
  • BE后台执行compact任务, 减少查询时的读放大。
  • 数据导入时, FE指定BE coordinator, 将数据以fanout的形式写入到tablet多副本所在的BE上。

2、手动部署

2.1、FE启动

  1. 在每台服务器的fe目录下创建meta,用来存储元数据信息:
  2. 在hadoop2下启动fe:bin/start_fe.sh --daemon
  3. 启动mysql客户端:mysql -uroot -P 9030 -hhadoop2 
  4. 添加其他FE节点,角色也分为FOLLOWER,OBSERVER:  
    1. ALTER SYSTEM ADD FOLLOWER "hadoop1:9010";
    2. ALTER SYSTEM ADD OBSERVER "hadoop3:9010";
    3. 查看状态:SHOW PROC '/frontends'\G

      StarRocks(一)简介与手动部署_第2张图片

  5. 在hadoop1、hadoop3服务器启动FE节点,第一次启动需指定--helper参数,后续再启动无需指定此参数。
    • bin/start_fe.sh --helper hadoop2:9010 --daemon
  6. 都启动完成后,会看到hadoop1和hadoop3的状态(Alive)为True。

2.2、BE启动

        部署BE,用户可以使用命令直接将BE添加到集群中,一般至少布置3个BE,每个BE实例添加步骤相同。

  1. 在be目录下创建storage目录:mkdir -p storage
  2. 在mysql客户端添加hadoop2对应BE节点:ALTER SYSTEM ADD BACKEND "hadoop2:9050";
  3. 通过守护进程方式启动hadoop2上的BE:bin/start_be.sh --daemon
  4. 查看BE状况:SHOW PROC '/backends'\G

StarRocks(一)简介与手动部署_第3张图片

2.3、Broker进程部署

        Broker主要是将数据的导入与导出。例如与hadoop数据交互

  1. 通过守护进程方式启动Borker服务:bin/start_broker.sh --daemon
  2. 使用mysql添加对应节点:ALTER SYSTEM ADD BROKER broker1 "hadoop1:8000";
  3. 查看状态:SHOW PROC "/brokers"\G

    StarRocks(一)简介与手动部署_第4张图片

2.4、注意与Hadoop的端口冲突:

        有端口8030和端口8040,在这里我对hadoop的yarn-site.xml有做修改,如下:


        
                yarn.nodemanager.aux-services
                mapreduce_shuffle
        

        
                yarn.resourcemanager.hostname
                hadoop1
        

        
        
                yarn.resourcemanager.scheduler.address
                hadoop1:8076
        
        
        
        
                yarn.nodemanager.localizer.address
                0.0.0.0:23344
        

你可能感兴趣的:(#,StarRocks,olap,数据库,big,data)