一、单机zookeeper安装

参考链接:http://jingyan.baidu.com/article/456c463b60bd380a5931446f.html

1. 首先,服务器需要先安装好JDK。

2. 下载zookeeper-3.4.6.tar.gz文件,并使用FileZila软件将zookeeper-3.4.6.tar.gz上传到服务器的/opt目录下。也可以先传到/home/bjtu(用户目录)/Documents目录下,然后进入该目录,执行以下命令:sudo cp zookeeper-3.4.6.tar.gz /opt。将zookeeper复制到/opt目录下。

3. 进入/opt目录,解压文件:sudo tar zxvf zookeeper-3.4.6.tar.gz

4. 修改解压后的文件名:mv zookeeper-3.4.6.tar.gz zookeeper

5. 进入zookeeper目录:cd zookeeper

6. 输入命令pwd,输出zookeeper放置的路径(这很重要,在之后修改配置文件时需要用到)

7. 进入zookeeper配置文件夹:cd conf

8. 复制zoo_sample文件,粘贴为zoo.cfg。命令:cp zoo_sample zoo.cfg

9. 修改配置文件:vi zoo.cfg(按i就是开始insert,按esc推出编辑,:wq保存修改)

```

tickTime=2000

clientPort=2181

data=/opt/zookeeper/data

```

注意这里的data路径是在刚才解压的文件夹zookeeper下的,即=以上pwd输出的路径/data。data中会存放一个zookeeper.server.pid是启动zookeeper服务后自动生成的,里面存放的是zookeeper启动的进程号,zookeeper服务停止时zookeeper.server.pid会删除,可以输入命令ps -A查看服务器全部进程。

10. 保存修改:wq(如果不让修改,用命令ll查看文件权限,如果是root权限,则命令su修改为root权限)

11. 设置环境变量:export ZOOKEEPER_INSTALL=/opt/zookeeper(即zookeeper存放路径)

. 修改环境变量,将ZOOKEEPER_INSTALL的路径添加到PATH中:

```bash

export PATH=$SPATH:$PATH:$ZOOKEEPER_INSTALL/bin

```

注意:以上是修改环境变量,ubuntu下所有软件环境变量都在 /etc/bash.bashrc & profile 文件中。

2. 退出conf目录,进入bin目录,运行./zkServer start启动zookeeper:

```bash

bjtu@bjtu-2:~/opt/zookeeper/bin$ sudo ./zkServer.sh start

[sudo] password for bjtu:

JMX enabled by default

Using config: /home/bjtu/opt/zookeeper/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED

```

3. 进入zookeeper/data目录查看zookeeper.server.pid文件中的进程号与ps -A全部进程中java进程号是否一致(zookeeper显示的是java进程),如果不一致可以通过杀java进程,删除zookeeper.server.pid文件,再重启zookeeper服务(./zkServer start)直至进程一致。

4. 在bin目录下运行./zkServer status输出zookeeper状态:

```bash

bjtu@bjtu-2:~/opt/zookeeper/bin$ sudo ./zkServer.sh status

JMX enabled by default

Using config: /home/bjtu/opt/zookeeper/bin/../conf/zoo.cfg

Mode: standalone

```

5. 如果报错not running,有两种可能,一是zoo.cfg配置不正确,可以通过bin目录下的zookeeper.out定位错误原因。二是zookeeper进程不一致导致的。如果zookeeper服务不停止,进程一直都在,再下次重启zookeeper服务时,又产生新的进程号,进程号不一致,就会出现问题。

6. 用命令ps -aux | grep 'zookeeper'查看zookeeper是否启动成功。

. 关闭zookeeper服务

要关闭zookeeper服务,请在命令行中输入以下命令:

```bash

bjtu@bjtu-2:~/opt/zookeeper/bin$ sudo ./zkServer.sh stop

```

2. 安装zookeeper

安装zookeeper时,只需修改zoo.cfg文件和新增环境变量。具体操作如下:

(1)设置ZOOKEEPER_INSTALL环境变量,指向zookeeper的存放路径:

```bash

export ZOOKEEPER_INSTALL=/opt/zookeeper

```

(2)确保zoo.cfg文件中的data配置项指向正确的路径,即zookeeper目录下的data文件夹:

```bash

zoo.cfg中配的data=/opt/zookeeper/data

```

(3)启动zookeeper服务:

```bash

./zkServer.sh start

```

如果启动成功,可以通过运行以下命令检查服务状态:

```bash

./zkServer.sh status

```

如果返回的结果是"not running",可能有以下两种原因:

1)zoo.cfg配置不正确。可以通过查看bin目录下的zookeeper.out文件来定位错误原因。

2)zookeeper进程不一致导致的。这种情况下,需要先杀掉java进程,删除zookeeper.server.pid文件(该文件是在启动zookeeper服务后自动生成的,里面存放的是zookeeper启动的进程号),然后重新启动zookeeper服务(./zkServer start),直至进程一致。

. 首先,将kafka_2.10-0.8.2.0.tgz复制到/opt目录下:

```

sudo cp kafka_2.10-0.8.2.0.tgz /opt

```

4. 进入解压后的文件所在目录,并解压文件:

```

cd /opt

sudo tar zxvf kafka_2.10-0.8.2.0.tgz

```

5. 修改解压后的文件名,并将原文件重命名为kafka:

```

mv kafka_2.10-0.8.2.0.tgz kafka

```

6. 进入kafka/config目录,修改server.properties文件(使用vi编辑器):

```

cd kafka

vi server.properties

```

在打开的文件中输入以下内容:

```

broker.id=2

host.name=192.168.1.102

port=9092

log.dirs=/tmp/kafka-logs

zookeeper.connect=192.168.1.102:2181(只安装了一个zookeeper服务)

zookeeper.connection.timeout.ms=6000

```

输入 `:wq` 保存修改。

7. 从kafka/bin目录下启动zookeeper服务:

```

./zookeeper-server-start.sh ../config/zookeeper.properties

``` 注:确保之前安装的zookeeper服务已经关闭,否则会报错。

8. 新建一个连接服务器的窗口,从/opt/kafka目录下启动kafka服务:

```

bin/kafka-server-start.sh config/server.properties

```

9. 再新建一个连接服务器的窗口,在kafka/bin目录下创建topic:

```

./kafka-topics.sh --create --zookeeper 192.168.1.101:2181 --replication-factor 1 --partitions 1 --topic test

```

10. 在kafka/bin目录下查看topic信息:

```

./kafka-topics.sh --describe --zookeeper 192.168.1.101:2181 --topic test

```

11. 在kafka/bin目录下启动生产者(producer)生产该Topic的消息:

请根据提供的内容完成内容重构,并保持段落结构:

1. 启动生产者终端:

```

./kafka-console-producer.sh --broker-list 192.168.1.101:9092 --topic test

```

返回warn,正常,输入任何消息,在另起的consumer终端能即时接收,看见。

2. 新建一个连接服务器的窗口,kafka/bin目录下启动消费者(consumer)消费该topic消息:

```

./kafka-console-consumer.sh --zookeeper 192.168.1.101:2181 --from-beginning -topic test

```

注:启动四个控制台,一个zookeeper,一个kafka 一个生产者,一个消费者。

--------------------------------------------

遇到的问题,以及解决方法

1、之前安装的zookeepr,开启的zookeeper服务一定要关闭。否者在kafka目录下启动zookeeper服务会报错。

2、启动kafka服务时,有些文件的权限是root需要修改用户权限,根据错误提示修改,

```

sudo chown bjtu:bjtu 文件名;sudo chmod 777 文件名

```

3、新建的topic,需要在此topic下收发消息,必须是在当前broker,如果修改了broker.id,topic失效,需要重新建topic。

以下是搭建 ZooKeeper 伪集群的一般步骤:

1. 准备工作:安装了 Java 运行环境(JRE 或 JDK),确保版本符合 ZooKeeper 的兼容性要求。下载并解压 ZooKeeper。

2. 配置 ZooKeeper:在 zoo.cfg 文件中设置服务器ID、数据目录等参数,然后启动 ZooKeeper。

3. 配置伪集群:在每个 ZooKeeper 节点上创建一个名为 myid 的文件,内容为 1、2 或 3,其中数字表示该节点的服务器ID。然后启动每个 ZooKeeper 节点。

4. 查看状态是否启动成功:使用 zkServer.sh status 命令查看每个 ZooKeeper 节点的状态。

如果遇到问题,可以参考以下链接中的内容: