Windows Server上部署IoTdb 集群

本文是参考官方的 IoTDB 集群版(1.0.0)的安装及启动教程:http://iotdb.apache.org/zh/UserGuide/V1.0.x/Cluster/Cluster-Setup.html ,在Windows Server 2019上部署集群的实践记录。

前置检查

使用微软发布的OpenJDK 17 运行环境,并配置好 JAVA_HOME 环境变量。从微软官方网站下载 http://learn.microsoft.com/zh-cn/java/openjdk/download

image

下载msi的一键安装包 microsoft-jdk-17.0.5-windows-x64.msi。 在服务器上进行安装

image

修改Windows的注册表,将Tcpip的参数MaxUserPort=65534 和 TcpTimedWaitDelay=30

image

首次启动ConfigNode节点时,确保已清空ConfigNode节点的data/confignode目录;首次启动DataNode节点时,确保已清空DataNode节点的data/datanode目录。

如果整个集群处在可信环境下,可以关闭机器上的防火墙选项,在windows 防火墙下开通iotdb 规则,我开通了如下端口6667, 10710-10760, 22277, 8777, 40010, 50010,9003.

image

image

在集群默认配置中,ConfigNode 会占用端口 10710 和 10720,DataNode 会占用端口 6667、10730、10740、10750 和 10760, 请确保这些端口未被占用,或者手动修改配置文件中的端口配置。


安装包获取

打开官网Download Page :http://iotdb.apache.org/Download/

下载 IoTDB 1.0.0 版本的All in one二进制文件。

image

解压得到 apache-iotdb-1.0.0目录,目录有一个注意事项是在路径上不能有空格。打开 apache-iotdb-1.0.0,可见以下目录:

image

image

集群安装配置

集群安装

IoTdb 包含 ConfigNode 和 DataNode, 请将安装包部署于你目标集群的所有机器上,推荐将安装包部署于所有服务器的相同目录下。 本次集群共3台机器,ip分别为:192.168.67.45,192.168.67.46,192.168.67.47,其中192.168.67.45 作为seed-confignode.

集群配置

接下来需要修改每个服务器上的配置文件,登录服务器, 并将工作路径切换至 apache-iotdb-1.0.0, 配置文件在 ./conf 目录内,以下所有配置项在集群启动后不可修改

  • 对于所有部署 ConfigNode 的服务器,需要修改通用配置ConfigNode 配置
  • 对于所有部署 DataNode 的服务器,需要修改通用配置和 DataNode 配置

1、通用配置

注:务必保证所有节点的通用配置完全一致,否则节点无法启动,通用配置为./conf/iotdb-common.properties,本次集群cluster_name=TrueloveCluster

image

2、ConfigNode 配置

注:务必保证所有端口均未被占用,否则节点无法启动,配置文件为./conf/iotdb-confignode.properties

image

3、DataNode 配置

注:务必保证所有端口均未被占用,否则节点无法启动,配置文件为./conf/iotdb-datanode.properties

image

启动集群

本次启动3个ConfigNode 和 3个DataNode 的集群,集群可以提供服务的标准是至少启动一个 ConfigNode 且启动 不小于(数据/元数据)副本个数的 DataNode,要求3集群公共配置的./conf/iotdb-common.properites必须保持一致。

总体启动流程分为三步:

  1. 启动种子 ConfigNode
  2. 增加 ConfigNode(可选)
  3. 增加 DataNode
1、启动 Seed-ConfigNode

集群第一个启动的节点必须是 ConfigNode,第一个启动的 ConfigNode 必须遵循本小节教程。

第一个启动的 ConfigNode 是 Seed-ConfigNode,标志着新集群的创建。 在启动 Seed-ConfigNode 前,请打开通用配置文件 ./conf/iotdb-common.properties,并检查如下参数:

image

image

启动confignode,切换至sbin目录运行启动脚本:

.\sbin\start-confignode.bat

2、增加ConfigNode(2个)

启动前务必保证 ./conf/iotdb-common.properites 中的所有配置参数与 Seed-ConfigNode 完全一致,配置 ./conf/iotdb-confignode.properties

image

服务器192.168.67.46

image

服务器192.168.67.47

image

启动confignode,切换至sbin目录运行启动脚本:

.\sbin\start-confignode.bat

3、增加DataNode(3个)

在保证ConfigNode启动成功后才可以增加DataNode,配置 ./conf/iotdb-datanode.properties

可以向集群中添加任意个 DataNode。 在添加新的 DataNode 前,请先打开通用配置文件 ./conf/iotdb-common.properties 并检查以下参数:

image

接着打开它的配置文件 ./conf/iotdb-datanode.properties 并检查以下参数:

image

服务器192.168.67.45

image

服务器192.168.67.46

image

服务器192.168.67.47

image

启动,进入sbin目录执行启动脚本

.\sbin\start-datanode.bat

验证集群

以上是在3台服务器上启动的3C3D(3个ConfigNode 和 3个DataNode)集群为例, 这里假设3个ConfigNode的IP地址依次为192.168.67.45,192.168.67.46,192.168.67.47,且3个ConfigNode启动时均使用了默认的端口10710与10720; 3个DataNode的IP地址依次为192.168.67.45,192.168.67.46,192.168.67.47,且3个DataNode启动时均使用了默认的端口6667、10730、10740、10750与10760。

在 Cli 执行 show cluster details,看到的结果应当如下:

image

所有节点的状态均为 Running,则说明集群部署成功。上面有两个DataNode的状态是Unknown. 检查DataNode的启动日志没有问题, 这是由于还有相关的端口没有在防火墙上开通,需要开通如下端口号: 6667, 10710-10760, 22277, 8777, 40010, 50010,9003.

image

欢迎大家扫描下面二维码成为我的客户,扶你上云

本文转载于网络 如有侵权请联系删除

相关文章

  • 谷歌打开微信定位服务器地址,使用Chrome修改user agent模拟微信内置浏览器

    大家好,又见面了,我是你们的朋友全栈君。很多时候,我们需要模拟微信内置浏览器,今天教大家用chrome简单模拟。如图设置:F12或者右键审查元素进入开发者模式,点击Emulation,然后点击Network,把Spoofuseragent改成Other,并把下面的带复制进去,有三句,大家自己尝试。回车然后刷新页面即可。Mozilla/5.0(iPhone;CPUiPhoneOS5_1likeMacOSX)AppleWebKit/534.46(KHTML,likeGecko)Mobile/9B176MicroMessenger/4.3.2Mozilla/5.0(Linux;U;Android2.3.6;zh-cn;GT-S5660Build/GINGERBREAD)AppleWebKit/533.1(KHTML,likeGecko)Version/4.0MobileSafari/533.1MicroMessenger/4.5.255自己获取的内容如下:Mozilla/5.0(Linux;Android4.4.4;HMNOTE1LTEWBuild/KTU84P)AppleWebKit/53

  • Linux 让进程在后台可靠运行的几种方法

    场景思考三个问题:想让进程在断开连接后依然保持运行?如果该进程已经开始运行了该如何补救?如果有大量这类需求如何简化操作?nohup/setsid/&场景如果只是临时有一个命令需要长时间运行,什么方法能最简便的保证它在后台稳定运行呢?我们知道,当用户注销logout或者网络断开时,终端会收到HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径: 要么让进程忽略HUP信号, 要么让进程运行在新的会话里从而成为不属于此终端的子进程。1.nohupnohup无疑是我们首先想到的办法。顾名思义,nohup的用途就是让提交的命令忽略hangup信号。nohup的使用是十分方便的,只需在要处理的命令前加上nohup即可,标准输出和标准错误缺省会被重定向到nohup.out文件中。一般我们可在结尾加上”&”来将命令同时放入后台运行,也可用”>filename2>&1“来更改缺省的重定向文件名。案例:[xgj@entel2~]$cdshells/ [xgj@entel2shells]$nohupping10.45.7.197& [1

  • 扫地机器人“离家出走”的真实原因找到了:差个自动驾驶算法

    萧箫发自凹非寺 量子位报道|公众号QbitAI这家公司,竟然将自动驾驶算法用在了他们的扫地机器人上。大材小用?还真没有,虽然道路交通很复杂,但家里也一样。不仅要在靠近柜脚床脚时减速,还要在“看见”障碍物(掉在地上的袜子、缠绕的数据线)时来个急刹车。还得肩负起逗猫遛狗的责任,给上班的你直播宠物的“作案现场”。问题来了,机器人想要避开物体(如数据线、猫狗),用目标检测算法不就行了?但目标检测算法只能识别已知物体,无法识别、测量未知物体的距离。想让机器避障,除了检测特殊目标,还需要自动驾驶技术中的一项核心算法三维感知,即判断障碍物距离和三维尺寸(体积大小)的能力。人眼会下意识地判断物体与自己的距离。机器要想“学会”这种能力,同样需要先拥有“眼睛”。自动驾驶避障核心:双目视觉算法深度感知用到的测距方法有很多,包括红外、超声波、激光、3D结构光、3DToF、单目视觉、双目视觉等。那么,为什么要选择双目视觉算法?简单来说,就是让机器像人一样,用两只眼睛看世界,产生“深度”感。不然,机器人看着你和身后的花瓶,会认为是你正顶着一个花瓶,而不会产生“深度”感。△错位图 如果只有单目(只用一只眼睛,利用时

  • Vue使用props和emit父子组件通信

    子组件获取父组件的值和方法在components创建一个poster组件<template> <div></div> </template> <script> exportdefault{ name:"poster", data(){ return{}; }, props:["title","getrun"],//title用来接收值,getrun接收方法 mounted(){ this.getrun(); console.log(this.title); }, methods:{} }; </script>复制创建一个父组件home,把子主键引入到父组件中去<template> <divclass="home"> <poster:title="title":getrun="getFa"/> </div> </template> &l

  • SQL Server入门

    正文共:4158字8图预计阅读时间:11分钟 本文目录:1.1基本功能1.2版本信息1.3安装说明1.4连接到数据库1.5帮助信息1.6在线SQL平台1.SQLServer介绍1.1基本功能SQLServer是由Microsoft开发和推广的以客户/服务器(c/s)模式访问、使用Transact-SQL语言的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。MicrosoftSQLServer近年来不断更新版本,1996年,Microsoft推出了SQLServer6.5版本;1998年,SQLServer7.0版本和用户见面;SQLServer2000是Microsoft公司于2000年推出,目前最新版本是2019年份推出的SQLSERVER2019。提供的主要功能:支持存储过程、触发器、函数和视图本机支持关系数据、XML、FILESTREAM和空间数据,可存储所有类型的业务数据除与SQLServerReportingServices中的Microsoft2007OfficeS

  • React源码解析之scheduleWork(上)

    前言: 你需要知道:浅谈React16中的Fiber机制(https://tech.youzan.com/react-fiber/)、React源码解析之RootFiber、React源码解析之FiberRoot在之前的文章中讲到,React更新的方式有三种: (1)ReactDOM.render()||hydrate(ReactDOMServer渲染) (2)setState() (3)forceUpdate()在createUpdate后就进入scheduleWork流程,接下来我们就正式进入调度流程一、scheduleUpdateOnFiber() 作用: 调度update任务提示: scheduleWork即scheduleUpdateOnFiber:exportconstscheduleWork=scheduleUpdateOnFiber; 复制源码://scheduleWork exportfunctionscheduleUpdateOnFiber( fiber:Fiber, expirationTime:ExpirationTime, ){ //判断是否是无限循环upda

  • 一个递归算法

    这是为了铭记如何把代码写的漂亮。敬大神~我最终想要得到的效果是这样的:‘水心病latin_name糖化病水心病latin_name蜜果病水心病symptomsharmplants果心水心病symptomsharmplants果面等等这个的思想利用动态规划来做,我们需要在判断类型的前提下来进行递归,一直找到最终的Value值,然后把当前Value值所在的路径,也就是k值记录下来。这是大神写的python代码,我要多多鞭策自己!!因为要统一编码为unicode在写入的时候.encode('utf-8')转为str写入文档,所有当我们遍历到值的所在节点的时候,实际上就是unicode类型,对其他非unicode类型的value值也统一转换为unicode类型。defnode_to_list(node,hypothesis,prefix=u''): ifisinstance(node,int): node=unicode(node) ifisinstance(node,unicode): node=node.replace(u',',

  • 【WordPress优化一】挑选一个好的主题

    挑选一个好的主题WordPress的强大体现在了您如何利用WordPress去创造您自己的网站,可能回答这个问题,多数人会说,用主题、用插件来解决。插件、主题的增加自然而然将WordPress生态圈进行了很好的整合,但是,由于WordPress的一些特性,导致了速度不快的现象产生。诸如the7这样的主题,功能十分的强大,可是定制化的选项越多,越会导致速度的拖沓。尤其当您选择了低配置的服务器时,该问题会暴露的更加彻底。挑选主题,应当挑选一些经过深度优化的主题。我们可以看到,部分主题为了满足用户的需求,融合了部分插件,因此你需要判断这些插件是否适合您的使用。比如the7主题增加的幻灯片Slider功能,如果您不是做一个图片较多的网站,这个就没必要进行安装。善用定制化功能,能帮助您提升速度。如果您的主题已经具备了一些插件,您不必再次安装。如果您的主题当中已经拥有类似懒加载这样的插件,那么您就无需再安装了。插件的增多,势必导致您服务器的吞吐量,增加了负载。好的主题,插件不需要太多,插件不是解决问题的唯一办法,您应当注意到这一点。WordPress也应当避免安装过多的插件,能用代码解决的问题就不

  • Java多线程的应用场景和应用目的举例

    通俗的解释一下多线程先:多线程用于堆积处理,就像一个大土堆,一个推土机很慢,那么10个推土机一起来处理,当然速度就快了,不过由于位置的限制,如果20个推土机,那么推土机之间会产生相互的避让,相互摩擦,相互拥挤,反而不如10个处理的好,所以,多线程处理,线程数要开的恰当,就可以提高效率。多线程使用的目的:1、吞吐量:做WEB,容器帮你做了多线程,但是它只能帮你做请求层面的,简单的说,就是一个请求一个线程(如struts2,是多线程的,每个客户端请求创建一个实例,保证线程安全),或多个请求一个线程,如果是单线程,那只能是处理一个用户的请求。2、伸缩性:通过增加CPU核数来提升性能。多线程的使用场景:1、常见的浏览器、Web服务(现在写的web是中间件帮你完成了线程的控制),web处理请求,各种专用服务器(如游戏服务器)2、servlet多线程3、FTP下载,多线程操作文件4、数据库用到的多线程5、分布式计算6、tomcat,tomcat内部采用多线程,上百个客户端访问同一个WEB应用,tomcat接入后就是把后续的处理扔给一个新的线程来处理,这个新的线程最后调用我们的servlet程序,比

  • Angular快速学习笔记(3) -- 组件与模板

    1.显示数据在Angular中最典型的数据显示方式,就是把HTML模板中的控件绑定到Angular组件的属性。使用插值表达式显示组件属性要显示组件的属性,最简单的方式就是通过插值表达式(interpolation)来绑定属性名。要使用插值表达式,就把属性名包裹在双花括号里放进视图模板,如{{myHero}}。import{Component}from'@angular/core'; @Component({ selector:'app-root', template:` <h1>{{title}}</h1> <h2>Myfavoriteherois:{{myHero}}</h2> ` }) exportclassAppComponent{ title='TourofHeroes'; myHero='Windstorm'; }复制注意这里直接使用的template,而不是templateUrl,template可以直接书写html代码,简单的html推荐这种方

  • 游戏服务器框架 Leaf/go

    Leaf是一个使用Go语言开发的开源游戏服务器框架,注重运行效率并追求极致的开发效率。Leaf适用于几乎所有的游戏类型。其主要的特性:*良好的使用体验。Leaf总是尽可能的提供简洁和易用的接口,尽可能的提升开发的效率*稳定性。Leaf总是尽可能的恢复运行过程中的错误,避免崩溃*多核支持。Leaf通过模块机制和leaf/go尽可能的利用多核资源,同时又尽量避免各种副作用*良好的模块支持。一个Leaf开发的游戏服务器由多个模块组成(例如LeafServer),模块有以下特点:*每个模块运行在一个单独的goroutine中*模块间通过一套轻量的RPC机制通讯(leaf/chanrpc)Leaf不建议在游戏服务器中设计过多的模块。游戏服务器在启动时进行模块的注册,例如:leaf.Run( game.Module, gate.Module, login.Module, )复制这里按顺序注册了game、gate、login三个模块。每个模块都需要实现接口:typeModuleinterface{OnInit()OnDestroy()Run(closeSigchanbool) }复制Leaf首先会在

  • 蘑菇街Android组件与插件化

    插件化的基石--apk动态加载随着我街业务的蓬勃发展,产品和运营随时上新功能新活动的需求越来越强烈,经常可以听到“有个功能我想周x上,行不行”。行么?当然是不行啦,上新功能得发新版本啊,到时候费时费力打乱开发节奏不说,覆盖率也是个问题。苏格拉底曾经说过:“现在移动端的主要矛盾是产品日益增长的功能需求与平台落后的发布流程之间的矛盾”。当然,作为一个靠谱的程序猿,我们就是为了满足产品的需求而存在的(正义脸)。于是在一个阳光明媚的早晨,吃完公司的免费早餐后,我和小强、叶开,决定做一个完善的Android动态加载框架。Android动态加载技术在蘑菇街的第一次实践,还是在14年的时候,使用的就是之前网上广(tu)为(du)流(si)传(fang)的方式,这种方式有一个重大缺陷,就是插件内部对资源的访问只能通过自己定义的方式,包括对layout文件的inflate等,使用getResouces的方式,分分钟crash给你看,而且内部实现有些复杂,容易出现莫名其妙的ResourcesNotFound错误。在一段时间的使用之后,始终无法大面积推广,原因就是对开发人员来说,写一个“正常”的模块和写一个

  • django分页器的用法_django分页查询

    大家好,又见面了,我是你们的朋友全栈君。 前言当后台返回的数据过多时,我们就要配置分页器,比如一页最多只能展示10条等等,drf中默认配置了3个分页面PageNumberPagination:基础分页器,性能略差LimitOffsetPagination:偏移分页器CursorPagination:游标分页器,性能强大 PageNumberPagination基础分页器PageNumberPagination,数据量越大性能越差。首先我们在app中创建一个pagination.py文件,然后自定义一个分页器类,继承自PageNumberPagination:fromrest_framework.paginationimportPageNumberPagination classMyPageNumberPagination(PageNumberPagination): """ 普通分页,数据量越大性能越差 """ #默认页面展示的条数 page_size=3 #前端访问url需要添加?page=页码 page_query_p

  • Mac 安装 java8

    下载 官网下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 网盘地址:链接: https://pan.baidu.com/s/1Tnqw3ejNzIAq78-Tl8XJQA 密码:26lt 安装 下载完成是一个dmg,dmg打开是一个pkg,打开pkg就是按照安装步骤一步一步进行安装 路径 Java安装在:/Library/Java/JavaVirtualMachines 这个目录下面 Java的主目录在:/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home这里里面,我们配置Java的环境变量也是这个目录 配置环境变量 在/ect/profile文件里面加入以下环境变量 exportJAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/HomeexportPATH=$

  • WordPress使用固定链接

         WordPress安装后我们会发现,文章默认的url是很丑的,http://example.com/?p=N,其中N是文章ID,一串数字。默认链接在所有的环境下都运转良好,但和其他的类型比起来却没那么好看。我们见过一些很漂亮的url,例如:http://example.com/category/post-name/或者http://example.com/year/month/day/post-name,这些都有利于SEO。      现在不要着急,只要一分钟就能让你的博客地址也能那么漂亮,这也充分显示了WordPress的强大之处。找到设置-》固定链接后,你就可以任意选择自己喜欢的style了。 结构标签解释: %year%:文章发表的年份,四位数,如2004%monthnum%:月份,如05%day%:天,如28%hour%:小时,如15%minute%:分钟,如43%second%:秒,如33%postname%:文章标题的别名。对于文章标题为“Thefirstday!

  • 反思

    可能过于关注与自己有关(身边)的事了 因此心态还远没有达到理想的那种境界吧

  • 【spring-boot】配置Redis工具类

    如何在spring-boot中使用Redis工具类 修改pom.xml文件 新增spring-boot-starter-data-redis配置 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>复制 修改application.yml 新增Redis配置 server: port:6660 redis: host:127.0.0.1 port:6379 password:复制 新增config目录 RedisConfig.java文件 packagecom.example.redisdemo.config; importorg.springframework.beans.factory.annotation.Autowired; importorg.springframework.cache.annot

  • 3. Redis集群部署

    目录集群环境搭建创建Redis集群管理集群Redis集群解散 集群环境搭建 集群拓扑图 Redis服务器IP地址及端口规划 #也可以不修改Redis服务的端口,这里为了区分 -client 192.168.4.10 无 -MGM(admin) 192.168.4.9 无 -redisA 192.168.4.11 6301 -redisB 192.168.4.12 6302 -redisC 192.168.4.13 6303 -redisD 192.168.4.14 6304 -redisE 192.168.4.15 6305 -redisF 192.168.4.16 6306 复制 安装配置Redis服务(这里以一台为例) [root@node1~]#rpm-qgcc||yum-yinstallgcc [root@node1~]#tar-xfredis-4.0.8.tar.gz [root@node1~]#cdredis-4.0.8/ [root@node1redis-4.0.8]#make&&makeinstall [r

  • Navicat配置跳板机连接数据库

    需求   在开发中,有时候我们会碰到这么一个情况。数据库的服务器在内网,如果想连接,必须得先ssh登陆到跳板机,然后在跳板机ssh到达数据库所在服务器,进而操作数据库。遗憾的是,如果跳板机和数据库所在服务器如果都没有像Navicat这种数据库客户端连接工具,那么操作数据库会很吃力,只能通过敲命令行的方式进行操作。那么接下来,教大家一个方法,可以通过本机的数据库客户端工具直接连接到内网服务器的数据库。 实现   第一步:在SecureCRT或者Xshell等工具上配置跳板机的地址,保证能连上跳板机服务器。       如果能在跳板机终端能输入命令行,表示连接成功。   第二步:给跳板机配置隧道,我这里使用的是SecureCRT(Xshell同样可以),双击跳板机服务器-->Properties-->PortForwarding-->Add,就会看到如下界面,并根据自己的服务器的情况填写相应参数。      第三步:给Navicat配置连接参数,使用时要保证跳板机处于连接状态。         第四步:点击连接测试,出现下图,表示连接成功!

  • 数据组合求值

    找到你的另一半都说优秀的程序员擅长面向对象编程,但却经常找不到另一半,这是为什么呢?因为你总是把自己局限成为一个程序员,没有打开自己的思维。这是一个社群的时代啊,在这里你应该找到与你有相同价值观但又互补的另一半。譬如:你编程能力强,估值11分,如果以20分为最佳情侣来计算,你应该找一个设计能力强,估值为9分的女生。那么当你遇到一个设计能力为9分的女生,千万别犹豫,大胆去表白。千万别以为后面的瓜比前面的甜哦。举个例子:有一个能力数组[7,9,11,13,15],按照最佳组合值为20来计算,只有7+13和9+11两种组合。而7在数组的索引为0,13在数组的索引为3,9 functionpairwise(arr,arg){  varvisit=[0];  varans=0;  for(vari=0;i<arr.length;i++){    for(varj=i+1;j<arr.length;j++){      

  • TCAM and CAM memory usage inside networking devices(转)

    TCAMandCAMmemoryusageinsidenetworkingdevicesValterPopeskicEquipmentandtools,Physicallayer,Routing,Switching8Comments AsthisisnetworkingblogIwillfocusmostlyontheusageofCAMandTCAMmemoryinroutersandswitches.IwillexplainTCAMroleinrouterprefixlookupprocessandswitchmacaddresstablelookup. However,whenwetalkaboutthisspecifictopic,mostofyouwillask:howisthismemorymadefromarchitecturalaspect? Howisitmadeinordertohavethecapabilityofmakinglookupsfasterthananyotherhardwareorsoftwaresolution?Thatisthereasonfor

相关推荐

推荐阅读