集群设置

系统需求

  • 客户端:Java客户端库,用户连接ZooKeeper应用程序使用。
  • 服务器端:运行在ZooKeeper节点上的Java服务端。
  • 本地客户端:C客户端接口,和Java客户端类似,用于连接ZooKeeper的应用程序使用。
  • 普通发布版:多个可选的附加组件。

系统支持度:

184505_rnqU_877598.png

多服务器集群设置

1、安装JDK

    查看 >>

2、设置JAVA堆内存大小。避免使用交换空间(swap),会极大拉低ZooKeeper的性能。通过压测,确定设定内存大小,建议最大4G。

3、下载安装ZooKeeper。

    下载地址:http://mirror.bit.edu.cn/apache/zookeeper/ 这里选择下载3.4.10版本。http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

4、创建配置文件。

tickTime=2000
dataDir=/var/lib/zookeeper/
clientPort=2181
initLimit=5
syncLimit=2
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888

每台机器都是机器的一部分,每台机器配置一行。

server.id=host:port:port

5、创建机器ID文件

每台机器都对应一个myid文件,文件内容为相应的数字ID。存放在对应dataDir目录下。

$ echo "1" > /tmp/data/myid    #对应的dataDir位置

6、启动ZooKeeper

$ java -cp zookeeper.jar:lib/slf4j-api-1.6.1.jar:lib/slf4j-log4j12-1.6.1.jar:lib/log4j-1.2.15.jar:conf \ org.apache.zookeeper.server.quorum.QuorumPeerMain zoo.cfg

(java -cp等同于:classpath)

使用 bin/zkServer.sh启动实例

bin/zkServer.sh start

7、测试部署

$ bin/zkCli.sh -server 127.0.0.1:2181

 

数据模型

Znode,节点。绝对的,/zookeeper用于保存管理信息,比如关键配额信息。

艰巨文件和目录两种特点。既像文件一样维护着数据,原信息、ACL、时间戳等数据结构,又像目录一样可以作为路径标识的一部分。

Znode由3部分组成:

  1. stat:状态信息,描述该Znode的版本,权限等信息
  2. data:与该Znode关联的数据
  3. children:该Znode下的子节点

管理调度数据。每个Znode数据至多1M。

每一个节点都拥有自己的ACL。

节点类型:

  1. 临时节点
    1. 生命周期依赖于创建时的会话。Session结束,自动删除。
    2. 对所有的客户端课件
    3. 不允许拥有子节点
  2. 永久节点
    1. 不依赖于会话,显示地执行删除操作

顺序节点

路径结尾添加一个递增的计数。对于此节点的父节点唯一。格式为“%10d”(10位数字,没有数值的位数用0补充)。当值大于2^32-1时,计数器溢出。

观察

客户端可在节点上设置watch,称为监视器。当节点发生改变时(Znode的增、删、改)将会触发对应的操作。当watch被触发时,ZooKeeper将会向客户端发送且仅发送一条通知。

ZooKeeper中的时间

有多种记录时间的形式

1、Zxid

致使节点状态改变的每一个操作都将使节点接收到一个Zxid格式的时间戳。并且该时间戳全局有序。

节点改变,产生唯一Zxid。每个节点维护着3个Zxid值。

  1. cZxid:创建时间
  2. mZxid:修改时间
  3. pZxid:

实现中Zxid是一个64位的数字。高32位epoch用来标识leader关系是否改变,每次一个leader被选出,都会有一个新的epoch。低32位递增计数

2、版本号

对节点的每一个操作,都将致使这个节点的版本号增加。

  1. version:节点数据版本号
  2. cversion:子节点版本号
  3. aversion:节点所拥有的ACL版本号

3、节点属性

  • czxid
  • mzxid
  • ctime
  • mtime
  • version
  • cversion
  • aversion
  • ephemeralOwner(临时节点,值为节点拥有者的SessionID;否则为0)
  • dataLength
  • numChildren
  • pzxid(最新修改的zxid)

操作

9个基本操作

create:创建Znode(父Znode必须存在)

delete:删除Znode(Znode没有子节点)

exists:是否存在,并获取他的元数据

getACL/setACL:

getChildren:获取所有子节点列表

getData/setData:

sync:使客户端的Znode视图与ZooKeeper同步

更新操作是有限制的。delete或setData必须明确要更新的Znode的版本号,可以调用exists找到。

更新是非阻塞式的。

Watch触发器

可以为所有的读操作设置watch,(exists、getChildren、getData)。一次性的触发器,异步发送,一致性保证。

watch类型:

  1. 数据watch:getData和exists负责设置数据watch
  2. 孩子watch:getChildren负责

通过返回的数据来设置不同的watch:

  1. getData和exists:返回关于节点的数据信息
  2. getChildren:返回子节点列表

因此:

  1. setData触发数据watch
  2. create触发数据watch和子节点watch
  3. delete触发数据watch和子节点watch

29202800_5PIw.png

注意

watch实际上要处理两类事件:

  1. 连接状态事件(type=None, path=null)
    1. 不需要注册,也不需要连续触发
  2. 节点事件
    1. one time trigger

上面2类事件都在Watch中处理,即重载process(Event event)

节点事件的触发,通过exists,getData或getChildren来处理这类函数,有双重作用:

  1. 注册触发事件
  2. 函数本身的功能

函数本身的功能又可以异步的回调函数来实现,重载processResult()过程中处理函数本身的功能。

ACL Permissions

  • CREATE
  • READ
  • WRITE
  • DELETE
  • ADMIN

Builtin ACL Schemes

  • world
  • auth
  • digest
  • ip

ZooKeeper C client API

  • const int ZOO_PERM_READ; //can read node’s value and list its children
  • const int ZOO_PERM_WRITE;// can set the node’s value
  • const int ZOO_PERM_CREATE; //can create children
  • const int ZOO_PERM_DELETE;// can delete children
  • const int ZOO_PERM_ADMIN; //can execute set_acl()
  • const int ZOO_PERM_ALL;// all of the above flags OR’d together

标准ACL IDs: 

  • struct Id ZOO_ANYONE_ID_UNSAFE; //(‘world’,’anyone’)
  • struct Id ZOO_AUTH_IDS;// (‘auth’,’’)

3个标准ACL:

  • struct ACL_vector ZOO_OPEN_ACL_UNSAFE; //(ZOO_PERM_ALL,ZOO_ANYONE_ID_UNSAFE)
  • struct ACL_vector ZOO_READ_ACL_UNSAFE;// (ZOO_PERM_READ, ZOO_ANYONE_ID_UNSAFE)
  • struct ACL_vector ZOO_CREATOR_ALL_ACL; //(ZOO_PERM_ALL,ZOO_AUTH_IDS)

The following ZooKeeper operations deal with ACLs:

  • int zoo_add_auth (zhandle_t *zh,const char* scheme,const char* cert, int certLen, void_completion_t completion, const void *data);

The application uses the zoo_add_auth function to authenticate itself to the server. The function can be called multiple times if the application wants to authenticate using different schemes and/or identities.

  • int zoo_create (zhandle_t *zh, const char *path, const char *value,int valuelen, const struct ACL_vector *acl, int flags,char *realpath, int max_realpath_len);

zoo_create(...) operation creates a new node. The acl parameter is a list of ACLs associated with the node. The parent node must have the CREATE permission bit set.

  • int zoo_get_acl (zhandle_t *zh, const char *path,struct ACL_vector *acl, struct Stat *stat);

This operation returns a node’s ACL info.

  • int zoo_set_acl (zhandle_t *zh, const char *path, int version,const struct ACL_vector *acl);

This function replaces node’s ACL list with a new one. The node must have the ADMIN permission set.

转载于:https://my.oschina.net/u/877598/blog/1525743

<think>好的,我现在需要帮助用户找到关于ContextCapture集群设置的具体操作方法。用户提到了“ContextCapture集群配置教程”或“分布式部署指南”,但根据提供的引用内容,似乎没有直接对应的资料。首先,我要仔细分析用户提供的引用内容,看看有没有相关线索。 引用[1]讲的是PhotoScan空三成果导入ContextCapture的教程,这可能不涉及集群配置。引用[2]和[3]主要讨论硬件配置方案,包括单机和集群的硬件推荐,但可能没有详细的操作步骤。用户需要的是具体的配置教程或部署指南,而现有的引用可能没有直接提供。 接下来,我需要考虑可能的解决方案。由于提供的引用中没有明确的集群设置步骤,可能需要建议用户参考官方文档或在线资源。另外,引用[3]提到多机并行集群处理系统,可以建议用户查阅官方手册或技术支持,因为这类高级功能通常需要官方指导。 此外,用户可能需要硬件配置作为基础,引用[2]和[3]中的硬件推荐可能对集群搭建有帮助,但具体的软件配置步骤可能不在其中。因此,在回答时需要指出现有引用中的硬件信息,并引导用户寻找官方教程或社区资源。 最后,生成相关问题时要围绕集群配置、硬件需求、性能优化等方向,帮助用户进一步探索。</think>关于ContextCapture集群配置的具体操作方法,根据现有资料分析,以下是分步骤说明: 1. **硬件基础准备** 需先按照集群计算需求配置多节点硬件,建议参考多机集群配置方案: - 主节点建议采用双路CPU(如至强银牌4210R)+ 128GB内存 + 高速SSD系统盘[^3] - 计算节点推荐配置双路CPU(至强金牌6248R)+ RTX6000显卡 + 512GB内存[^2] - 需配备万兆网络交换机和NAS存储实现节点间高速通信[^3] 2. **软件环境搭建** 虽然现有资料未详述部署流程,但根据行业实践需注意: - 所有节点需安装相同版本ContextCapture Center - 配置共享存储空间用于项目文件同步 - 设置NTP时间服务器确保节点时间同步 3. **集群任务分配** 通过Engine Manager设置计算节点: ```plaintext 1. 打开Engine Manager控制台 2. 添加计算节点IP地址 3. 设置各节点资源分配权重 4. 验证节点间通信状态 ``` 建议通过以下途径获取详细教程: - 访问Bentley官方知识库获取《ContextCapture集群部署白皮书》 - 联系硬件供应商获取定制化部署方案(引用中提到的配置方案供应商通常提供部署支持)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值