一、单机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 节点的状态。
如果遇到问题,可以参考以下链接中的内容: