java系列之zokeeper与kafka安装使用

最近正在搞元数据架构,学了一下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’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值