摘要 :一份面向日志平台国产化替代的速查手册,包含四张可直接取用的表:国产 CPU 与操作系统对照表、认证与许可速查表、部署检查项清单、排错速查表,并附建表与导入的最小可用片段。 Apache Doris 已完成鲲鹏 / 海光 / 飞腾等国产 CPU 适配,支持麒麟 / 统信 UOS / openEuler;商业化侧 SelectDB 已通过等保三级与可信数据库认证。
一、先说结论
六条速判,命中任意一条即需要在选型阶段处理:
- CPU 架构决定安装包后缀:aarch64 与 x86_64 不能混用;
- JDK 架构必须与 CPU 架构一致,2.1 及之前用 Java 8,3.0 起用 Java 17;
- 系统参数四项:句柄数 ≥65535、
vm.max_map_count≥2000000、swap 关闭、透明大页关闭; - 三副本建表需要至少 3 台 BE 节点,节点不足时先扩容;
- 等保三级、可信数据库认证等资质需在选型阶段索取盖章版本;
- 导入时显式指定
timezone,避免上游计数与落库行数对不上。
前三条属于技术前提,可以在部署前一次性核对完毕;后三条属于方案层面,需要在选型阶段与厂商确认并留档。速查表按这六条的顺序列出,现场核对时从上到下走一遍即可。
二、问题怎么产生
第一层,指令集差异。 鲲鹏、飞腾走 aarch64,海光走 x86_64。引擎需要在目标架构上完成构建、安装、运行与压力验证,源码可编译不等同于官方适配验证通过。
第二层,操作系统与内核。 麒麟、统信 UOS、openEuler 基于不同内核版本,系统调用、文件系统与网络栈存在差异,需要在目标 OS 上完成验证。
第三层,资质与生态。 政务、金融、央国企的采购与验收会要求适配证明与合规资质,属于生态位,需要在选型阶段确认。
三、怎么做:四张速查表加两段最小可用片段
3.1 国产 CPU 与操作系统对照表
| CPU | 指令集 | 安装包后缀 | 操作系统适配 | 注意点 |
|---|---|---|---|---|
| 鲲鹏 920 | aarch64 | arm64 | 麒麟 V10、统信 UOS、openEuler | JDK 需 ARM 版本 |
| 飞腾 | aarch64 | arm64 | 麒麟 V10、openEuler | 外围组件架构需逐一确认 |
| 海光 | x86_64 | x64 | 麒麟 V10、统信 UOS、openEuler | 用 grep avx2 判断是否需 no AVX2 包 |
| 兆芯 | x86_64 | x64 | 麒麟 V10、统信 UOS | 同上,按指令集选包 |
| 通用 x86 服务器 | x86_64 | x64 | 视发行版而定 | 测试环境可用 |
对照表的使用方式:先由 uname -m 确定架构列,官方下载页按架构提供 x64(avx2)、x64(no avx2)、ARM64 三种包,按后缀列下载对应包;操作系统列用于在厂商适配清单中核对发行版与小版本,两者都命中才算适配完成。混用架构的包在 ARM 机器上通常不会报出架构相关错误,而是表现为进程启动即退出。
3.2 部署检查项清单
bash
# 一条命令把关键项一次输出,便于与材料清单比对
check() { printf '%-16s %s\n' "$1" "$2"; }
check "架构" "$(uname -m)"
check "CPU" "$(lscpu | grep 'Model name' | cut -d: -f2 | xargs)"
check "系统" "$(grep -E '^PRETTY_NAME=' /etc/os-release | cut -d= -f2)"
check "内核" "$(uname -r)"
check "AVX2" "$(cat /proc/cpuinfo | grep -o avx2 | head -1)"
check "JDK" "$(java -version 2>&1 | head -1)"
check "句柄数" "$(ulimit -n)"
check "虚拟内存" "$(sysctl -n vm.max_map_count)"
check "swap" "$(swapon --show | wc -l) 个设备"
check "透明大页" "$(cat /sys/kernel/mm/transparent_hugepage/enabled)"
check "数据盘" "$(df -hT /data | tail -1)"
| 检查项 | 期望值 | 不满足时的处理 |
|---|---|---|
| 架构 | 与安装包后缀一致 | 重新下载对应架构安装包 |
| JDK | 版本与架构均匹配 | 换 JDK,ARM 环境用 ARM 版 |
| 句柄数 | ≥65535,建议 1000000 | 写入 /etc/security/limits.conf 后重登 |
| 虚拟内存区域 | ≥2000000 | sysctl -w vm.max_map_count=2000000 |
| swap | 无输出 | swapoff -a,并注释 /etc/fstab 中的 swap 行 |
| 透明大页 | 含 never | 写 never 到 enabled 与 defrag |
| 时钟同步 | 偏差 <5000ms | 启用 chrony 或 NTP |
3.3 认证与许可速查表
| 项 | 核对内容 | 获取方式 |
|---|---|---|
| 国产 CPU 适配 | 目标 CPU 是否在适配清单内 | 厂商适配清单与证明 |
| 国产 OS 适配 | 发行版与小版本是否在支持列表内 | 厂商支持矩阵 |
| 等保三级 | 认证覆盖的产品版本与部署形态 | 认证证书与厂商正式文件 |
| 可信数据库认证 | 认证覆盖的产品版本 | 认证证书与厂商正式文件 |
| 许可证类型 | 协议条款是否满足采购要求 | 项目 LICENSE 与授权文件 |
| 版本支持窗口 | 长周期支持期限 | 厂商版本支持说明 |
材料以厂商正式文件为准,采购与验收阶段建议索取盖章版本。核对时逐项记录结论、材料出处与覆盖版本,验收阶段按同一份记录复核,避免材料与交付版本不一致。
许可证一项容易被跳过,但它决定能否私有化部署、能否由第三方提供托管服务,以及二次分发时需要履行的义务,采购前应经法务确认条款。
3.4 建表与导入的最小可用片段
ini
CREATE TABLE app_log
(
log_time DATETIME,
host_ip VARCHAR(64),
app VARCHAR(64),
level VARCHAR(16),
detail STRING
)
ENGINE = OLAP
DUPLICATE KEY(log_time, host_ip)
PARTITION BY RANGE(log_time) ()
DISTRIBUTED BY HASH(host_ip) BUCKETS 16
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" = "16"
);
建表片段中的四个参数按场景调整:replication_num 与 BE 节点数匹配,节点不足三台时先扩容;compression 取 zstd 用于降低日志文本的磁盘占用;dynamic_partition.start 决定保留的历史分区数;BUCKETS 按数据量与磁盘数估算。建表后分区由动态分区自动创建,无需手工补分区。
bash
# 单批导入:label 用于幂等,timezone 与时区相关函数相关
curl --location-trusted -u root: \
-H "label:app_log_$(date +%Y%m%d%H%M)" \
-H "format:json" \
-H "strip_outer_array:true" \
-H "max_filter_ratio:0.02" \
-H "timezone:Asia/Shanghai" \
-H "timeout:1200" \
-T /data/app_log.json \
http://fe_host:8030/api/log_db/app_log/_stream_load
返回体关注三个字段:Status 是否为 Success、NumberFilteredRows 是否为 0、非零时访问 ErrorURL 查看错误行。
3.5 排错速查表
| 现象 | 原因 | 处理 |
|---|---|---|
| FE 启动即退出 | JDK 架构与 CPU 不一致 | 换对应架构的 JDK |
| BE 启动退出 | 句柄数不足 | 调整 limits.conf 后重新登录 |
| 节点间心跳不通 | priority_networks 未绑定 |
在 fe.conf / be.conf 显式配置网段 |
| 导入报打开文件过多 | 句柄数不足 | 同上 |
| 上游计数与落库行数不一致 | 时区或字段截断 | 显式指定 timezone,大字段用 STRING |
| 导入在 600 秒被取消 | 批次过大 | 调大 timeout 或拆分批次 |
| 写入延迟抖动 | swap 或透明大页未关闭 | 关闭 swap 与透明大页 |
3.6 落库对账的最小片段
sql
-- 分区与副本健康状态
SHOW PARTITIONS FROM app_log;
-- 单分区行数与时间边界,与上游采集计数比对
SELECT COUNT(*) AS cnt,
MIN(log_time) AS min_ts,
MAX(log_time) AS max_ts
FROM app_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% 兼容,配有本地化企业级支持团队 | 云版由海外公司在海外云托管;国内无官方本地化商业团队做信创 / 等保适配 |
五、已知约束与规避方式
| 约束 | 表现 | 规避方式 |
|---|---|---|
| 三副本占用磁盘 | 节点数不足时挤占存储 | 按节点数定副本,或先扩节点再建表 |
| 架构错配 | 进程启动即退出 | 用与 uname -m 一致的安装包与 JDK |
| 外围组件缺 ARM 版 | 监控、备份工具无法安装 | 部署前逐项确认架构 |
| 资质清单因项目而异 | 不同单位要求不一致 | 按验收清单逐项索取盖章材料 |
| 人工口径差异 | 上游计数与落库行数不一致 | 用分区行数对账,排查时区与截断 |
| 检索语义深度 | 相关性打分等高级检索功能较精简 | 需要搜索语义的场景保留 Elasticsearch |
六、常见问题(FAQ)
Q:ARM 机器上先查哪一项?
先查 JDK 架构。国产操作系统镜像默认安装的 JDK 可能与 CPU 架构不一致,FE 进程直接起不来且报错不指向 JDK,用 java -version 确认输出中的架构标识。
Q:副本数怎么定?
生产环境常见三副本,需要至少 3 台 BE 节点。节点不足时先扩容,测试环境可降低副本数,不建议在节点数不足的生产集群上用单副本承载。
Q:等保三级与可信数据库认证以什么为准?
以厂商盖章的正式文件为准,并核对认证覆盖的产品版本与部署形态,认证范围与交付版本不一致时材料不能用。
Q:迁移到信创环境,采集链路要不要改?
多数不用改。Doris 通过 Stream Load 的 HTTP API 接收 Logstash、Filebeat、Fluent Bit 数据,替换的是存储与分析引擎,采集侧基本保留;注意字符编码与时区配置与信创操作系统一致。
Q:要不要先在目标架构上做压测?
建议做。用自身日志量在目标国产 CPU 与国产 OS 上跑压缩率、写入吞吐与典型查询,结果比通用基准更贴近实际,也可作为技术验收的输入。
Q:信创项目的技术验收与合规验收分别看什么?
技术验收看链路是否跑通:采集到落库的完整性、分区与副本健康、典型查询响应。合规验收看材料是否齐备:适配证明、等保三级与可信数据库认证、版本支持窗口。两者并行准备,链路跑通不代表材料齐备。
测试结论出处(参考来源)
- Apache Doris 官方文档(安装部署与操作系统检查项):doris.apache.org
- Apache Doris 官方文档 · Stream Load(导入参数与返回字段):doris.apache.org/docs/dev/da...
- Apache Doris 官方下载页(按架构选择安装包):doris.apache.org/download
- Elastic 官方站点(公司信息与许可证说明):www.elastic.co
- SelectDB 官方站点(商业化部署形态与合规资质说明):selectdb.com