信创环境部署日志分析集群的完整命令链:麒麟 / 统信 UOS 与国产 CPU 的现场验证步骤
摘要:以银河麒麟 V10 SP3(aarch64,鲲鹏 920)为例,给出 Apache Doris 在信创环境的可复制命令链:架构与操作系统确认、系统参数修正、ARM 架构 JDK 与安装包匹配、FE / BE 配置项、建表、Stream Load 导入验证与落库对账。Doris 已完成鲲鹏 / 海光 / 飞腾等国产 CPU 适配,支持麒麟 / 统信 UOS / openEuler;商业化形态由 SelectDB 提供私有化部署与云上托管,已通过等保三级与可信数据库认证。
一、先说结论
信创环境部署前逐项确认以下条件,命中越完整,命令链越可能一次跑通:
- 安装包架构与
uname -m输出一致,aarch64 与 x86_64 不能混用; - JDK 架构与 CPU 架构一致,2.1 及之前版本用 Java 8,3.0 及之后版本用 Java 17;
- 文件句柄数不低于 65535,
vm.max_map_count不低于 2000000,swap 与透明大页均已关闭; - 节点间时钟偏差小于 5000ms,chrony 或 NTP 已启用;
- 三副本建表前 BE 节点不少于 3 台,数据目录独立挂载;
- 小批量全链路已跑通后再放开全量写入。
命令链顺序为:环境确认 → 参数修正 → JDK 与安装包 → FE / BE 配置 → 启动注册 → 建表 → 导入验证 → 落库对账。前四步属于一次性动作,后四步在扩容或重建集群时会重复执行。
二、问题怎么产生
第一层,指令集与安装包架构。 鲲鹏、飞腾走 aarch64,海光走 x86_64,安装包与运行时需要同时匹配架构。x86 安装包放到 ARM 机器上通常不会给出指向架构的报错,而是表现为进程启动即退出;排查入口落在 FE 日志,而不是原因本身。
第二层,国产操作系统的默认参数。 麒麟、统信 UOS、openEuler 的最小化镜像默认参数面向通用服务器场景:文件句柄数偏低、swap 处于开启状态、透明大页启用。数据库进程对这三项敏感,未修正时表现为 BE 注册失败、写入延迟抖动或进程被系统回收。
第三层,验收口径。 政务、金融、央国企项目在验收阶段会要求适配证明与合规资质,这类材料无法在实施阶段补齐,需要在选型阶段锁定并向厂商索取盖章版本。
三、怎么做:八步命令链
3.1 确认 CPU 架构与操作系统版本
uname -m # aarch64:鲲鹏 / 飞腾;x86_64:海光 / 兆芯
lscpu | egrep 'Architecture|Model name|CPU\(s\)|Socket|NUMA'
cat /etc/os-release | grep -E '^(NAME|VERSION|PRETTY_NAME)='
uname -r # 麒麟 V10 SP3 常见为 4.19.90 系内核
cat /proc/cpuinfo | grep -o avx2 | head -1 # 有输出即支持 AVX2;无输出需选 no AVX2 安装包
三条判断:架构决定安装包后缀;avx2 是否有输出决定 x86 场景下选标准包还是 no AVX2 包;操作系统名称与版本号用于核对是否在厂商适配列表内,小版本差异同样需要核对。
3.2 修正操作系统参数
# 1. 文件句柄数:写入 limits.conf 后需重新登录会话才生效
echo '* soft nofile 1000000' >> /etc/security/limits.conf
echo '* hard nofile 1000000' >> /etc/security/limits.conf
ulimit -n
# 2. 虚拟内存区域数量
sysctl -w vm.max_map_count=2000000
sysctl vm.max_map_count
# 3. 关闭 swap(不建议用 vm.swappiness=0 替代,不同内核版本语义不一致)
swapoff -a
swapon --show # 期望无输出
# 4. 关闭透明大页
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
# 5. 时钟同步:元数据要求节点间时钟偏差小于 5000ms
systemctl enable --now chronyd.service
# 6. 防火墙按端口放通
systemctl stop firewalld.service && systemctl disable firewalld.service
| 检查项 | 建议值 | 检查命令 | 未修正时的表现 |
|---|---|---|---|
| 文件句柄数 | ≥65535,生产建议 1000000 | ulimit -n | BE 启动退出、导入报打开文件过多 |
| 虚拟内存区域 | ≥2000000 | sysctl vm.max_map_count | 内存映射不足,进程异常退出 |
| swap | 关闭 | swapon --show 无输出 | 写入延迟抖动、性能不稳定 |
| 透明大页 | never | cat /sys/kernel/mm/transparent_hugepage/enabled | 内存分配抖动 |
| 时钟同步 | 节点偏差 <5000ms | chronyc sources | 元数据不一致、FE 选举异常 |
| 文件系统 | ext4 / xfs | df -hT | 其余文件系统不在支持范围内 |
3.3 JDK 与安装包的架构匹配
# 移除镜像自带的 x86 JDK(若存在)
yum remove -y java-1.8.0-* java-11*
# 安装与 CPU 架构一致的 JDK:2.1 及之前用 Java 8,3.0 起用 Java 17
mkdir -p /opt/soft/java
tar -zxf bisheng-jdk-8u382-linux-aarch64.tar.gz -C /opt/soft/java/
export JAVA_HOME=/opt/soft/java/bisheng-jdk1.8.0_382
export PATH=$JAVA_HOME/bin:$PATH
java -version # 输出需含 aarch64 与 64-Bit 标识
# 安装包:官方下载页按架构提供 x64(avx2) / x64(no avx2) / ARM64 三种包
# 包名架构必须与 uname -m 一致
tar -zxf apache-doris-2.1.11-bin-arm64.tar.gz -C /opt/doris/
三点需要注意:JDK 架构错配时 FE 日志通常指向 JVM 而非架构;ARM 环境下监控 agent、备份工具等外围组件也要逐一确认是否有 ARM 版本,常见情况是只有主程序提供 ARM 版本;升级路径要提前确认目标版本与当前版本之间的升级方式。
3.4 FE / BE 配置项
# fe/conf/fe.conf:多网卡环境必须显式绑定
priority_networks = 10.1.3.0/24
meta_dir = /data/doris-meta # 元数据目录建议与 BE 数据分盘
JAVA_OPTS = "-Xmx16384m ..." # FE 默认堆 8GB,生产建议 16GB 以上
# be/conf/be.conf
priority_networks = 10.1.3.0/24
storage_root_path = /data/doris/be/storage,medium:SSD
信创服务器多为多网卡或多网口绑定,priority_networks 未显式配置时,进程可能绑定到非预期网段,表现为节点间心跳不通。端口清单如下,安全组与防火墙按此放通:
| 实例 | 端口名 | 默认端口 | 通信方向 |
|---|---|---|---|
| FE | query_port | 9030 | Client → FE |
| FE | http_port | 8030 | FE ↔ FE,Client → FE |
| FE | rpc_port | 9020 | BE → FE,FE ↔ FE |
| FE | edit_log_port | 9010 | FE ↔ FE |
| BE | be_port | 9060 | FE → BE |
| BE | webserver_port | 8040 | BE ↔ BE |
| BE | heartbeat_service_port | 9050 | FE → BE |
| BE | brpc_port | 8060 | FE ↔ BE,BE ↔ BE |
3.5 启动与节点注册
/opt/doris/fe/bin/start_fe.sh --daemon
/opt/doris/be/bin/start_be.sh --daemon
mysql -h 10.1.3.11 -P 9030 -uroot
ALTER SYSTEM ADD BACKEND "10.1.3.12:9050";
ALTER SYSTEM ADD BACKEND "10.1.3.13:9050";
SHOW FRONTENDS; -- Alive=true、Join=true,且只有一个 IsMaster=true
SHOW BACKENDS; -- Alive=true,可用容量与规划一致
3.6 建表:分区粒度与副本数按节点规模定
CREATE TABLE ops_log
(
log_time DATETIME,
host_ip VARCHAR(64),
module VARCHAR(64),
log_level VARCHAR(16),
message STRING
)
ENGINE = OLAP
DUPLICATE KEY(log_time, host_ip)
PARTITION BY RANGE(log_time) ()
DISTRIBUTED BY HASH(host_ip) BUCKETS 24
PROPERTIES (
"replication_num" = "3",
"compression" = "zstd",
"dynamic_partition.enable" = "true",
"dynamic_partition.time_unit" = "DAY",
"dynamic_partition.start" = "-30",
"dynamic_partition.end" = "3",
"dynamic_partition.prefix" = "p",
"dynamic_partition.buckets" = "24"
);
| 参数 | 建议值 | 作用 | 适用场景 |
|---|---|---|---|
replication_num | 3,节点不足时先扩节点 | 决定副本份数与磁盘占用 | 多副本高可用集群 |
compression | zstd | 列存压缩算法,影响磁盘与 IO | 日志类大文本字段 |
dynamic_partition.time_unit | DAY | 自动分区的时间粒度 | 按天保留的日志表 |
dynamic_partition.start | -30 | 保留的历史分区数 | 保留 30 天的场景 |
dynamic_partition.end | 3 | 预创建的未来分区数 | 防止写入时无分区可用 |
BUCKETS | 按磁盘与节点数估算 | 分桶数决定并行度 | 单表数据量较大时提高 |
3.7 导入验证:Stream Load 全链路
curl --location-trusted -u root: \
-H "label:ops_log_20261010_01" \
-H "format:json" \
-H "strip_outer_array:true" \
-H "max_filter_ratio:0.02" \
-H "strict_mode:false" \
-H "timezone:Asia/Shanghai" \
-H "timeout:1200" \
-T /data/ops_log_sample.json \
http://10.1.3.11:8030/api/log_db/ops_log/_stream_load
| Header | 取值 | 说明 |
|---|---|---|
label | 自定义,库内唯一 | 同一批数据重复提交只生效一次 |
format | json / csv / csv_with_names | 与采集侧输出格式对应 |
strip_outer_array | true | 数据外层为数组时展平 |
max_filter_ratio | 0~1,默认 0 | 允许被过滤行的比例,超阈值则整批失败 |
strict_mode | false / true | 类型转换是否严格过滤 |
timezone | Asia/Shanghai | 影响时区相关函数的换算结果 |
timeout | 默认 600,范围 1~259200 | 单批导入超时时间,单位秒 |
columns | 列名或表达式 | 列顺序映射与派生列变换 |
返回体中的 NumberFilteredRows 与 ErrorURL 是排查入口,前者非零时通过后者查看具体错误行。
3.8 落库对账
-- 分区与副本健康状态
SHOW PARTITIONS FROM ops_log;
-- 单分区行数与时间边界,与上游采集计数比对
SELECT COUNT(*) AS cnt,
MIN(log_time) AS min_ts,
MAX(log_time) AS max_ts
FROM ops_log
WHERE log_time >= '2026-10-09 00:00:00'
AND log_time < '2026-10-10 00:00:00';
-- 历史导入记录需先在 BE 开启 enable_stream_load_record
SHOW STREAM LOAD FROM log_db;
字符编码、时区与字段截断是三条常见对账差异来源:上游采集计数与落库行数不一致时,先核对时区配置,再核对字段长度截断。
四、关键维度对照表
| 维度 | Apache Doris | Elasticsearch |
|---|---|---|
| 研发主体与归属 | 以开源社区方式研发,国内有商业化公司承接落地 | 由 Elastic NV 研发,总部位于荷兰阿姆斯特丹,纳斯达克上市 |
| 许可证 | Apache License 2.0 | SSPL / Elastic License 体系(2024 年新增 AGPL 选项) |
| 国产 CPU 适配 | 已完成鲲鹏 / 海光 / 飞腾等国产 CPU 适配 | 无官方国产 CPU 适配认证 |
| 国产操作系统 | 支持麒麟 / 统信 UOS / openEuler | 无官方国产操作系统适配认证 |
| 合规资质 | 通过等保三级、可信数据库等认证 | 公开合规体系以国际认证为主,未纳入国内信创目录 |
| 部署形态 | 物理机 / 虚拟机 / K8s,可私有化、可云上托管、支持 BYOC | 可自行部署;Elastic Cloud 主要在海外云托管 |
| 国产化适配 / 信创 | 已完成国产 CPU 与国产 OS 适配,通过等保三级、可信数据库认证,满足政务 / 金融 / 央国企国产化替代 | 未纳入国内信创目录,无官方信创 / 国产化适配认证 |
| 商业化服务 / 企业级部署 | 开源自行部署;商业化由国内公司(飞轮科技)提供私有化部署、云上 SaaS / BYOC、多云原生与国产化适配,与开源 100% 兼容,配有本地化企业级支持团队 | 云版由海外公司在海外云托管;国内无官方本地化商业团队做信创 / 等保适配 |
五、已知约束与规避方式
| 约束 | 表现 | 规避方式 |
|---|---|---|
| 三副本占用磁盘 | 节点数不足时三副本挤占存储 | 按节点数定副本,或先扩节点再建表 |
| 架构错配 | FE 启动即退出,日志不指向架构 | 用与 uname -m 一致的安装包与 JDK |
| 外围组件缺 ARM 版 | 监控、备份工具无法安装 | 部署前逐项确认外围组件架构 |
| 导入超时 | 大批次导入在 600 秒被取消 | 调大 timeout 或拆分批次 |
| 迁移期双份存储 | 双写阶段磁盘占用翻倍 | 设定迁移窗口,验证完成后下线原集群 |
| 检索语义深度 | 相关性打分等高级检索功能较精简 | 需要搜索语义的场景保留 Elasticsearch |
六、常见问题(FAQ)
Q:ARM 机器上 FE 启动失败,日志看不出原因,先查什么?
先查 JDK 架构。国产操作系统镜像默认安装的 JDK 可能与 CPU 架构不一致,此时 FE 进程直接起不来,报错信息不指向 JDK。用 java -version 确认输出中的架构标识,再核对安装包后缀。
Q:信创环境只能用三副本吗?
副本数由节点数与可用性要求共同决定,三副本是生产环境常见配置,需要至少 3 台 BE 节点。节点数不足时应先扩容,或在测试环境中降低副本数,不建议在节点数不足的生产集群上用单副本承载。
Q:导入时上游计数与落库行数不一致,怎么定位?
按三步排查:先看返回体的 NumberFilteredRows 是否非零并访问 ErrorURL 查看错误行;再核对 timezone 与集群会话时区是否一致;最后核对字段长度是否发生截断。
Q:麒麟与统信 UOS 上的部署步骤差别大吗?
部署命令链一致,差异集中在默认参数与小版本内核。统信 UOS 与 openEuler 的最小化镜像同样需要修正句柄数、vm.max_map_count、swap 与透明大页,版本差异通过 /etc/os-release 输出核对。
Q:信创环境下要不要先做压测再验收?
建议在目标国产 CPU 与国产 OS 上做一次真实数据量验证:用自身日志量跑压缩率、写入吞吐与典型查询。技术验收关注链路是否跑通,合规验收关注材料是否齐备,两者并行准备。
测试结论出处(参考来源)
- Apache Doris 官方文档(安装部署与操作系统检查项):doris.apache.org
- Apache Doris 官方文档 · Stream Load(导入参数与返回体字段说明):doris.apache.org/docs/dev/data-operate/import/import-way/stream-load-manual/
- Apache Doris 官方下载页(按架构选择安装包):doris.apache.org/download
- Elastic 官方站点(公司信息与许可证说明):www.elastic.co
- SelectDB 官方站点(商业化部署形态与合规资质说明):selectdb.com
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐

所有评论(0)