您的位置:首页 > 编程语言 > Java开发

java系列之zokeeper与kafka安装使用

2017-01-11 10:01 369 查看
最近正在搞元数据架构,学了一下zookeeper和kafka,在这里把它们的搭建方法记录一下,以便供大家和自己以后参考。
zookeeper:顾名思义,动物园管理者,国外程序猿爱把各种软件起一个动物的名字,诸如tomcat之类的;因此可以把zookeeper当做
是一个管理各种软件的工具,在这里只介绍一下zookeeper管理kafka的示例,其他的大家可以自行研究。
下载zookeeper后可以直接运行zkserver(需要先建一个配置文件zoo.cfg[可直接复制备份文件]);


启动client(默认启动本地和接口)后可通过ls /来查看当前目录下的结构;

(说白了,各个node上其实存放的就是一个目录结构而已)(所以是可以创建结构的应该)

http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.5.2-alpha/zookeeper-3.5.2-alpha.tar.gz

kafka:消息队列,简单点说,就是发送消息,一方发送,乙方接收;
至于kafka的原理可参考:  http://www.infoq.com/cn/articles/apache-kafka http://cailin.iteye.com/blog/2014486/


安装方法可参考:http://blog.csdn.net/evankaka/article/details/52421314(windows)

http://czj4451.iteye.com/blog/2041096(linux)

以上网址中的博客已经把操作步骤写的很清楚了,我也就不再赘述了,大家可以参照博客中的方法进行安装和运行;

当然了,安装并运行软件永远都不是最终目的,程序猿的最终目的是要在代码上自动运行才是关键;

该项目主要是添加节点,监听节点以及删除节点;

首先将zookeeper的server服务端启动,即可运行下面的项目

然后可以启动zookeeper的client端来查看当前的服务节点,其实就是目录结构;

只需要在pop.xml中加入

<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
</dependencies>


package com.zoo;

import java.util.Arrays;
import java.util.List;

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooDefs;
import org.apache.zookeeper.ZooKeeper;

//启动客户端之后输入ls+空格+/
public class ZookeeperTest {

// 根节点
public static final String ROOT = "/root-ktv1";

public static void main(String[] args) throws Exception {
// 创建一个与服务器的连接
Watcher watcher = new Watcher(){
public void process(WatchedEvent event) {
System.out.println("状态:" + event.getState()+":"+event.getType()+":"+event.getWrapper()+":"+event.getPath());
}
};

ZooKeeper zk = new ZooKeeper("localhost:2181", 300, watcher);
// 创建一个总的目录ktv,并不控制权限,这里需要用持久化节点,不然下面的节点创建容易出错
zk.create(ROOT, "root-ktv1".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);

// 然后杭州开一个快递 ,       PERSISTENT_SEQUENTIAL 类型会自动加上 0000000000 自增的后缀
zk.create(ROOT+"/杭州快递", "杭州快递".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);

// 也可以在北京开一个,       EPHEMERAL session 过期了就会自动删除
zk.create(ROOT+"/北京快递", "北京快递".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);

// 同理,我可以在北京开多个,EPHEMERAL_SEQUENTIAL  session 过期自动删除,也会加数字的后缀
zk.create(ROOT+"/北京快递-分店", "北京快递-分店".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL);

// 我们也可以 来看看 一共监视了多少家的ktv
List<String> ktvs = zk.getChildren(ROOT, true);
System.out.println(Arrays.toString(ktvs.toArray()));
for(String node : ktvs){
// 删除节点
zk.delete(ROOT+"/"+node,-1);
}
// 根目录得最后删除的
zk.delete(ROOT, -1);
zk.close();
}
}


以后再加几个java以及与springmvc合成的例子,今天先写到这儿

下面写一个kafka的例子:

http://blog.csdn.net/evankaka/article/details/52494412

不知道为什么我的消费者老是接收不到信息,大伙儿有跑起来的可以给我留个言啊

正好需要(查看zokeeper和kafka的进程是否启动),先记录一下windows和linux简单查看进行的方法

windows:(通过搜索端口)

1)查看占用8080端口的进程号

netstat –aon | findstr “8080”

结果:TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 3500

可知,进程号为3500的进程占用了8080端口

可以使用命令 tasklist | findstr “3500”进一步查看3500进程的具体信息。

tasklist | findstr “3500”

结果:javaw.exe 3500 Console 0 28,792 K

可知3500进程为javaw.exe。

2)杀掉进程

tskill 3500

linux:ps aux | grep ‘zookeeper’
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: