StarRocks本地部署

文章目录

      • 介绍
      • 基于docker安装
      • 基于dockerfile构建镜像
      • 启动容器
      • 验证是否部署成功
      • 最后

官方文档
这里基本上是按文档来部署的,为了自己方便测试而纪录。

介绍

StarRocks 是一款高性能分析型数据仓库,使用向量化、MPP 架构、CBO、智能物化视图、可实时更新的列式存储引擎等技术实现多维、实时、高并发的数据分析。StarRocks 既支持从各类实时和离线的数据源高效导入数据,也支持直接分析数据湖上各种格式的数据。StarRocks 兼容 MySQL 协议,可使用 MySQL 客户端和常用 BI 工具对接。同时 StarRocks 具备水平扩展,高可用、高可靠、易运维等特性。广泛应用于实时数仓、OLAP 报表、数据湖分析等场景。

上面这段是直接引用官方的原话。

简单概括起来 Starrocks 有以下特点:

  • 列式存储: 优化了列式存储和向量化查询执行,这对于分析查询通常能提供更好的性能。
  • 实时写入: 支持实时数据写入和查询,这意味着它能够处理近实时的数据分析需求。
  • 水平可伸缩性: 易于横向扩展,可以根据数据量和查询负载增加或减少节点。
  • 高并发: 能够处理高并发查询,适用于多用户环境。
  • MPP架构: 使用MPP架构,可以在多个节点上并行处理查询,提高了查询效率。

MPP 架构是 Massively Parallel Processing(大规模并行处理)架构,它是一种分布式计算架构,可以充分利用多节点的计算能力,实现高性能的数据分析。

StarRocks 的 MPP 架构具有以下特点:

  1. 并行计算:通过 MPP 计算框架,实现 SQL 的并行执行,从而实现良好的交互式分析体验。
  2. 分布式存储:采用分布式架构,对数据表进行水平划分并以多副本存储,支持灵活的集群规模伸缩,能够处理更高级别的数据分析需求。
  3. 弹性容错:支持多副本存储,具备弹性容错能力,能够自动恢复节点故障。
  4. 高可用:元数据和数据都采用多副本存储,并且集群中服务有热备和多实例部署,避免了单点故障。
  5. 扩展性:单集群节点规模可扩展到数百节点。

基于docker安装

注意:这里仅部署一台FE节点以及一到BE节点。在正常应用环境中,一个集群需要部署三个BE节点。

创建dockerfile文件:

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文件:

#!/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构建镜像

docker build --no-cache --progress=plain -t starrocks:1.0 .

启动容器

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

    # 查看fe节点信息
    show proc '/frontends'\G
    
    # 查看pe节点信息
    show proc '/backends'\G
    

最后

同类的产品有不少,比如 ClickHouse, Apache Druid 等,每种产品都有其特定的优势和适用的场景,我们之前选择使用它最大的原因就是因为具备水平拓展,方便我们部署,同时 StarRocks 在实时 OLAP 分析和高性能查询方面可能具有竞争优势。

你可能感兴趣的:(数据库,数据库,大数据,StarRocks,数据仓库)