java系列之zokeeper与kafka安装使用

来源:互联网 发布:股票模拟练习软件 编辑:程序博客网 时间:2024/05/15 07:35
最近正在搞元数据架构,学了一下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-kafkahttp://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’

0 0
原创粉丝点击