赞
踩
大数据技术AI
Flink/Spark/Hadoop/数仓,数据分析、面试,源码解读等干货学习资料
109篇原创内容
公众号
下载地址:https://www.starrocks.com/zh-CN/download
特点:
使用场景:
1.1 StarRocks介绍
StarRocks是新一代极速全场景MPP数据库
StraRocks充分吸收关系型OLAP数据库和分布式存储系统在大数据时代的优秀研究成果,在业界实践的基础上,进一步改进优化、升级架构,并增添了众多全新功能,形成了全新的企业级产品。
StarRocks致力于构建极速统一分析体验,满足企业用户的多种数据分析场景,支持多种数据模型(明细模型、聚合模型、更新模型),多种导入方式(批量和实时),可整合和接入多种现有系统(Spark、Flink、Hive、 ElasticSearch)。
StarRocks兼容MySQL协议,可使用MySQL客户端和常用BI工具对接StarRocks来进行数据分析。
StarRocks采用分布式架构,对数据表进行水平划分并以多副本存储。集群规模可以灵活伸缩,能够支持10PB级别的数据分析; 支持MPP框架,并行加速计算; 支持多副本,具有弹性容错能力。
StarRocks采用关系模型,使用严格的数据类型和列式存储引擎,通过编码和压缩技术,降低读写放大;使用向量化执行方式,充分挖掘多核CPU的并行计算能力,从而显著提升查询性能。
StarRocks可以满足企业级用户的多种分析需求,包括OLAP多维分析、定制报表、实时数据分析和Ad-hoc数据分析等。具体的业务场景包括:
OLAP多维分析
用户行为分析
用户画像、标签分析、圈人
高维业务指标报表
自助式报表平台
业务问题探查分析
跨主题业务分析
财务报表
系统监控分析
实时数据分析
电商大促数据分析
教育行业的直播质量分析
物流行业的运单分析
金融行业绩效分析、指标计算
广告投放分析
管理驾驶舱
探针分析APM(Application Performance Management)
高并发查询
广告主报表分析
零售行业渠道人员分析
SaaS行业面向用户分析报表
Dashbroad多页面分析
统一分析
通过使用一套系统解决多维分析、高并发查询、预计算、实时分析、Adhoc查询等场景,降低系统复杂度和多技术栈开发与维护成本。
FE:FrontEnd简称FE,是StarRocks的前端节点,负责管理元数据,管理客户端连接,进行查询规划,查询调度等工作。
BE:BackEnd简称BE,是StarRocks的后端节点,负责数据存储,计算执行,以及compaction,副本管理等工作。
Broker:StarRocks中和外部HDFS/对象存储等外部数据对接的中转服务,辅助提供导入导出功能。
StarRocksManager:StarRocks的管理工具,提供StarRocks集群管理、在线查询、故障查询、监控报警的可视化工具。
Tablet:StarRocks中表的逻辑分片,也是StarRocks中副本管理的基本单位,每个表根据分区和分桶机制被划分成多个Tablet存储在不同BE节点上。
StarRocks集群由FE和BE构成, 可以使用MySQL客户端访问StarRocks集群。
FE接收MySQL客户端的连接, 解析并执行SQL语句。
管理元数据, 执行SQL DDL命令, 用Catalog记录库, 表, 分区, tablet副本等信息。
FE高可用部署, 使用复制协议选主和主从同步元数据, 所有的元数据修改操作, 由FE leader节点完成, FE follower节点可执行读操作。元数据的读写满足顺序一致性。FE的节点数目采用2n+1, 可容忍n个节点故障。 当FE leader故障时, 从现有的follower节点重新选主, 完成故障切换。
FE的SQL layer对用户提交的SQL进行解析, 分析, 改写, 语义分析和关系代数优化, 生产逻辑执行计划。
FE的Planner负责把逻辑计划转化为可分布式执行的物理计划, 分发给一组BE。
FE监督BE, 管理BE的上下线, 根据BE的存活和健康状态, 维持tablet副本的数量。
FE协调数据导入, 保证数据导入的一致性。
BE管理tablet副本, tablet是table经过分区分桶形成的子表, 采用列式存储。
BE受FE指导, 创建或删除子表。
BE接收FE分发的物理执行计划并指定BE coordinator节点, 在BE coordinator的调度下, 与其他BE worker共同协作完成执行。
BE读本地的列存储引擎获取数据,并通过索引和谓词下沉快速过滤数据。
BE后台执行compact任务, 减少查询时的读放大。
数据导入时, 由FE指定BE coordinator, 将数据以fanout的形式写入到tablet多副本所在的BE上。
StarRocks-XX-1.0.0 ├── be # BE目录 │ ├── bin │ │ ├── start_be.sh # BE启动命令 │ │ └── stop_be.sh # BE关闭命令 │ ├── conf │ │ └── be.conf # BE配置文件 │ ├── lib │ │ ├── starrocks_be # BE可执行文件 │ │ └── meta_tool │ └── www ├── fe # FE目录 │ ├── bin │ │ ├── start_fe.sh # FE启动命令 │ │ └── stop_fe.sh # FE关闭命令 │ ├── conf │ │ └── fe.conf # FE配置文件 │ ├── lib │ │ ├── starrocks-fe.jar # FE jar包 │ │ └── *.jar # FE 依赖的jar包 │ └── webroot └── udf
FE的配置文件为StarRocks-XX-1.0.0/fe/conf/fe.conf, 默认配置已经足以启动集群, 有经验的用户可以查看手册的系统配置章节, 为生产环境定制配置,为了让用户更好的理解集群的工作原理, 此处只列出基础配置。
准备三台物理机, 需要以下环境支持:
Linux (Centos 7+)
Java 1.8+
CPU需要支持AVX2指令集,cat /proc/cpuinfo |grep avx2有结果输出表明CPU支持,如果没有支持,建议更换机器,StarRocks使用向量化技术需要一定的指令集支持才能发挥效果。
将StarRocks的二进制产品包分发到目标主机的部署路径并解压,可以考虑使用新建的StarRocks用户来管理。
(1)解压tar包
[root@hadoop01 software]# tar -zxvf StarRocks-2.0.1.tar.gz -C /data/
(2)部署FE,修改配置文件,添加jvm参数,建议-Xmx参数设置到16G以上
[root@hadoop01 software]# cd /data/StarRocks-2.0.1/fe/conf/
[root@hadoop01 conf]# vim fe.conf
JAVA_OPTS = "-Xmx4096m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:$STARROCKS_HOME/log/fe.gc.log"
(3)创建元数据目录
[root@hadoop01 conf]# cd ..
[root@hadoop01 fe]# mkdir -p meta
注意:mkdir -p meta (1.19.x及以前的版本需要使用mkdir -p doris-meta)
(4)分发给hadoop02,hadoop03
[root@hadoop01 module]# scp -r StarRocks-2.0.1/ hadoop02:/data/
[root@hadoop01 module]# scp -r StarRocks-2.0.1/ hadoop03:/data/
(5)启动hadoop02 FE节点
[root@hadoop02 fe]# bin/start_fe.sh --daemon
(6)确认启动FE启动成功
查看日志log/fe.log确认。
如果FE启动失败,可能是由于端口号被占用,修改配置文件conf/fe.conf中的端口号http_port。
使用jps命令查看java进程确认"StarRocksFe"存在。
使用浏览器访问8030端口, 打开StarRocks的WebUI, 用户名为root, 密码为空。
(1)启动mysql客户端,访问FE,查看FE状况
[root@hadoop02 fe]# mysql -h hadoop02 -uroot -P9030
mysql> SHOW PROC '/frontends'\G
注意:这里默认root用户密码为空,端口为fe/conf/fe.conf中的query_port配置项,默认为9030
(2)查看FE状态
Role为FOLLOWER说明这是一个能参与选主的FE;
IsMaster为true,说明该FE当前为主节点。
如果MySQL客户端连接不成功,请查看log/fe.warn.log日志文件,确认问题。由于是初次启动,如果在操作过程中遇到任何意外问题,都可以删除并重新创建FE的元数据目录,再从头开始操作
FE的高可用集群采用主从复制架构, 可避免FE单点故障. FE采用了类raft的bdbje协议完成选主, 日志复制和故障切换. 在FE集群中, 多实例分为两种角色: follower和observer;
前者为复制协议的可投票成员, 参与选主和提交日志, 一般数量为奇数(2n+1), 使用多数派(n+1)确认, 可容忍少数派(n)故障;
而后者属于非投票成员, 用于异步订阅复制日志, observer的状态落后于follower, 类似其他复制协议中的learner角色。
FE集群从follower中自动选出master节点, 所有更改状态操作都由master节点执行, 从FE的master节点可以读到最新的状态. 更改操作可以从非master节点发起, 继而转发给master节点执行, 非master节点记录最近一次更改操作在复制日志中的LSN, 读操作可以直接在非master节点上执行, 但需要等待非master节点的状态已经同步到最近一次更改操作的LSN, 因此读写非Master节点满足顺序一致性. Observer节点能够增加FE集群的读负载能力, 时效性要求放宽的非紧要用户可以读observer节点。
FE节点之间的时钟相差不能超过5s, 使用NTP协议校准时间。
一台机器上只可以部署单个FE节点。所有FE节点的http_port需要相同。
配置如下:
(1)添加其他FE节点,角色也分为FOLLOWER,OBSERVER
使用MySQL客户端连接已有的FE, 添加新实例的信息,信息包括角色、ip、port:
mysql> ALTER SYSTEM ADD FOLLOWER "hadoop03:9010";
mysql> ALTER SYSTEM ADD OBSERVER "hadoop02:9010";
(2)启动hadoop03,hadoop01 FE节点,第一次启动需指定–helper参数,后续再启动无需指定此参数
[root@hadoop03 fe]# bin/start_fe.sh --helper hadoop01:9010 --daemon
[root@hadoop01 fe]# bin/start_fe.sh --helper hadoop01:9010 --daemon
FE节点之间需要两两互联才能完成复制协议选主, 投票,日志提交和复制等功能。FE节点首次启动时,需要指定现有集群中的一个节点作为helper节点, 从该节点获得集群的所有FE节点的配置信息,才能建立通信连接,因此首次启动需要指定–helper参数:
当FE再次启动时,无须指定–helper参数,因为FE已经将其他FE的配置信息存储于本地目录, 因此可直接启动:
./bin/start_fe.sh --daemon
(3)全部启动完毕后,再使用mysql客户端查看FE的状况,alive全显示true则无问题
mysql> SHOW PROC '/frontends'\G
节点的Alive显示为true则说明添加节点成功
(4)节点的Alive显示为true则说明添加节点成功
alter system drop follower "fe_host:edit_log_port";
alter system drop observer "fe_host:edit_log_port";
(1)部署BE,用户可以使用命令直接将BE添加到集群中,一般至少布置3个BE,每个BE实例添加步骤相同
[root@hadoop02 module]# cd StarRocks-2.0.1/be/
[root@hadoop02 be]# mkdir -p storage
(2)使用mysql客户端添加hadoop02对应be节点
mysql> ALTER SYSTEM ADD BACKEND "hadoop02:9050";
这里IP地址为和priority_networks设置匹配的IP,portheartbeat_service_port,默认为9050
如出现错误,需要删除BE节点,应用下列命令:
alter system decommission backend "be_host:be_heartbeat_service_port";
(3)添加完毕后,启动hadoop02 BE节点
[root@hadoop02 be]# bin/start_be.sh --daemon
(4)查看BE状况,也是同样alive为true是正常运行
mysql> SHOW PROC '/backends'\G
(1)同样步骤在hadoop03,hadoop01部署BE,并添加节点
[root@hadoop03 module]# cd StarRocks-2.0.1/be/
[root@hadoop03 be]# mkdir -p storage
[root@hadoop01 module]# cd StarRocks-2.0.1/be/
[root@hadoop01 be]# mkdir -p storage
mysql> ALTER SYSTEM ADD BACKEND "hadoop03:9050";
mysql> ALTER SYSTEM ADD BACKEND "hadoop01:9050";
[root@hadoop03 be]# bin/start_be.sh --daemon
[root@hadoop01 be]# bin/start_be.sh --daemon
(1)部署Broker,此角色主要用于后续Broker load使用,启动安装目录的Broker服务
[root@hadoop02 StarRocks-2.0.1]# cd apache_hdfs_broker/
[root@hadoop02 apache_hdfs_broker]# bin/start_broker.sh --daemon
[root@hadoop03 StarRocks-2.0.1]# cd apache_hdfs_broker/
[root@hadoop03 apache_hdfs_broker]# bin/start_broker.sh --daemon
[root@hadoop01 StarRocks-2.0.1]# cd apache_hdfs_broker/
[root@hadoop01 apache_hdfs_broker]# bin/start_broker.sh --daemon
(2)使用mysql添加对应节点
mysql> ALTER SYSTEM ADD BROKER broker1 "hadoop02:8000";
mysql> ALTER SYSTEM ADD BROKER broker2 "hadoop03:8000";
mysql> ALTER SYSTEM ADD BROKER broker3 "hadoop01:8000";
(3)查看状态
mysql> SHOW PROC "/brokers"\G
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。