zookeeper相关配置
zookeeper配置 vim /etc/profile 添加以下几行 ZOOKEEPER_HOME=/usr/local/software/zookeeper PATH=$ZOOKEEPER_HOME/bin:$PATH export ZOOKEEPER_HOME 重新加载/etc/profile配置文件 source /etc/profile 进入conf下修改 zoo_sample.cfg 文件名 或复制 文件名为 zoo.cfg cd zookeeper/conf/ && cp zoo_sample.cfg zoo.cfg 修改 zoo.cfg 1.修改zookeeper文件存放位置 dataDir=/usr/local/software/zookeeper/data 2.最后面添加以下几行 server.0=192.168.31.42:2888:3888 server.1=192.168.31.43:2888:3888 server.2=192.168.31.44:2888:3888 3.进入 zookeeper 目录 (/usr/local/software/zookeeper) 创建 data 目录 mkdir data 4.在 data 目录下创建 myid 文件 ((内容为服务器标识:0 对应server.0 server.1 server.2) 42 服务器 : 在 myid 中 输入 0 43 服务器 : 在 myid 中 输入 1 44 服务器 : 在 myid 中 输入 2 启动 zookeeper zkServer.sh start 查看 zookeeper 运行状态 zkServer.sh status ------------------------------------------------------------------------------------------------ 操作zookeeper (shell) zkCli.sh 进入zookeeper客户端 根据提示命令进行操作: 查找: ls / ls /zookeeper 创建并赋值:create /bhz hadoop 获取:get /bhz 设值:set /bhz baihezhuo 可以看到zookeeper集群的数据一致性 创建节点有俩种类型:短暂(ephemeral) 持久(persistent) ------------------------------------------------------------------------------------------------ zoo.cfg详解: tickTime: 基本事件单元,以毫秒为单位。这个时间是作为 Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每隔 tickTime时间就会发送一个心跳。 dataDir:存储内存中数据库快照的位置,顾名思义就是 Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。 clientPort: 这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper会监听这个端口,接受客户端的访问请求。 initLimit: 这个配置项是用来配置 Zookeeper接受客户端初始化连接时最长能忍受多少个心跳时间间隔数, 当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息, 那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。 syncLimit: 这个配置项标识 Leader 与 Follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是 5*2000=10 秒 server.A = B:C:D : A表示这个是第几号服务器, B 是这个服务器的 ip 地址; C 表示的是这个服务器与集群中的 Leader服务器交换信息的端口; D 表示的是万一集群中的 Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader
java操作zookeeper
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.5</version> </dependency>
报错:Maven com.sun.jdmk:jmxtools:jar 下载不下来
原来是这样,在log4j 1.2.15版本中,引用了这样一个repos <repository> <id>java.net</id> <url>https://maven-repository.dev.java.net/nonav/repository</url> <layout>legacy</layout> </repository>要从它这里面下载jms
解决方法是:
将pom.xml里的log4j的版本修改为:1.2.16或者1.2.17
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency>