十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章主要介绍“Apache IoTDB文件同步工具怎么用”,在日常操作中,相信很多人在Apache IoTDB文件同步工具怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Apache IoTDB文件同步工具怎么用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
创新互联服务项目包括瑞丽网站建设、瑞丽网站制作、瑞丽网页制作以及瑞丽网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,瑞丽网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到瑞丽省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
写入流程
为了更好的理解数据文件的生成耗时,需要简单介绍一下写入流程。
IoTDB 采用了 LSM 结构,数据先写到内存缓冲区 memtable 中,memtable 达到一定大小会落盘,多个 memtable 会对应一个数据文件。
举个例子,某个存储组有 1 个时间序列,写入频率为 1 秒,每个数据点是 16 字节。一个 memtable 大小为 160 字节,TsFile 文件大小为 200 字节。存储组刚开始有一个空的 TsFile 可供写入。
(1)memtable 第一次存满 10 个数据点时,提交一个异步刷盘任务(追加到当前正在写入的 TsFile 中),同时检查 TsFile 大小,这个时候还是 0 字节,先不关文件。
(2)异步的刷盘任务开始执行,刷完之后 TsFile 变成了 200 字节。
(3)memtable 第二次存满 10 个数据点时,提交一个异步刷盘任务,同时检查 TsFile 大小,发现到了 200 字节,于是就标记关文件。
(4)异步刷盘任务开始执行,刷完之后把当前 TsFile 关掉。
在这个例子里,写满 2 个 memtable (20条数据) 关闭一次文件,写入频率为 1 秒,文件的生成耗时是 20 秒左右。
同步流程
发送端定时检查本地有没有新创建的 Schema 和新生成的完整的数据文件,如果存在,就发给接收端。同步的延迟基本就是 max(同步检查间隔,文件生成耗时)。
在 iotdb-sync-client.properties 配置文件中,有一个参数sync_period_in_second,这个控制发送端检查的频率。假如配置 60 秒,那同步的最长延迟就是 60秒,如果配置 10秒,那延迟就是 20秒(一个文件的生成耗时)。可以看到,同步延迟跟配置有关系,跟写入频率也有关系。
配置文件里的 sync_period_in_second 可以配的比较小,没啥大问题。主要问题是 TsFile 的生成间隔,这个由 memtable_size_threshold 和 tsfile_size_threshold 控制,这两个参数,尤其是 memtable 越大,历史数据查询越快。因此,同步能达到的最低延迟和查询性能之间需要平衡。
一个比较简单的查看自己系统里文件的生成速率,可以到数据目录 data/data/存储组{/分区} 看 .resource 文件的最后修改时间间隔。
测试同步
在一个机器测试同步,示例脚本为 linux 环境,版本 0.10.1。先下载二进制包,解压缩两遍重命名,一个 sender,一个 receiver。
启动接收端
cd receiver## 配置conf/iotdb-engine.properties 中的 is_sync_enable=true## 启动接收端 IoTDBnohup ./sbin/start-server.sh >/dev/null 2>&1 # 启动接收端 CLI,默认用 root 用户连本地 6667 端口./sbin/start-cli.sh
启动发送端,准备数据
cd sender## 配置conf/iotdb-engine.properties 中的 rpc_port=6668conf/iotdb-sync-client.properties 中的 sync_period_in_second=10## 启动 iotdbnohup ./sbin/start-server.sh >/dev/null 2>&1 # 启动发送进程nohup ./tools/start-sync-client.sh >/dev/null 2>&1 # 启动发送端 CLI,注意,改到 6668 端口了./sbin/start-cli.sh -h 127.0.0.1 -p 6668 -u root -pw root## 输入insert into root.turbine1.d1(timestamp,s1,s3) values(2,1,3);flush (这个是精髓,强制把 memtable 刷盘,文件封口)
接收端验证数据
## 在接收端 CLI 中输入select * from root
如果想自己配置,需要先把 enable_parameter_adapter 置为 false,不然系统会自动调 memtable 和 tsfile 大小。
到此,关于“Apache IoTDB文件同步工具怎么用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!