使用root用户通过XShell工具访问服务器,单节点架构设计如下:
一、机器节点 192.168.6.130 (starrocks)
二、部署服务
1 FE(Leader)
1 BE
1 Broker
mysql-client
三、部署目录及数据目录设计如下,后续的部署操作严格按照部署设计进行:
1、FE
部署目录:/opt/module/starrocks/fe
日志目录:/opt/module/starrocks/fe/log(默认)
元数据目录:/opt/meta – 不配置启动不起来
2、BE
部署目录:/opt/module/starrocks/be
日志目录:/opt/module/starrocks/be/log(默认)
数据目录:/opt/storage
3、Broker
部署目录:/opt/module/starrocks/apache_hdfs_broker
开始部署:
下载好的部署包上传至/opt/software/starrocks
解压部署包:
tar -zxvf StarRocks-3.0.4.tar.gz -C /opt/module/
mv StarRocks-3.0.4 starrocks
创建元数据存储目录:
mkdir /opt/meta
查看安装了那些jdk
rpm -qa | grep java
自带的JDK不完整,删除之
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.372.b07-1.el7_9.x86_64
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.372.b07-1.el7_9.x86_64
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64
rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.261-2.6.22.2.el7_8.x86_64
查找安装JDK
yum -y list java* -- 列出可安装的版本
yum install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64
JAVA_HOME 配置
vim /etc/profile
### 将以下变量添加到文件末尾
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.372.b07-1.el7_9.x86_64/
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
source /etc/profile
修改配置文件,通常不用修改
vi /opt/module/starrocks/fe/conf/fe.conf
meta_dir = /opt/meta
priority_networks = 192.168.6.130
启动FE
cd /opt/module/starrocks/fe/bin/
./start_fe.sh --daemon
查看进程
jps
使用mysql-client访问FE
mysql -h192.168.6.130 -P9030 -uroot
mysql> show frontends\G
Alive为true即说明FE节点状态正常。
添加实例进入集群:
mysql> alter system add backend '192.168.6.130:9050';
mysql> alter system add broker hdfs_broker '192.168.6.130:8000';
可使用dropp命令删除:mysql> alter system dropp backend '192.168.6.130:9050';
部署BE
新建BE数据存储目录
mkdir /opt/storage
修改配置文件
vi /opt/module/starrocks/be/conf/be.conf
priority_networks = 192.168.6.130
storage_root_path = /opt/storage
启动BE
cd /opt/module/starrocks/be/bin/
./start_be.sh --daemon
查看进程 有starrocks_be进程,即为启动成功
ps -ef | grep starrocks_be
查看BE状态
mysql -h192.168.6.130 -P9030 -uroot
mysql> show backends\G
一般Alive为true即为状态正常。若为false,可根据日志排查问题。同样的,因为当前BE为初次启动,如果出现无法快速定位的问题,可以清空storage数据目录,重新启动服务。
退出
mysql> exit;
启动Broker
cd /opt/module/starrocks/apache_hdfs_broker/bin/
./start_broker.sh --daemon
查看进程
jps | grep BrokerBootstrap
查看Broker状态
mysql -h192.168.6.130 -P9030 -uroot
mysql> show broker\G
简单使用示例
root密码也为root:
mysql> set password=password('root');
新建一个starrocks数据库:
mysql> create database starrocks;
所有mysql的操作都可以在mysql客户端进行,和操作mysql数据库一样。
web 访问
http://192.168.6.130:8030
简单使用
创建表 test
CREATE TABLE `starrocks`.`test` (
`id` INTEGER NOT NULL ,
`name` VARCHAR(100) NULL ,
`value` VARCHAR(100) NULL
)
报错:
> 1064 - Create olap table should contain distribution desc
修改:
CREATE TABLE `starrocks`.`test` (
`id` INTEGER NOT NULL ,
`name` VARCHAR(100) NULL ,
`value` VARCHAR(100) NULL
)
DISTRIBUTED BY HASH(`id`) BUCKETS 10
报错:
> 1064 - Unexpected exception: Unable to find 3 alive nodes on different hosts to create 3 replicas
修改:
由于是单机部署,只有一个fe
CREATE TABLE `starrocks`.`test` (
`id` INTEGER NOT NULL ,
`name` VARCHAR(100) NULL ,
`value` VARCHAR(100) NULL
)
DISTRIBUTED BY HASH(`id`) BUCKETS 10
PROPERTIES
(
"replication_num" = "1"
);
报错:
> 1064 - Unexpected exception: Can't create table 'test' (errno: table already exists)
创建一个新的数据库
create database example_db;
CREATE TABLE `example_db`.`test` (
`id` INTEGER NOT NULL ,
`name` VARCHAR(100) NULL ,
`value` VARCHAR(100) NULL
)
DISTRIBUTED BY HASH(`id`) BUCKETS 10
PROPERTIES
(
"replication_num" = "1"
);
成功!
StarRocks的四种数据模型分别是:明细模型,聚合模型,更新模型和主键模型
它们的使用可以参考:https://blog.csdn.net/weixin_46429290/article/details/129958801
下面创建一个主键模型的表:
CREATE TABLE `DIM_部门` (
`部门ID` VARCHAR(100) NOT NULL,
`部门编号` VARCHAR(20) NULL,
`部门名称` VARCHAR(20) NULL,
`部门等级` INT NOT NULL,
`部门类型ID` CHAR(36) NULL,
`部门类型` VARCHAR(20) NULL,
`上级部门ID` CHAR(36) NULL,
`部门是否有效` TINYINT NOT NULL,
`部门负责人ID` CHAR(36) NOT NULL,
`部门负责人` VARCHAR(20) NULL,
`部门负责人电话` VARCHAR(20) NULL,
`数据创建时间` DATETIME NULL,
`数据更新时间` DATETIME NULL
)PRIMARY KEY (`部门ID`)
DISTRIBUTED BY HASH(`部门ID`) BUCKETS 4
PROPERTIES(
"replication_num" = "1",
"enable_persistent_index" = "true"
);
插入数据:
INSERT INTO `DIM_部门`
VALUES
('E5517C05-E7A5-4989-A373-0033578B70F8', '2022091701', '河北', 4, 'C5564066-04E8-4008-AF5C-467020D95083', '片区', 'BC3EE6A0-C5E6-4C62-A13A-B35FAF4C88C7', '0', 'D0DCD358-75B7-49AB-B1EA-AA997C9A0B3C', '刘老师', '18900000000', '2023-06-02 17:06:10.2859327', '2023-08-10 19:02:02.6732241'),
('14ED47DC-DFA5-4C76-B5BB-00A1EA15AC07', '1', '销售部(总部)', 2, 'B9838269-780B-4B5E-8848-ACF6A5FD5370', '部门', 'ACEDF115-2EA2-43CE-909D-2E5317A22EB2', '0', 'A4233B06-A028-46F0-B604-BDD4776ED2C4', '黄老师', '18800000000', '2023-06-02 17:06:10.2859327', '2023-08-10 19:02:02.6732241')
报错:
> 1064 - Insert has filtered data in strict mode, txn_id = 14 tracking sql = select tracking_log from information_schema.load_tracking_logs where job_id=12200
经查,是部门名称
列过短造成的。
ALTER TABLE `DIM_部门` MODIFY COLUMN `部门名称` VARCHAR(200);
DESC `DIM_部门`
INSERT INTO `DIM_部门`
VALUES
('E5517C05-E7A5-4989-A373-0033578B70F8', '2022091701', '河北', 4, 'C5564066-04E8-4008-AF5C-467020D95083', '片区', 'BC3EE6A0-C5E6-4C62-A13A-B35FAF4C88C7', '0', 'D0DCD358-75B7-49AB-B1EA-AA997C9A0B3C', '刘老师', '18900000000', '2023-06-02 17:06:10.2859327', '2023-08-10 19:02:02.6732241'),
('14ED47DC-DFA5-4C76-B5BB-00A1EA15AC07', '1', '销售部', 2, 'B9838269-780B-4B5E-8848-ACF6A5FD5370', '部门', 'ACEDF115-2EA2-43CE-909D-2E5317A22EB2', '0', 'A4233B06-A028-46F0-B604-BDD4776ED2C4', '黄老师', '18800000000', '2023-06-02 17:06:10.2859327', '2023-08-10 19:02:02.6732241')
插入成功!且可多次插入同一主键的数据,视作更新。
接下来就可以用Navicat 直接从sqlserver或其他数据库,直接向此表复制数据了。
StarRocks 运维工具 StarGo ,了解一下
starrocks 部署,参考一下:https://blog.csdn.net/wr_java/article/details/129876573