如何设置jvm内存zookeeper的JVM内存

Hadoop(32)
zookeeper3.4.5内存分配
对于zookeeper内存设置多大有些疑问,这里给大家解惑一下:
首先介绍一下该如何分配内存:
文件路径:zookeeper/bin/zkEnv.sh
该文件已经明确说明有独立JVM内存的设置文件,路径是zookeeper/conf/.env
安装的时候这个路径下没有有java.env文件,需要自己新建一个:
vi java.env
java.env文件内容如下:
export JAVA_HOME=/usr/java/jdk
# heap size MUST be modified according to cluster environment
export JVMFLAGS=&-Xms512m -Xmx1024m $JVMFLAGS&
对于内存的分配,还是根据项目和机器情况而定。如果内存够用,适当的大点可以提升zk性能。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:115285次
积分:2000
积分:2000
排名:第17087名
原创:39篇
转载:301篇
(4)(3)(4)(2)(10)(10)(26)(12)(6)(50)(24)(18)(3)(9)(15)(18)(23)(7)(2)(5)(20)(40)(5)(2)(1)(1)(3)(1)(15)(1)博客访问: 1295487
博文数量: 188
注册时间:
专业卖发票,诚信做物流,高效承接:数据库&服务器&网站&软件&手机APP开发、系统集成等IT业务。
技术交流群:
ITPUB论坛APP
ITPUB论坛APP
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: IT综合技术
Zookeeper安装
wget http://www.apache.org/dist//zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz
tar zxvf zookeeper-3.3.6.tar.gz
mv zookeeper-3.3.6 /usr/local/zookeeper-3.3.6-2181
cd /usr/local/zookeeper-3.3.6-2181
cp conf/zoo_sample.cfg conf/zoo.cfg
2. 单实例配置
修改配置文件
vi conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
#数据保存目录
dataDir=/data/zhanglin/logistics/zookeeper-3.3.6
#客户端连接端口
clientPort=2181
#在文件底部增加
export JVMFLAGS="-Xms1024m -Xmx2048m $JVMFLAGS"
查询内存大小
ps -ef|grep zookeeper
jmap --heap& pid
3. 集群配置
注意:其中data目录和server地址需改成你真实部署机器的信息
修改配置文件
vi conf/zoo.cfg
tickTime=2000
#连接leader的等待的最长时间(秒)
initLimit=10
#标识 Leader 与 Follower 之间发送消息,请求和应答时间最长时间
syncLimit=5
dataDir=/data/zhanglin/logistics/zookeeper-3.3.6
clientPort=2181
#server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 #Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 #Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
server.1=10.0.30.138:
server.2=10.0.30.139:
增加myid文件
并在data目录下放置myid文件:(上面zoo.cfg中的dataDir)
mkdir data
myid指明自己的id,对应上面zoo.cfg中server.后的数字,第一台的内容为1,第二台的内容为2,内容如下:
./bin/zkServer.sh start
./bin/zkServer.sh stop
注:命令行参考 (See: )
6. 验证启动状态
telnet 127.0.0.1 2181
dubbo.registry.address=zookeeper://10.0.30.138:2181?backup=10.0.30.139:2181
8. 测试zk服务
执行$ zkCli.sh -server 10.0.30.138:2181,检查指定服务器是否成功启动。
下面给我的单机3个伪集群的案例:
(1).分别在三台机器上安装好zookeeper,最好是同版本的。
&& 直接cp三个即可,做一下标记,便于区分。
(2).修改配置文件如下
vi conf/zoo.cfg
下面分别是三个节点的配置文件样本
注意:其中data目录和server地址需改成你真实部署机器的信息&
(3).增加myid文件
并在data目录下放置myid文件:(上面zoo.cfg中的dataDir)
#cd /data/retail/zookeeper/
myid指明自己的id,对应上面zoo.cfg中server.后的数字,第一台的内容为1,第二台的内容为2,依次类推。
阅读(25448) | 评论(0) | 转发(2) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。zookeeper简单使用_教育指南_百度教育攻略
一、zookeeper的基本原理数据模型,如下:ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每个ZNode都可以通过其路径唯一标识,比如上图中第三层的第一个ZNode, 它的路径是/app1/c1。在每个ZNode上可存储少量数据(默认是1M, 可以通过配置修改, 通常不建议在ZNode上存储大量的数据),这个特性非常有用。另外,每个ZNode上还存储了其Acl信息,这里需要注意,虽说ZNode的树形结构跟Unix文件系统很类似,但是其Acl与Unix文件系统是完全不同的,每个ZNode的Acl的独立的,子结点不会继承父结点的。ZooKeeper特性:1、读、写(更新)模式在ZooKeeper集群中,读可以从任意一个ZooKeeper Server读,这一点是保证ZooKeeper比较好的读性能的关键;写的请求会先Forwarder到Leader,然后由Leader来通过ZooKeeper中的原子广播协议,将请求广播给所有的Follower,Leader收到一半以上的写成功的Ack后,就认为该写成功了,就会将该写进行持久化,并告诉客户端写成功了。2、 WAL和Snapshot和大多数分布式系统一样,ZooKeeper也有WAL(Write-Ahead-Log),对于每一个更新操作,ZooKeeper都会先写WAL, 然后再对内存中的数据做更新,然后向Client通知更新结果。另外,ZooKeeper还会定期将内存中的目录树进行Snapshot,落地到磁盘上,这个跟HDFS中的FSImage是比较类似的。这么做的主要目的,一当然是数据的持久化,二是加快重启之后的恢复速度,如果全部通过Replay WAL的形式恢复的话,会比较慢。3、FIFO对于每一个ZooKeeper客户端而言,所有的操作都是遵循FIFO顺序的,这一特性是由下面两个基本特性来保证的:一是ZooKeeper Client与Server之间的网络通信是基于TCP,TCP保证了Client/Server之间传输包的顺序;二是ZooKeeper Server执行客户端请求也是严格按照FIFO顺序的。精彩内容,尽在百度攻略:4、 Linearizability在ZooKeeper中,所有的更新操作都有严格的偏序关系,更新操作都是串行执行的,这一点是保证ZooKeeper功能正确性的关键。二、zookeeper的常用命令我们可以执行zookeeper-client或者执行/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/zookeeper/bin/zkCli.sh -server localhost,进入zookeeper命令行,如下:然后,执行ls /可以看到:然后,我们可以执行create /qyktest ‘qyktest’创建一个节点,如下:然后,我们执行get /qyktest获取节点值,如下:然后,我们可以执行set /qyktest ‘111’修改节点的值,如下:最后,我们执行delete /qyktest便可删除此节点。另外,我们还可以在qyktest此节点下继续创建子节点。好了,几个基本命令就讲到这人啦,其它的命令还有很多,大家可以去查阅下资料。三、zookeeper的java api操作关于Java api操作zookeeper比较简单,笔者直接贴出代码,如下:精彩内容,尽在百度攻略:/*** Project Name:hive-demo* File Name:ZookeeperClient.java精彩内容,尽在百度攻略:* Package Name:org.zookeeper.demo* Date:日下午9:14:18* Copyright (c) 2016, CANNIKIN(http://http://code.taobao.org/p/cannikin/src/) All Rights Reserved.精彩内容,尽在百度攻略:**/package org.zookeeper.精彩内容,尽在百度攻略:/*** ClassName:ZookeeperClient* Function: TODO ADD FUNCTION.精彩内容,尽在百度攻略:* Reason:
TODO ADD REASON.* Date:
日 下午9:14:18* @author
qiyongkang精彩内容,尽在百度攻略:* @version* @since
JDK 1.6* @see精彩内容,尽在百度攻略:*/import java.io.IOEimport java.util.concurrent.CountDownL精彩内容,尽在百度攻略:import org.apache.zookeeper.CreateMimport org.apache.zookeeper.KeeperEimport org.apache.zookeeper.WatchedE精彩内容,尽在百度攻略:import org.apache.zookeeper.Wimport org.apache.zookeeper.Watcher.Event.KeeperSimport org.apache.zookeeper.ZooDefs.I精彩内容,尽在百度攻略:import org.apache.zookeeper.ZooK/***精彩内容,尽在百度攻略:* ClassName: ZookeeperClient* Function: zookeeper api* date: 日 下午8:05:43精彩内容,尽在百度攻略:** @author qiyongkang* @version精彩内容,尽在百度攻略:* @since JDK 1.6*/public class ZookeeperClient implements Watcher {精彩内容,尽在百度攻略://连接超时时间,10sprivate static final int SESSION_TIMEOUT = 10000;//连接的zookeeper server精彩内容,尽在百度攻略:private static final String CONNECTION_STRING = "172.31.25.8:2181";private static final String ZK_PATH = "/qyktest";private ZooKeeper zk =精彩内容,尽在百度攻略:private CountDownLatch connectedSemaphore = new CountDownLatch(1);/*** 创建ZK连接精彩内容,尽在百度攻略:** @param connectString*
ZK服务器地址列表精彩内容,尽在百度攻略:* @param sessionTimeout*
Session超时时间*/精彩内容,尽在百度攻略:public void createConnection(String connectString, int sessionTimeout) {this.releaseConnection();try {精彩内容,尽在百度攻略:zk = new ZooKeeper(connectString, sessionTimeout, this);connectedSemaphore.await();} catch (InterruptedException e) {精彩内容,尽在百度攻略:System.out.println("连接创建失败,发生 InterruptedException");e.printStackTrace();} catch (IOException e) {精彩内容,尽在百度攻略:System.out.println("连接创建失败,发生 IOException");e.printStackTrace();}精彩内容,尽在百度攻略:}/*** 关闭ZK连接精彩内容,尽在百度攻略:*/public void releaseConnection() {if (this.zk != null) {精彩内容,尽在百度攻略:try {this.zk.close();} catch (InterruptedException e) {精彩内容,尽在百度攻略:e.printStackTrace();}}精彩内容,尽在百度攻略:}/*** 创建节点精彩内容,尽在百度攻略:** @param path*
节点path精彩内容,尽在百度攻略:* @param data*
初始数据内容* @return精彩内容,尽在百度攻略:*/public boolean createPath(String path, String data) {try {精彩内容,尽在百度攻略:/*** 此处采用的是CreateMode是PERSISTENT
表示The znode will not be automatically deleted upon client's disconnect.* EPHEMERAL 表示The znode will be deleted upon the client's disconnect.精彩内容,尽在百度攻略:*/String result = this.zk.create(path, data.getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);System.out.println("节点创建成功, Path: " + result + ", content: " + data);精彩内容,尽在百度攻略:} catch (KeeperException e) {System.out.println("节点创建失败,发生KeeperException");e.printStackTrace();精彩内容,尽在百度攻略:} catch (InterruptedException e) {System.out.println("节点创建失败,发生 InterruptedException");e.printStackTrace();精彩内容,尽在百度攻略:}}精彩内容,尽在百度攻略:/*** 读取指定节点数据内容*精彩内容,尽在百度攻略:* @param path*
节点path* @return精彩内容,尽在百度攻略:*/public String readData(String path) {try {精彩内容,尽在百度攻略:System.out.println("获取数据成功,path:" + path);return new String(this.zk.getData(path, false, null));} catch (KeeperException e) {精彩内容,尽在百度攻略:System.out.println("读取数据失败,发生KeeperException,path: " + path);e.printStackTrace();return "";精彩内容,尽在百度攻略:} catch (InterruptedException e) {System.out.println("读取数据失败,发生 InterruptedException,path: " + path);e.printStackTrace();精彩内容,尽在百度攻略:return "";}}精彩内容,尽在百度攻略:/*** 更新指定节点数据内容*精彩内容,尽在百度攻略:* @param path*
节点path* @param data精彩内容,尽在百度攻略:*
数据内容* @return*/精彩内容,尽在百度攻略:public boolean writeData(String path, String data) {try {System.out.println("更新数据成功,path:" + path + ", stat: " + this.zk.setData(path, data.getBytes(), -1));精彩内容,尽在百度攻略:} catch (KeeperException e) {System.out.println("更新数据失败,发生KeeperException,path: " + path);e.printStackTrace();精彩内容,尽在百度攻略:} catch (InterruptedException e) {System.out.println("更新数据失败,发生 InterruptedException,path: " + path);e.printStackTrace();精彩内容,尽在百度攻略:}}精彩内容,尽在百度攻略:/*** 删除指定节点*精彩内容,尽在百度攻略:* @param path*
节点path*/精彩内容,尽在百度攻略:public void deleteNode(String path) {try {this.zk.delete(path, -1);精彩内容,尽在百度攻略:System.out.println("删除节点成功,path:" + path);} catch (KeeperException e) {System.out.println("删除节点失败,发生KeeperException,path: " + path);精彩内容,尽在百度攻略:e.printStackTrace();} catch (InterruptedException e) {System.out.println("删除节点失败,发生 InterruptedException,path: " + path);精彩内容,尽在百度攻略:e.printStackTrace();}}精彩内容,尽在百度攻略:public static void main(String[] args) {ZookeeperClient sample = new ZookeeperClient();//获取连接精彩内容,尽在百度攻略:sample.createConnection(CONNECTION_STRING, SESSION_TIMEOUT);//读数据String qyk = sample.readData("/qyktest");精彩内容,尽在百度攻略:System.out.println("qyk:" + qyk);String url = sample.readData("/qyk/db/url");System.out.println("url" + url);精彩内容,尽在百度攻略:String driver = sample.readData("/qyk/db/driver");System.out.println("driver" + driver);String userName = sample.readData("/qyk/db/userName");精彩内容,尽在百度攻略:System.out.println("userName" + userName);String password = sample.readData("/qyk/db/password");System.out.println("password" + password);精彩内容,尽在百度攻略://创建节点sample.createPath(ZK_PATH, "我是节点初始内容");System.out.println("数据内容: " + sample.readData(ZK_PATH) + "\n");精彩内容,尽在百度攻略://更新节点sample.writeData(ZK_PATH, "更新后的数据");System.out.println("数据内容: " + sample.readData(ZK_PATH) + "\n");精彩内容,尽在百度攻略://删除节点sample.deleteNode(ZK_PATH);//释放连接精彩内容,尽在百度攻略:sample.releaseConnection();}/**精彩内容,尽在百度攻略:* 收到来自Server的Watcher通知后的处理。*/@Override精彩内容,尽在百度攻略:public void process(WatchedEvent event) {System.out.println("收到事件通知:" + event.getState() + "\n");if (KeeperState.SyncConnected == event.getState()) {精彩内容,尽在百度攻略:connectedSemaphore.countDown();}}精彩内容,尽在百度攻略:}然后,执行可以看到,控制台输出如下:所以,像一些公用的配置,我们可以存到zookeeper里面,之后其它的服务就可以使用了精彩内容,尽在百度攻略:本文作者:qiyongkang

我要回帖

更多关于 jvm 内存设置 的文章

 

随机推荐