
1、集群部署1.1、集群规划FEnode-17、node-18、node-19BEnode-17、node-18、node-191.2、基础环境1、指令集检查拓展可通过lscpu命令查看完整的CPU架构、核数、型号、指令集等信息cat/proc/cpuinfo|grep avx22、操作系统检查SR要求内核版本不低于3.10glibc版本不低于2.17相关检查命令系统查看cat/etc/os-release 内核查看cat/proc/version Glibc ldd--version3、端口冲突检查FE节点检查 ss-antpl|grep-E8030|9010|9020|9030|6090BE/CN节点检查 ss-antpl|grep-E9060|9050|8040|8060|9070Broker节点检查ss-antpl|grep-E80004、主机名检查启用FQDN访问注意事项主机名唯一配置hosts5、JDK配置说明第21步执行完成再配置cat ~/.bashrc EOF# jdkexport JAVA_HOME/usr/java/jdk-17.0.8 export PATH$JAVA_HOME/bin:$PATHEOF6、CPU性能模式设置cpufreq是一个动态调整CPU频率的模块选用performance模式可将CPU频率固定工作在其支持的最高运行频率上而不再动态调节。检查是否支持虚拟机不支持dnf install-y cpupowerutils cpupower frequency-info--policy若CPU不支持执行后提示Unable to determine current policy若CPU支持零时配置命令echoperformance|tee/sys/devices/system/cpu/cpu*/cpufreq/scaling_governor永久配置echoecho performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor/etc/rc.d/rc.local chmodx/etc/rc.d/rc.local7、Overcommit参数设置echovm.overcommit_memory1/etc/sysctl.conf sysctl-p/etc/sysctl.conf8、mmap参数设置echovm.max_map_count2000000/etc/sysctl.conf sysctl-p/etc/sysctl.conf9、透明大页设置echoecho never /sys/kernel/mm/transparent_hugepage/defrag/etc/rc.d/rc.localechoecho never /sys/kernel/mm/transparent_hugepage/enabled/etc/rc.d/rc.local chmod ax/etc/rc.d/rc.local10、Swap分区设置sed-ris/.*swap.*/#//etc/fstabechovm.swappiness0/etc/sysctl.conf sysctl-p11、磁盘调度算法HDD硬盘建议磁盘调度算法为deadline而SSD存储介质内核的I/O调度操作会导致性能损失将调度器设置为noop后内核不做任何操作直接将I/O请求下发给硬件以获取更好的性能。获取磁盘名lsblk 逐块磁盘检查cat/sys/block/sdb/queue/scheduler 通常返回值为noop[deadline]cfq逐台逐盘调整调度算法假设BE挂载了三块数据盘则需要分别执行echoecho noop | tee /sys/block/sdb/queue/scheduler/etc/rc.d/rc.localechoecho noop | tee /sys/block/sdc/queue/scheduler/etc/rc.d/rc.localechoecho noop | tee /sys/block/sdd/queue/scheduler/etc/rc.d/rc.local12、SELinux设置sed-is/SELINUXenforcing/SELINUXdisabled/g/etc/selinux/config13、防火墙设置systemctl stop firewalld systemctl disable firewalld14、语言环境设置echo$LANGechoexport LANGen_US.UTF-8/etc/profile source/etc/profile15、时区设置timedatectl 修改时区 timedatectlset-timezoneAsia/Shanghai hwclock16、ulimit设置ulimit-ncat/etc/security/limits.conf EOF*soft noproc 655350*hard noproc 655350*soft nofile 131072*hard nofile 131072*hard memlock unlimited*soft memlock unlimited EOF普通用户cat/etc/security/limits.d/99-nproc.conf EOF# 为所有用户设置最大进程数*soft nproc 65535*hard nproc 65535 EOF17、文件系统设置推荐使用ext4或xfs文件系统查看命令df-Th18、网络参数设置1、tcp_abort_on_overflowcat/proc/sys/net/ipv4/tcp_abort_on_overflow# 设置echoecho 1 /proc/sys/net/ipv4/tcp_abort_on_overflow/etc/rc.d/rc.local2、somaxconncat/proc/sys/net/core/somaxconn# 设置echoecho 1024 /proc/sys/net/core/somaxconn/etc/rc.d/rc.local19、时钟同步20、MySQL客户端21、创建用户和目录# 设置用户密码的方式为明文ansible cluster-m user-anamestarrocks password123456grep starrocks/etc/shadow ansible cluster-m shell-amkdir -p /data/starrocks/log/{fe,be}ansible cluster-m shell-amkdir -p /data/starrocks/data/{meta,storage}ansible cluster-m shell-achown -R starrocks:starrocks /data/starrocks1.3、集群部署1、解压ansible cluster-mcopy-asrc/usr/bigtop/3.3.0/usr/lib/starrocks-4.1.4/fe/conf/fe.conf dest/usr/bigtop/3.3.0/usr/lib/starrocks-4.1.4/fe/confansible cluster-mcopy-asrc/usr/bigtop/3.3.0/usr/lib/starrocks-4.1.4/be/conf/be.conf dest/usr/bigtop/3.3.0/usr/lib/starrocks-4.1.4/be/confansible cluster-m shell-achown -R starrocks:starrocks /usr/bigtop/3.3.0/usr/lib/starrocks-4.1.42、修改FE配置说明分发到其他节点修改priority_networks为其他节点IP即可cat fe/conf/fe.conf EOF# the output dir of stderr/stdout/gcLOG_DIR /data/starrocks/log/fe JAVA_HOME/usr/java/jdk-17.0.8 DATE \$(date%Y%m%d-%H%M%S)JAVA_OPTS-Dlog4j2.formatMsgNoLookupstrue -Xmx2048m -XX:UseG1GC -Xlog:gc*:\${LOG_DIR}/fe.gc.log.\$DATE:time -XX:ErrorFile\${LOG_DIR}/hs_err_pid%p.log -Djava.security.policy\${STARROCKS_HOME}/conf/udf_security.policysys_log_level INFO meta_dir /data/starrocks/data/meta http_port 18030 rpc_port 19020 query_port 19030 edit_log_port 19010 priority_networks 192.168.18.17 sys_log_dir /data/starrocks/log/fe audit_log_dir /data/starrocks/log/fe EOF3、修改BE配置说明分发到其他节点修改priority_networks为其他节点IP即可cat be/conf/be.conf EOF sys_log_level INFO# ports for admin, web, heartbeat servicebe_port 19060 be_http_port 18040 heartbeat_service_port 19050 brpc_port 18060 starlet_port 19070 priority_networks 192.168.18.17 storage_root_path /data/starrocks/data/storage,medium:SSD sys_log_dir /data/starrocks/log/be JAVA_HOME/usr/java/jdk-17.0.8 JAVA_OPTS--add-opensjava.base/java.utilALL-UNNAMED --add-opensjava.base/java.nioALL-UNNAMED --add-opensjava.base/sun.nio.chALL-UNNAMEDEOF4、修改hadoop_env.sh说明分别修改所有节点的FE、BE的配置fe/conf/hadoop_env.sh、be/conf/hadoop_env.sh# 最上面添加export HADOOP_USER_NAMEhive5、启动并添加FE启动FE服务cd/usr/bigtop/3.3.0/usr/lib/starrocks-4.1.4/./fe/bin/start_fe.sh--daemon登录StarRocksmysql-h192.168.18.17-P19030-uroot# 以root用户为例生产环境建议设置复杂密码setpasswordpassword(StarRocks*2308);mysql-h192.168.18.17-P19030-ustarrocks-pStarRocks*2308--skip-ssl添加FE服务alter system add follower192.168.18.18:19010;alter system add follower192.168.18.19:19010;6、启动并添加BE添加BEalter system add backend192.168.18.17:19050;alter system add backend192.168.18.18:19050;alter system add backend192.168.18.19:19050;各节点启动BE./be/bin/start_be.sh--daemon7、查看服务状态show frontends;show backends;2、集群操作2.1、参数分类1、系统参数变量查看show variables[like%xxx%];修改方式SQL支持配置多个变量select/*set_var(query_timeout500)*/namefrompeople order by name;SQL支持配置多个变量insert/*set_var(enable_spilltrue,spill_modeforce,enable_profiletrue)*/into table...Session仅当前连接生效setquery_timeout500;Global立即永久生效setgolbal query_timeout500;2、FE参数https://docs.starrocks.io/zh/docs/administration/configuration/FE_parameters/1、动态参数支持在线修改修改后立刻全局生效但重启后失效。支持动态修改的参数的查看方式返回值的IsMutable为true表示支持admin show frontend config[likepattern];动态参数修改的语法为adminsetfrontend config(keyvalue);2、静态参数仅能通过添加或修改fe.conf文件中的对应项修改后重启FE才能生效查看FE实际参数http:192.168.18.17:18030/variable3、BE参数https://docs.starrocks.io/zh/docs/administration/configuration/BE_parameters/1、动态参数支持逐台临时修改curl-XPOT http:192.168.18.17:18040/api/update_config?keyvalue需要逐个指定所有BE执行执行后立刻生效服务重启之后失效希望配置一直生效需在配置文件中进行修改。2、静态参数BE的静态参数仅支持通过be.conf修改且修改后需要重启BE生效。查看BE实际参数http:192.168.18.17:18040/varz2.2、性能测试https://docs.starrocks.io/zh/docs/benchmarking/2.3、集群保障全局超时setglobal query_timeout30;集群初始化一个cte多处引用导致重复读设置同一个表只读一次setglobal cbo_cte_reuse_rate0;设置执行图优化器超时setglobal new_planner_optimize_timeout10000;设置dop数量setglobal pipeline_dop8;限制scan paimon外表的最大分区setglobal scan_paimon_partition_num_limit100;2.3、报警规则建立实例异常报警机制BE/CN节点CPU使用率 70% BE/CN节点内存使用率 70% BE/CN节点CPU可用率 100% FE节点CPU使用率 70% FE节点内存使用率 70% FE节点可用率 100% BE阻塞队列数 2000 查询失败次数 N 查询延迟TP99 N2.4、元数据监控元数据监控大盘为实现有效治理通过实时获取查询审计日志并基于该审计日志配置元数据监控大盘为后续的慢查询优化提供数据支撑。select*from_starrocks_audit_db.starrocks_audit_tbl;数据集消耗CU汇总 查询次数判断是否可以开启 物化 缓存数据集、数据集名称、执行总CU消耗、总查询大小、查询次数、总查询行数、失败率、失败次数、单次消耗CU、查询时间(秒)、查询人2.5、压测发现问题和优化1、分区裁剪失效或未配置分区过滤导致全表扫描2、读取paimon表小文件过多查看读取文件数的量级运行SQL时加上hint/*set_var(enable_profiletrue)*/使运行SQL生成profile文件 在profile文件中搜索metadata 其中nativeReaderReadNum代表读取数据块数 nativeReaderReadBytes代表读取字节数。 单个分区nativeReaderReadNum200建议对paimon表进行排序。3、paimon表排序创建流批paimon表时建议使用分支表离线分支bucket设为-1实时分支按需设置bucket对于离线分支表使用clustering.columnsf1,f2指定排序字段只适用bucket-1一般取OLAP查询时常用过滤字段。 仅支持flink批写入写入表时需要使用hint/*options(sink.parallelism64)*/4、检查是否存在MapJoin优化如果查询中join了小表10MB建议在维表前添加[broadcast]效果类似与mapjoin。selectxxxfrombig_table aleft join[broadcast]dim_table on d on a.idd.id and a.dsxxx;5、检查是否跨地域SR实例和读取的表要在同一个地域如果跨地域查询时延会大大增加。6、检查paimon主键表是否加了dv删除向量模式在写入时会生成vector同主键哪些数据被删除掉读取可做过滤下推用于加快SR查询速度非主键表不需要加该参数。deletion-vectors.enabledtrue2.6、SR查询Fluss1、Union Read实时历史联合查询默认Union Read实时历史联合查询selectuser_id,count(*)fromods.orders where dt20261010groupby user_id;2、$lake只读历史selectregion,sum(amount)fromods.orders$lakewhere dt20261010groupby region;3、$rt只读实时实时点查数据回追select*fromods.orders$rtwhere order_id1001order by event_time desc limit 10;4、FlussCatalogFlussCatalog——FlussScanNode列裁剪分区裁剪谓词下推DLF鉴权Fluss实时段Arrow短期秒级新鲜 Paimon湖Parquent长周期全量历史秒级可查-Fluss承接增量日志表峰值3500万条/秒主键表500万条/秒支持部分列更新拼宽表低成本沉淀-Paimon承接历史自动分层同步Parquet高压缩类裁剪与分区裁剪使消费带宽-90%以上一条查询路径-StarRocks统一入口按checkpoint分段之前查Paimon复用湖仓优化之后的秒级增量查Fluss。开发运维效率 50%以上-验证周期5天——2天-实时链路成本-80%以上。