文章目录
这里基本上是按文档来部署的,为了自己方便测试而纪录。
介绍
StarRocks 是一款高性能分析型数据仓库,使用向量化、MPP 架构、CBO、智能物化视图、可实时更新的列式存储引擎等技术实现多维、实时、高并发的数据分析。StarRocks 既支持从各类实时和离线的数据源高效导入数据,也支持直接分析数据湖上各种格式的数据。StarRocks 兼容 MySQL 协议,可使用 MySQL 客户端和常用 BI 工具对接。同时 StarRocks 具备水平扩展,高可用、高可靠、易运维等特性。广泛应用于实时数仓、OLAP 报表、数据湖分析等场景。
上面这段是直接引用官方的原话。
简单概括起来 Starrocks 有以下特点:
- 列式存储: 优化了列式存储和向量化查询执行,这对于分析查询通常能提供更好的性能。
- 实时写入: 支持实时数据写入和查询,这意味着它能够处理近实时的数据分析需求。
- 水平可伸缩性: 易于横向扩展,可以根据数据量和查询负载增加或减少节点。
- 高并发: 能够处理高并发查询,适用于多用户环境。
- MPP架构: 使用MPP架构,可以在多个节点上并行处理查询,提高了查询效率。
MPP 架构是 Massively Parallel Processing(大规模并行处理)架构,它是一种分布式计算架构,可以充分利用多节点的计算能力,实现高性能的数据分析。
StarRocks 的 MPP 架构具有以下特点:
- 并行计算:通过 MPP 计算框架,实现 SQL 的并行执行,从而实现良好的交互式分析体验。
- 分布式存储:采用分布式架构,对数据表进行水平划分并以多副本存储,支持灵活的集群规模伸缩,能够处理更高级别的数据分析需求。
- 弹性容错:支持多副本存储,具备弹性容错能力,能够自动恢复节点故障。
- 高可用:元数据和数据都采用多副本存储,并且集群中服务有热备和多实例部署,避免了单点故障。
- 扩展性:单集群节点规模可扩展到数百节点。
基于docker安装
注意:这里仅部署一台FE节点以及一到BE节点。在正常应用环境中,一个集群需要部署三个BE节点。
创建dockerfile文件:
yaml
FROM centos:centos7
# Prepare StarRocks Installer.
RUN yum -y install wget
RUN mkdir -p /data/deploy/
RUN wget -SO /data/deploy/StarRocks-2.2.1.tar.gz https://download.starrocks.com/zh-CN/download/request-download/30/StarRocks-2.2.1.tar.gz
RUN cd /data/deploy/ && tar zxf StarRocks-2.2.1.tar.gz
# Install Java JDK.
RUN yum -y install java-1.8.0-openjdk-devel.x86_64
RUN rpm -ql java-1.8.0-openjdk-devel.x86_64 | grep bin$
RUN /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64/bin/java -version
# Create directory for FE meta and BE storage in StarRocks.
RUN mkdir -p /data/deploy/StarRocks-2.2.1/fe/meta
RUN jps
RUN mkdir -p /data/deploy/StarRocks-2.2.1/be/storage
# Install relevant tools.
RUN yum -y install mysql net-tools telnet
# Run Setup script.
COPY run_script.sh /data/deploy/run_script.sh
RUN chmod +x /data/deploy/run_script.sh
CMD /data/deploy/run_script.sh
创建run_script.sh
文件:
shell
#!/bin/bash
# Set JAVA_HOME.
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64
# Start FE.
cd /data/deploy/StarRocks-2.2.1/fe/bin/
./start_fe.sh --daemon
# Start BE.
cd /data/deploy/StarRocks-2.2.1/be/bin/
./start_be.sh --daemon
# Sleep until the cluster starts.
sleep 30;
# Set BE server IP.
IP=$(ifconfig eth0 | grep 'inet' | cut -d: -f2 | awk '{print $2}')
mysql -uroot -h${IP} -P 9030 -e "alter system add backend '${IP}:9050';"
# Loop to detect the process.
while sleep 60; do
ps aux | grep starrocks | grep -q -v grep
PROCESS_STATUS=$?
if [ PROCESS_STATUS -ne 0 ]; then
echo "one of the starrocks process already exit."
exit 1;
fi
done
基于dockerfile构建镜像
shell
docker build --no-cache --progress=plain -t starrocks:1.0 .
启动容器
shell
docker run -p 9030:9030 -p 8030:8030 -p 8040:8040 --privileged=true -itd --name starrocks-test starrocks:1.0
验证是否部署成功
-
先进入创建的容器
docker exec -it -u root starrocks-test /bin/bash
-
执行命令mysql命令
mysql -uroot -h127.0.0.1 -P 9030
mysql# 查看fe节点信息 show proc '/frontends'\G # 查看pe节点信息 show proc '/backends'\G
最后
同类的产品有不少,比如 ClickHouse, Apache Druid 等,每种产品都有其特定的优势和适用的场景,我们之前选择使用它最大的原因就是因为具备水平拓展,方便我们部署,同时 StarRocks 在实时 OLAP 分析和高性能查询方面可能具有竞争优势。