网站首页 > 博客文章 正文
前期针对IoT超大规模数据存储和分析进行技术调研,其中之一是Doris。现将部分踩坑记录和实践经验分享给大家。
Apache Doris 是一款高性能的 MPP 数据库,广泛应用于OLAP分析场景,同时为新一代数据仓库、湖仓一体等数据设施建设提供了有力支持,尤其是多种表模型、存算分析等特性,特别适合IoT物联网场景。fe/be的架构设计,方便运维管理。(详细介绍见官网
https://doris.apache.org/zh-CN/docs/3.0/gettingStarted/what-is-apache-doris)
一、安装 Apache Doris
(一)准备工作
1. 运行环境
- ubuntu-arm 24.0.4 虚拟机 ,已分配8G内存 80G硬盘
- Doris最新版本为3.0.3(最新稳定版为2.1.8)
2. 修改内存参数
默认情况下,FE(Frontend)组件的内存要求为 8G。如果在虚拟机测试环境中内存不足,会导致启动失败。
通过查看错误日志,可以定位到容器中配置文件的目录为 /opt/apache-doris/fe/conf。具体的配置文件是 fe.conf,可以从官方仓库获取,或者从容器中复制出来即可。修改其中的 Xmx 和 Xms 参数,以适应宿主机的内存情况。
https://github.com/apache/doris/blob/master/conf/fe.conf
(二)拉取镜像并启动
1. 拉取镜像
需要注意的是,官方文档中给出的镜像路径可能有误,可以使用的镜像路径为 selectdb/doris.fe-ubuntu 和 selectdb/doris.be-ubuntu。
以下是修改后的 docker-compose.yaml 文件内容:
version: "3"
services:
fe:
image: selectdb/doris.fe-ubuntu:3.0.3
hostname: fe
environment:
- FE_SERVERS=fe1:172.16.224.140:9010
- FE_ID=1
network_mode: host
volumes:
- /data/doris/conf/fe:/opt/apache-doris/fe/conf
be:
image: selectdb/doris.be-ubuntu:3.0.3
hostname: be
environment:
- FE_SERVERS=fe1:172.16.224.140:9010
- BE_ADDR=172.16.224.140:9050
depends_on:
- fe
network_mode: host
volumes:
- /data/doris/conf/be:/opt/apache-doris/be/conf
在 /data/doris/conf/fe 和 /data/doris/conf/be 目录下分别放置对应的配置文件(fe.conf 和 be.conf),并确保这些目录在宿主机上存在。
使用以下命令启动 Apache Doris:
docker-compose up -d
(三)访问 Web UI
在浏览器中访问 http://<宿主机IP>:8030,默认用户名为 admin,无密码。
二、基本使用
(一)连接到 Apache Doris
可以使用支持 MySQL 协议的客户端工具连接到 Apache Doris,例如 MySQL 客户端命令行工具:
mysql -uroot -P9030 -h127.0.0.1
也可以使用 Navicat 等可视化工具进行连接。
连接并检查集群状态:
mysql -uroot -P9030 -h127.0.0.1 -e 'SELECT `host`, `join`, `alive` FROM frontends()'
mysql -uroot -P9030 -h127.0.0.1 -e 'SELECT `host`, `alive` FROM backends()'
(二)创建表
默认情况下,Apache Doris 要求表的副本数为 3。如果在本地搭建的测试环境中只有一个 BE(Backend)节点,需要在创建表时指定副本数为 1【使用properties('replication_num' = '1')】,否则会报错。以下是创建表的 SQL 示例:
create table mytable
(
k1 TINYINT,
k2 DECIMAL(10, 2) DEFAULT "10.05",
k3 CHAR(10) COMMENT "string column",
k4 INT NOT NULL DEFAULT "1" COMMENT "int column"
)
COMMENT "my first table"
DISTRIBUTED BY HASH(k1) BUCKETS 1
properties('replication_num' = '1');
三、问题记录与解决
(一)空间不足报错
报错现象:启动时出现 Not enough space 的错误,日志中显示类似以下内容:
fe-1 | StdoutLogger 2025-02-07 14:41:37,795 Using Java version 17
fe-1 | StdoutLogger 2025-02-07 14:41:37,795 -Dfile.encoding=UTF-8 -Djavax.security.auth.useSubjectCredsOnly=false -Xmx8192m -Xms8192m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/apache-doris/fe/log -Xlog:gc*:/opt/apache-doris/fe/log/fe.gc.log.20250207-144137:time,uptime:filecount=10,filesize=50M --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens java.base/jdk.internal.ref=ALL-UNNAMED
fe-1 | StdoutLogger 2025-02-07 14:41:37,843 start time: Fri Feb 7 14:41:37 UTC 2025
fe-1 | #
fe-1 | # There is insufficient memory for the Java Runtime Environment to continue.
fe-1 | # Native memory allocation (mmap) failed to map 8589934592 bytes for committing reserved memory.
fe-1 | OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000600000000, 8589934592, 0) failed; error='Not enough space' (errno=12)
fe-1 | # An error report file with more information is saved as:
fe-1 | # /opt/apache-doris/hs_err_pid533.log
原因:默认的内存参数设置过高,宿主机的内存资源无法满足。
解决方法:通过挂载配置文件的方式,从外部修改启动时的内存参数。在 /data/doris/conf/fe 目录下新建 fe.conf 文件(可以从 Apache Doris 官方 GitHub 仓库下载,或从容器中复制),修改其中的 Xms 和 Xmx 参数。然后修改 docker-compose.yaml 文件,确保正确挂载了配置文件目录。
(二)没有可用的 scanNode Backend
报错现象:启动后出现 There is no scanNode Backend available 的错误。
原因:可能是 BE 节点尚未启动成功,或者由于中断后元数据出现问题。
解决方法:尝试清除元数据目录后重启,或者直接重新创建容器。元数据目录分别为:
- FE 元数据目录:/opt/apache-doris/fe/doris-meta
- BE 存储目录:/opt/apache-doris/be/storage
使用以下命令清除元数据目录:
rm -rf /opt/apache-doris/be/storage
rm -rf /opt/apache-doris/fe/doris-meta
(三)创建表时副本数报错
报错现象:创建表时出现以下错误:
ERROR 1105 (HY000): errCode = 2, detailMessage = replication num should be less than the number of available backends. replication num is 3, available backend num is 1
原因:默认的副本数为 3,而本地搭建的测试环境中只有一个 BE 节点。
解决方法:
- 方法 1:在创建表时指定副本数为 1,如前面创建表的 SQL 示例所示。
create table mytable
(
k1 TINYINT,
k2 DECIMAL(10, 2) DEFAULT "10.05",
k3 CHAR(10) COMMENT "string column",
k4 INT NOT NULL DEFAULT "1" COMMENT "int column"
)
COMMENT "my first table"
DISTRIBUTED BY HASH(k1) BUCKETS 1 properties('replication_num' = '1');
- 方法 2:全局修改默认副本数。执行以下 SQL 语句:
ADMIN SET FRONTEND CONFIG ('default_replication_num' ="1");
四、总结
过于相信官方文档,会被误导(内容错误或更新不及时!!!),额外花了很多时间。很多博客教程内容几乎一样,或者单纯的搬运官方介绍,很难找到有效信息。
- 常规Ai、博客等
- 官方仓库源码找答案:建议注意观察日志信息,然后通过官方仓库中的相关文件查找信息,然后修改相关配置即可,一般就是各种脚本文件、配置文件(开源的好处,赞)
- 自行编译镜像:相关内容配置文件按需指定即可(mac系列编译可能有些麻烦,暂未尝试)
猜你喜欢
- 2025-05-22 Docker搭建MySQL与Redis集群教程
- 2025-05-22 Docker新手福音!这个开源控制面板让你更快上手Docker
- 2025-05-22 数字管家登场:利用Docker快速部署你的HomeBox家庭库存系统
- 2025-05-22 docker-compose备份数据库,在crontab定时任务中不生效解决方法
- 2025-05-22 容器云生产实践第一步:ELK Stack
- 2025-05-22 docker-compose快速部署elasticsearch-8.x集群+kibana
- 2025-05-22 dify 1.40
- 2025-05-22 Windows 上 Docker 镜像与容器更新全攻略
- 2025-05-22 docker从入门到实战系列6-docker-compose容器编排
- 2025-05-22 Docker与Docker Compose部署微服务对比
你 发表评论:
欢迎- 377℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 373℃用AI Agent治理微服务的复杂性问题|QCon
- 364℃初次使用IntelliJ IDEA新建Maven项目
- 357℃Maven技术方案最全手册(mavena)
- 353℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 352℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 351℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 349℃IT全明星|IntelliJ IDEA学习笔记(四、idea中怎么创建maven项目)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)