IoTDB 常见问题 QA 第五期

关于 IoTDB 的 Q & A

情人节之际,让 IoTDB Q&A 陪您一起共度解惑!我们将定期汇总我们将定期汇总社区讨论频繁的问题,并展开进行详细回答,通过积累常见问题“小百科”,方便大家使用 IoTDB。

Q1:导入数据时提示内存不足如何处理

outside_default.png

问题现象

IoTDB 导入数据时提示内存不足,该如何处理?

f7b9d39c4ce4049fce3ed455da3073e0.png

outside_default.png

解决方案

数据导入脚本会在触发内存不足的时候主动进行重试。当遇到此问题时,用户不用做任何操作,脚本也可以正确进行处理。如果想从根源减少此类提示,可以按照下述方案:

  • 方案一:增大 DataNode 的堆内内存

  • 方案二:减少当时的查询操作

  • 方案三:调整内存分配比例,给查询先分配更多的内存。用户可以更改 iotdb-system.properties 中的 datanode_memory_proportion,为查询内存分配更高的比例份额

e608ecb5b8185b5856fc4afa5f38c4e7.jpeg

Q2:断电后无法启动 DataNode,日志提示 Meet error while starting up

outside_default.png

问题

IoTDB 1.3.2 版本,断电后 IoTDB 的 DataNode 无法启动,日志如下:

2024-12-16 14:45:41,350 [main] ERROR o.a.i.db.service.DataNode:562 - Meet error while starting up. org.apache.iotdb.commons.exception.StartupException: For input string: "���"  at org.apache.iotdb.db.pipe.progress.SimpleConsensusProgressIndexAssigner.start(SimpleConsensusProgressIndexAssigner.java:69)  at org.apache.iotdb.db.pipe.agent.runtime.PipeDataNodeRuntimeAgent.preparePipeResources(PipeDataNodeRuntimeAgent.java:75)  at org.apache.iotdb.db.service.DataNode.preparePipeResources(DataNode.java:950)  at org.apache.iotdb.db.service.DataNode.prepareResources(DataNode.java:549)  at org.apache.iotdb.db.service.DataNode.setUp(DataNode.java:599)  at org.apache.iotdb.db.service.DataNode.active(DataNode.java:560)  at org.apache.iotdb.db.service.DataNode.doAddNode(DataNode.java:215)  at org.apache.iotdb.db.service.DataNodeServerCommandLine.run(DataNodeServerCommandLine.java:81)  at org.apache.iotdb.commons.ServerCommandLine.doMain(ServerCommandLine.java:58)  at org.apache.iotdb.db.service.DataNode.main(DataNode.java:183)

84550a73c1338cebfe59fc391d3993e0.jpeg

c7e40e38c03d5cd88368f4ce9758dcf2.png

outside_default.png

问题原因

断电时文件系统产生某些意外错误,导致 data/datanode/system/pipe/reboot_times.txt 文件写入内容异常。

outside_default.png

解决方案

出现该日志导致无法启动时,区分两种情况进行处置:

1. 如果系统中不存在 pipe 的使用,手动删除文件 data/datanode/system/pipe/reboot_times.txt 即可。

2. 如果系统中存在 pipe 的使用,请联系社区开发同学提供安全解决方案(可以参考 https://github.com/apache/iotdb/pull/14594 自行修改源码后启动,或升级最新社区版本 > v1.3.3)。

Q3:集群重启某节点失败

outside_default.png

问题现象

IoTDB 1.3.3.6 版本部署的 3C3D 集群,在重启某个节点服务时失败,报错信息为节点冲突,日志部分截图如下:

a61af717f8bf2a5b7063ca990c61a0ca.jpeg

outside_default.png

问题原因

当前 IoTDB 会根据 data/confignode/system 路径下的 confignode-system.properties 文件及 data/datanode/system 路径下的 system.properties 文件去判断是否为重启加入集群。如果该文件被误删除,则可能导致重启时认为当前节点是要加入集群的新节点,而不是重新启动已存在的节点,进而产生如上报错。

outside_default.png

解决方案

1. 可以按照日志提示信息,修改配置重新加入,成功后再移除掉失效的旧节点。

2. 如果实际情况不允许修改配置信息,则可以参考集群中其他节点的 confignode-system.properties 和system.properties 文件,手动创建符合当前节点信息的 confignode-system.properties 和 system.properties,然后分别放到对应的 data/confignode/system 及 data/datanode/system 路径下,再启动即可成功。

Q4:集群节点 IP 改变,如何更新集群

outside_default.png

问题

  • 问题1:如果 IoTDB 配置的时候用的 IP,没有用 hostname,后面 IP 修改了,历史数据需要重新导吗?

  • 问题2:如果现场运行 IoTDB 半年,电脑 IP 要改的话,半年的数据要导出来再导入么?

  • 问题3:有个关于 IoTDB 3C3D 集群,IP 地址更改的问题请教下。目前我们这儿 3C3D 集群,需要进行 IP 地址变更,之前配置文件里面,没有采用 hostname 模型,采用的是 IP 地址参数配置,请问服务器如果 IP 进行了变更,需要针对 IoTDB 集群进行如何调整,才能保证数据的完整性?

  • 问题4:有一个关于 IoTDB 1.3.1 的 TsFile load 问题需要请教下:

    • 【问题场景】:原先采用 3C3D 配置的 IoTDB 集群,config 文件中没有采用 hostname 配置方式,采用的 IP 地址配置,但由于机器 IP 发生了变更,现需要进行 IoTDB 数据 TsFile 重新 load,以加载改 IP 之前录入 IoTDB 的数据。

    • 【问题描述】:目前将 3 台服务器的老数据 data 文件夹,移动到了其他目录:/opt 目录下,目前需要加载 TsFile,是否直接全量加载 sequence 目录下的所有 TsFile 即可?还是说 snapshot 及其他目录的 TsFile,也需要进行 load?但是 snapshot 目录下 sequence 和 unsequence 目录下都有 TsFile,我该选哪个进行 load 才能全量保留之前的数据?

  • 问题5:请问下,3 节点的集群,将原先的 IP 地址参数改成了主机名字。现在往 IoTDB 中写数据时,session 还是通过 IP 来的,但是 IP 有的时候会去解析其他节点的主机名,发现解析不了而报错。请问这种情况该如何解决?

  • 问题6:刚开始电脑部署的 IoTDB 数据库以 127.0 IP 运行,现在想改为以 hostname 运行、因为不能改配置中的 IP,历史数据我可以不要,所以我重新下载了 1.3.0 版本,配置为 hostname 运行成功,但 CLI 连不上,什么原因呢?这样建立新的文件夹,重启新数据库做法可行吗?

outside_default.png

方案

  • 集群部署前的准备:推荐使用合适的 hostname,具体原因可参考《为什么推荐将 IoTDB 服务地址配置为 HostName 而非 IP?》。

  • 集群部署后,IP 地址改变的处理

    • 需要旧集群数据的情况:

      • 搭建并配置新集群:新集群之间需要在每台主机的 /etc/hosts 文件中配置 IP 地址和对应主机名的关系,以确保它们能够相互识别(注意,hostname 必须唯一),之后可以启动新集群。

      • 迁移老集群数据到新集群:可以通过 pipe 同步全量数据,直接将老集群的 data/ 目录(包括 sequence 和 unsequence)加载到新集群中。

    • 不需要旧集群数据的情况:

      • 停止旧集群。

      • 删除旧集群的 data 目录和 logs 目录。

      • 修改新集群及其所在主机的 host 配置。

      • 启动新集群。

  • 集群迁移后,客户端连接更新

    • 在 CLI 连接时,需加上 -h hostname 参数。

    • 对于使用 session 或 sessionPool 的客户端,建议也更新为对应的主机名(hosts)。

Q5:节点宕机后集群恢复

outside_default.png

问题及现象

  • 现象1:IoTDB 集群一台电脑硬盘坏了,换了新硬盘迁移数据只能用 load 么?是不是直接新增节点就行了?

  • 现象2:这个错误是什么原因引起的?集群有个节点宕机,上线之后就报错:

insertByGroup - Meet error when async insert! org.apache.iotdb.rpc.StatementExecutionException: 606: The write is rejected because the wal directory size has reached the threshold 53687091200 bytes. You may need to adjust the flush policy of the storage storageengine or the IoTConsensus synchronization parameter
  • 现象3:请教个问题,双副本集群中,一个节点宕机后,WAL 会持续增加,如果机器无法恢复,需要怎么解决?

  • 现象4:如果 3C3D 的模式下,设置了三个元数据副本,两个数据副本,其中一个节点有问题后会影响另外两个节点的工作么?如果移除那个有问题的节点后会存在数据丢失么?看官方文档说会把移除节点的数据自动同步到剩余两个节点中,又在文档中说不能少于元数据 3 副本的节点数运行,那三个节点的集群岂不是照样一个节点都不能挂?

  • 现象5:如果老节点挂掉了,是不是拿不到之前节点上的数据了?如果是单副本,那数据是取不到吗?

outside_default.png

方法

  • 单机版节点宕机:在其他主机上配置新节点,重新启动,并将旧节点的 /data 目录 load 进新节点。

  • 集群内某个节点宕机之后:

    • 节点能启动:手动启动该节点,启动后如果依然报下面的错,V1.1.0 及之前的版本先升级到最新版本,尝试调大 WAL 文件总大小配置 iot_consensus_throttle_threshold_in_byte 并重启该 DataNode 服务。

The write is rejected because the wal directory size has reached the threshold 53687091200 bytes. You may need to adjust the flush policy of the storage storageengine or the IoTConsensus synchronization parameter`
    • 节点无法启动:在其他主机上配置一个新的节点,指向该集群,启动该节点加入集群。CLI 连接上该集群其他 DataNode,移除掉已经宕机的节点。

outside_default.png

原因

  • 无法移除 DataNode 的情况:当集群只有 3 个 DataNode 且每个有 3 副本时,无法移除某个 DataNode,系统不允许分片的副本数小于配置值。建议先增加一个 DataNode,达到 4 个节点后再移除出问题的节点,因为如果 DataNode 数量不足,系统不支持主动移除节点,这样可能导致副本数少于配置值。但如果是被动宕机,集群仍能正常工作。

  • 拒绝写入的错误原因:如果某个节点长时间宕机,数据副本会一直无法同步,直到达到一定的阈值(默认 50G)后,保护机制会启动。重启后,由于待同步的 WAL 文件过多,通过增大 WAL 总文件大小配置,可以暂时避免阻塞节点间的数据同步。当前版本在节点长时间宕机的情况下,仍然需要通过恢复或移除节点的方式来解决 WAL 堆积问题。未来版本会优化这方面的设计,避免 WAL 堆积再次发生。

规上企业应用实例

能源电力:中核武汉|国网信通产业集团|华润电力|大唐先一|上海电气国轩|清安储能|某储能厂商|太极股份

航天航空:中航机载共性|北邮一号卫星

钢铁冶炼:宝武钢铁|中冶赛迪|中国恩菲

交通运输:中车四方|长安汽车|城建智控|德国铁路

智慧工厂与物联:PCB 龙头企业|博世力士乐|德国宝马|北斗智慧物联|京东|昆仑数据|怡养科技|绍兴安瑞思

ec74a9bbf38d4105f536b3eba5498d23.gif

23bae1cea92dc0e24bdade1aac5c6dbf.jpeg

6fa0b4bcc027baf8562edf9adaecfe1d.jpeg

490eaf6ddd435691102179047e2396c9.jpeg

26b3eed8c10017ebd4bc2cba93d57785.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/19179.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【NLP】文本预处理

目录 一、文本处理的基本方法 1.1 分词 1.2 命名体实体识别 1.3 词性标注 二、文本张量的表示形式 2.1 one-hot编码 2.2 word2vec 模型 2.2.1 CBOW模式 2.2.2 skipgram模式 2.3 词嵌入word embedding 三、文本数据分析 3.1 标签数量分布 3.2 句子长度分布 3.3 词…

1-16 tortoiseGit分支与Git操作

1-1 创建分支 什么时候需要开分支? - 隔离线上版本和开发版本 - 大功能开发,不想影响到其他人,自己独立开个分支去开发 SVN经典目录结构: - trunk-------------------------开发中的文件 - bran…

4090单卡挑战DeepSeek r1 671b:尝试量化后的心得的分享

引言: 最近,DeepSeek-R1在完全开源的背景下,与OpenAI的O1推理模型展开了激烈竞争,引发了广泛关注。为了让更多本地用户能够运行DeepSeek,我们成功将R1 671B参数模型从720GB压缩至131GB,减少了80%&#xff…

frp与云服务器内网穿透

最近想使用一个便宜的云服务器进行内网穿透,访问到本地电脑 之前使用ssh一直没成功,原因还没分析出来,后来换了一种方法,使用frp来进行内网穿透 frp内网穿透搭建 frp简介 frp 是一个专注于内网穿透的高性能的反向代理应用&…

题海拾贝:英语作文(map)

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》 欢迎点赞&#xff0c;关注&#xff01; 1、题…

matlab欠驱动船舶模型预测控制

1、内容简介 matlab135-欠驱动船舶模型预测控制 可以交流、咨询、答疑 2、内容说明 略 针对在风 、 浪 、 流时变干扰下欠驱动水面船舶的轨迹跟踪控制问题 &#xff0c; 设计了一种基于模型 预测控制的轨迹跟踪控制器 &#xff0e; 考虑到欠驱动船舶在没有横向驱动力情况下…

2025年-数据库排名

2025年-数据库排名 https://db-engines.com/en/ranking RADB 完整排名 TOP 10 向量 DBMS 的 DB-Engines 排名 关系型 DBMS 的 DB-Engines 排名 搜索引擎的 DB-Engines 排名 键值存储的 DB-Engines 排名 文档存储的 DB-Engines 排名 图形 DBMS 的 DB-Engines 排名 时间序列 DBM…

sib报错:com.*.xctrunner is not in your device!

1、问题描述 在使用sonic集成IOS设备的时候,我们需要通过sonic-agent服务去识别IOS设备。但是在识别的时候提示如下问题: 本质就是在你这个设备中找不到这个设备也就是找不到WebDriverAgentRunner,但是确实安装了,甚至appium可以正常的调用。 或执行如下命令的时候报错:…

rabbitmq五种模式的总结——附java-se实现(详细)

rabbitmq五种模式的总结 完整项目地址&#xff1a;https://github.com/9lucifer/rabbitmq4j-learning 一、简单模式 &#xff08;一&#xff09;简单模式概述 RabbitMQ 的简单模式是最基础的消息队列模式&#xff0c;包含以下两个角色&#xff1a; 生产者&#xff1a;负责发…

LangChain大模型应用开发:提示词工程应用与实践

介绍 大家好&#xff0c;博主又来给大家分享知识了。今天给大家分享的内容是LangChain提示词工程应用与实践。 在如今火热的大语言模型应用领域里&#xff0c;LangChain可是一个相当强大且实用的工具。而其中的提示词(Prompt)&#xff0c;更是我们与语言模型进行有效沟通的关…

4.buuctf [SWPU2019]Web1及知识点

进入题目页面如下 猜测是二次注入 先注册一个账号 再登录&#xff0c;页面如下 点击申请发布广告 页面如上&#xff0c;存在注入点&#xff0c;尝试 判读是整数型注入还是字符型注入 猜解字段数&#xff0c;尝试发现or,#,空格等被过滤了&#xff0c;只能一个一个试 使用联合…

Lua笔记

Lua语法 --注释 #字符串长度、table从1开始连续元素的长度 ..字符串拼接 逻辑运算符 and or not 条件语句 if xxx then elseif yyy then else end 循环语句 for i1,xxx do end xLua AppDomain does not contain a definition for DefineDynamicAssembly&#xff…

开业盛典活动策划方案拆解

道叔来给大家详细剖析咱们方案库里刚收录的这份《蜀大侠火锅店武侠风开业盛典活动策划方案》了&#xff0c;保证让你看完直呼过瘾&#xff0c;收获满满&#xff01; 一、主题创意&#xff1a;武侠风&#xff0c;直击人心 首先&#xff0c;咱们得夸一下这活动的主题——“XXX‘…

三、Unity基础(主要框架)

一、Unity场景概念 如果把游戏运行过程理解成表演&#xff0c;那么场景就是舞台&#xff1b; 场景本质上是一个配置文件&#xff0c;这个配置文件决定了场景中有哪些东西&#xff1b; 二、Scene和Game窗口 1、Scene 滚轮缩放、拖动 单独选中也可以 最下面这个是全能工具…

微软官方出品GPT大模型编排工具:7个开源项目

今天一起盘点下&#xff0c;12月份推荐的7个.Net开源项目&#xff08;点击标题查看详情&#xff09;。 1、一个浏览器自动化操作的.Net开源库 这是一个基于 Google 开源的 Node.js 库 Puppeteer 的 .NET 开源库&#xff0c;方便开发人员使用无头 Web 浏览器抓取 Web、检索 Ja…

C++笔记之类型大小、变量大小,vector与string在栈上内存、堆上内存和总内存的关系

C++笔记之类型大小、变量大小,vector与string在栈上内存、堆上内存和总内存的关系 code review! 文章目录 C++笔记之类型大小、变量大小,vector与string在栈上内存、堆上内存和总内存的关系1.`std::vector<float>` 的内存占用2.`std::vector<float>` 的 `capaci…

华为昇腾920b服务器部署DeepSeek翻车现场

最近到祸一台HUAWEI Kunpeng 920 5250&#xff0c;先看看配置。之前是部署的讯飞大模型&#xff0c;发现资源利用率太低了。把5台减少到3台&#xff0c;就出了他 硬件配置信息 基本硬件信息 按照惯例先来看看配置。一共3块盘&#xff0c;500G的系统盘&#xff0c; 2块3T固态…

【工具变量】ZF引导基金合集(1900-2024年)

政府引导基金是以股权或债权等方式投资于创业风险投资机构或新设的创业风险投资基金&#xff0c;主要用于支持创业企业的发展。根据不同类型的基金&#xff0c;基金出资结构有所不同&#xff0c;可能由政府全额或部分出资&#xff0c;并吸引社会资本和金融机构的参与。 一、政府…

【Java 面试 八股文】常见集合篇

常见集合篇 1. 常见集合有哪些2. ArrayList底层实现的原理是什么&#xff1f;3. ArrayList listnew ArrayList(10)中的list扩容几次4. 如何实现数组和List之间的转换5. ArrayList和LinkedList的区别是什么&#xff1f;6. 说一下HashMap的实现原理&#xff1f;7. HashMap的jdk1.…

使用 DeepSeek 生成商城流程图

步骤 1.下载 mermaid 2.使用 DeepSeek 生成 mermaid 格式 3.复制内容到 4.保存备用。 结束。