上节安装了flume, 下面要安装kafka, 安装kafka之前要安装zookeeper.
zookeeper安装
下载zookeeper-3.4.5后解压,我放到/usr/soft目录下
修改/etc/environment
ZOOKEEPER_HOME=/usr/soft/zookeeper-3.4.5
PATH=”…:/usr/soft/zookeeper-3.4.5/bin:…”
source /etc/environment
修改配置文件
先复制一份zoo_sample.cfg
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
主要是添加下面几项
dataDir=/usr/soft/hlf/zookeeper/data 元数据目录要事先创建
dataLogDir=/usr/soft/hlf/zookeeper/log 日志数据目录要事先创建
server.1=s1:2888:3888 集群信息,一般只要改
1和
s1添加myid
在dataDir目录下创建myid文件, 并且把上面的
1
写入就可以了。测试zookeeper能否启动
由于机器限制这里只做了一台zookeeper.
hlf@s1:/usr/soft/zookeeper-3.4.5$ bin/zkServer.sh start
提示
Starting zookeeper … STARTED
查看jps
3181 QuorumPeerMain
说明进程已启动, 这时要查看其状态
hlf@s1:/usr/soft/zookeeper-3.4.5$ bin/zkServer.sh status
显示
JMX enabled by default
Using config: /usr/soft/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: standalone
说明已经启动成功。
kafka安装
下载kafka_2.10-0.10.0.1.tgz, 这里要注意选择与你机子上安装的scala的版本号一致才行。
解压 tar -zxvf kafka_2.10-0.10.0.1.tgz, 为了方便我把解压后的文件夹名字改成kafka
(可以不看,没用到)为了可以在后台运行,下载slf4j-1.7.21, 之后解压把slf4j-nop-1.7.21.jar这个jar拷贝到kafkar的libs里
编辑config/server.properties文件
主要下面两项
broker.id=0
zookeeper.connect=s1:2181
我这里只用一台做练习,就只配了一台的zookeeper.connect
测试
a. 启动kafka
hlf@s1:/usr/soft/kafka/bin$ ./kafka-server-start.sh ../config/server.properties &
用jps显示进程名就是Kafka
b. 创建一个topic
hlf@s1:/usr/soft/kafka$ bin/kafka-topics.sh --create --zookeeper s1:2181 --replication-factor 1 --partitions 1 --topic test 最后一行显示 Created topic "test". 也可以用下面的查看 hlf@s1:/usr/soft/kafka$ bin/kafka-topics.sh --describe --zookeeper s1:2181 --topic test
c. 创建一个Producer端
这里是直接用console在控制台输入数据,输出数据 hlf@s1:/usr/soft/kafka$ bin/kafka-console-producer.sh --broker-list s1:9092 --topic test
d. 创建一个Consumer端
hlf@s1:/usr/soft/kafka$ bin/kafka-console-consumer.sh --zookeeper s1:2181 --topic test --from-beginning
e. 之后在 Producer端输入数据马上就可以在Consumer端显示出来了。
server.properties参数
#此Broker的ID,集群中每个Broker的ID不可相同
broker.id=0
#监听器,端口号与port一致即可
listeners=PLAINTEXT://:9092
#Broker监听的端口
port=9092
#Broker的Hostname,填主机IP即可
host.name=10.0.0.100 (要写具体的IP)
#向Producer和Consumer建议连接的Hostname和port
advertised.host.name=10.0.0.100 (要写具体的IP)
advertised.port=9092
#进行IO的线程数,应大于主机磁盘数
num.io.threads=8
#消息文件存储的路径
log.dirs=/data/kafka-logs
#消息文件清理周期,即清理x小时前的消息记录
log.retention.hours=168
#每个Topic默认的分区数,一般在创建Topic时都会指定分区数,所以这个配成1就行了
num.partitions=1
#Zookeeper连接串,此处填写上一节中安装的三个zk节点的ip和端口即可
zookeeper.connect=10.0.0.100:2181,10.0.0.101:2181,10.0.0.102:2181
遇到的问题
安装zookeeper时候,可以查看进程启动,但是状态显示报错
安装zookeeper-3.3.2的时候,启动正常没报错,但zkServer.sh status查看状态的时候却出现错误,如下:
JMX enabled by default
Using config: /hadoop/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
jps查看进程,却发现进程已启动
7313 QuorumPeerMain
听网上说的,去检查myid,发现没问题,还听网上的说把那里面的所有文件都删除再重建也没用,再去看有没有建立主机和ip之间的映射关系。 vim /etc/hosts 结果-_-!
网上也有人说这个异常可以忽略,原因是还有节点没有启动zookeeper,全部启动之后,自然就不会出异常了。从这我想到自己的情况
在我这里的情况是:
因为我的conf/zoo.cfg下面配置了四台机器作zookeeper,其实我只用了一台,是standalone模式,另外三台机子没启动,所以会有这个错误,
在standalone模式下要把zoo.cfg中的不启动的配置删掉,再启动就可以了。
显示如下
JMX enabled by default
Using config: /usr/soft/zookeeper-3.4.5/bin/../conf/zoo.cfg
Mode: standalone
也就OK了。