1部署zookeeper
ZooKeeper的安装模式分为三种,分别为:单机模式(stand-alone)、集群模式和集群伪分布模式。
1、运行环境:ZooKeeper 要求 JAVA 6 以上的环境才能运行,并对JAVA 环境变量进行设置。
java安装路径最好不要包含空格
2、下载:从Apache官方网站下载一个ZooKeeper 的最近稳定版本(http://hadoop.apache.org/zookeeper/releases.html )。
作为国内用户来说,选择最近的的源文件服务器所在地,能够节省不少的时间:http://labs.renren.com/apache-mirror//hadoop/zookeeper/
我下载了zookeeper-3.4.12.tar.gz
3、解压:得到zookeeper-3.4.12
4、配置:
ZooKeeper 服务器包含在单个 JAR 文件中,安装此服务需要用户创建一个配置文档,并对其进行设置。
- zookeeper-3.4.12/conf下有zoo_sample.cfg,复制1份,可重命名为zoo.cfg
- 打开zoo.cfg 修改如下:
#基本事件单元,以毫秒为单位。它用来指示心跳,最小的 session 过期时间为两倍的 tickTime
tickTime=2000 #存储内存中数据库快照的位置,如果不设置参数,更新事务日志将被存储到默认位置 dataDir=E:zookeeper-3.4.12data #监听客户端连接的端口 clientPort=2181使用单机模式时用户需要注意:这种配置方式下没有 ZooKeeper 副本,所以如果 ZooKeeper 服务器出现故障, ZooKeeper 服务将会停止。
5、集群模式:
为了获得可靠的 ZooKeeper 服务,用户应该在一个集群上部署 ZooKeeper 。只要集群上大多数的ZooKeeper 服务启动了,那么总的 ZooKeeper 服务将是可用的。另外,最好使用奇数台机器。 如果 zookeeper拥有 5 台机器,那么它就能处理 2 台机器的故障了。
每台机器上 conf/zoo.cfg 配置文件的参数设置参考:
tickTime=2000 dataDir=D:datazookeeper clientPort=2181 initLimit=5 syncLimit=2 server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
“ server.id=host:port:port. ”指示了不同的 ZooKeeper 服务器的自身标识,作为集群的一部分的机器应该知道 ensemble 中的其它机器。用户可以从“ server.id=host:port:port. ”中读取相关的信息。 在服务器的 data( dataDir 参数所指定的目录)目录下创建一个文件名为 myid 的文件,这个文件中仅含有一行的内容,指定的是自身的 id 值。比如,服务器“ 1 ”应该在 myid 文件中写入“ 1 ”。这个 id 值必须是 ensemble 中唯一的,且大小在 1 到 255 之间。这一行配置中,第一个端口( port )是从( follower )机器连接到主( leader )机器的端口,第二个端口是用来进行 leader 选举的端口。在这个例子中,每台机器使用三个端口,分别是: clientPort ,2181 ; port , 2888 ; port , 3888 。
6、集群伪分布
在单机下模拟集群的ZooKeeper服务
在 zookeeper 配置文档中, clientPort参数用来设置客户端连接 zookeeper 的端口。
server.1=IP1:2887:3887 中,
IP1 指示的是组成 ZooKeeper 服务的机器 IP 地址,
2887 为用来进行 leader 选举的端口,
3887 为组成 ZooKeeper 服务的机器之间通信的端口。
集群伪分布模式我们使用每个配置文档模拟一台机器,也就是说,需要在单台机器上运行多个 zookeeper 实例。
但是,我们必须要保证各个配置文档的 clientPort 不能冲突。
下面是我们所配置的集群伪分布模式,通过 zoo1.cfg , zoo2.cfg , zoo3.cfg 模拟了三台机器的 ZooKeeper集群。
zoo1.cfg:
tickTime=2000
initLimit=10 syncLimit=5
#注意路径格式
dataDir=E:/zookeeper-3.4.12/data/1 clientPort=2181 server.1=localhost:2887:3887 server.2=localhost:2888:3888 server.3=localhost:2889:3889
zoo2.cfg:
tickTime=2000 initLimit=10 syncLimit=5dataDir=E:/zookeeper-3.4.12/data/2 clientPort=2182 server.1=localhost:2887:3887 server.2=localhost:2888:3888 server.3=localhost:2889:3889
zoo3.cfg:
tickTime=2000 initLimit=10 syncLimit=5dataDir=E:/zookeeper-3.4.12/data/3 clientPort=2183 server.1=localhost:2887:3887 server.2=localhost:2888:3888 server.3=localhost:2889:3889
E:zookeeper-3.4.12data1myid、2myid、3myid中写对应得数字:1、2、3即可
启动配置:zkServer.cmd同样复制三份:zkServer-1.cmd、zkServer-2.cmd、zkServer-3.cmd
在每份配置中增加对应的配置文件:
set ZOOCFG=..confzoo1.cfg
set ZOOCFG=..confzoo2.cfg
set ZOOCFG=..confzoo3.cfg
@echo off REM Licensed to the Apache Software Foundation (ASF) under one or more REM contributor license agreements. See the NOTICE file distributed with REM this work for additional information regarding copyright ownership. REM The ASF licenses this file to You under the Apache License, Version 2.0 REM (the "License"); you may not use this file except in compliance with REM the License. You may obtain a copy of the License at REM REM http://www.apache.org/licenses/LICENSE-2.0 REM REM Unless required by applicable law or agreed to in writing, software REM distributed under the License is distributed on an "AS IS" BASIS, REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. REM See the License for the specific language governing permissions and REM limitations under the License. setlocal call "%~dp0zkEnv.cmd" set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain set ZOOCFG=..confzoo1.cfg echo on call %JAVA% "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" -cp "%CLASSPATH%" %ZOOMAIN% "%ZOOCFG%" %* endlocal
7、启动:
运行:E:zookeeper-3.4.12inzkServer.cmd
伪集群则运行三个:zkServer-1.cmd、zkServer-2.cmd、zkServer-3.cmd
8、可以为zookeeper添加环境变量:
ZOOKEEPER_HOME: D:zookeeper-3.4.8
Path: 在现有的值后面添加 ;%ZOOKEEPER_HOME%in;
9、运行过程遇到的问题:
dataDir路径配置错误,导致启动失败,报文件找不到,
应该是linux路径写法:E:/zookeeper-3.4.12/data/1 而不是
E:zookeeper-3.4.12data1
2 安装运行kafka
1 下载安装文件: http://kafka.apache.org/downloads.html
2 解压文件(本文解压得到 E:kafka_2.11-1.1.0)
3 打开E:kafka_2.11-1.1.0configserver.properties
4 把 log.dirs的值改成 log.dirs=E:kafka_2.11-1.1.0datalogskafka
5 E:kafka_2.11-1.1.0in文件夹下的.sh命令脚本是在shell下运行的,此文件夹下还有个 windows文件夹,里面是windows下运行的.bat命令脚本
6 在E:kafka_2.11-1.1.0文件夹中”Shift+鼠标右键”点击空白处打开命令提示窗口
7 输入并执行一下命令以打开kafka:
.inwindowskafka-server-start.bat .configserver.properties
启动报错:
解决方案:E:kafka_2.11-1.1.0inwindowskafka-run-class.bat,找到:
rem JVM performance options IF ["%KAFKA_JVM_PERFORMANCE_OPTS%"] EQU [""] ( set KAFKA_JVM_PERFORMANCE_OPTS=-server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true )
去掉
-XX:+UseG1GC