ZK安装及kafka基本运行小结
Sec.1 安装前置
系统版本:Centos 6.5
用户:Cccola
ip:192.168.69.135
Java 配置
JDK 1.8.0_65
~/.bash_profile
export JAVA_HOME=/home/Cccola/jdk1.8.0_65
export PATH=$JAVA_HOME/bin
export CLASSPATH=,:$JAVA_HOME/lib/dt.jar:%JAVA_HOME/lib/tools.jar
Sec.2 安装Zookeeper
版本:Zookeeper3.4.6
1.解压ZK
2.ZK单机版配置
conf/zoo.cfg
# set data directory where the snapshot is stored.
dataDir=/home/Cccola/zookeeper-3.3.6/data
# set logs
dataLogDir=/home/Cccola/zookeeper-3.3.6/logs
# set server
server.1=localhost:4887:5887
server.2 3可用于多机配置
3.启动Zookeeper
修改bin下执行权限
su root
chmod +x bin/*
启动命令
bin/zkServer.sh start
查看运行状态参数 status
关闭参数 stop
重启参数 restart
本机启动Linux下客户端
bin/zkCli.sh -sever 192.168.69.135
Sec.3 kafka初探
3.1安装与配置
kafka版本:2.9.2-0.8.1.1
配置文件 conf/server.properties
broker.id=0
host.name=192.168.69.135
zookeeper.connect=192.168.69.135:2181
kafka运行
sbin/startkafka.sh
检查是否运行成功
Sec.4 kafka运行机制及初次尝试运行
kafak的运行方式包括如下模块
Producer:向kafka发送消息的客户端。
Consumer:从kafka获取消息的客户端。
Topic:消息队列。
Broker:一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic。
Partition:为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上。kafka只保证按一个partition中的顺序将消息发给consumer,不保证一个topic的整体(多个partition间)的顺序。
4.1建立Topic及P&C通信
建立topic
bin/kafka-topic.sh --create --zookeeper 192.168.69.135:2181 --replication-factor 1 --partition 1 --topic topic-name
/*参数解释:
--replication 副本
--partition 创建分区数目
--topic 话题名
*/
建立producer在Topic中的客户端
bin/kafka-console-producer --broker-list 192.168.69.135:9092 --topic topic-name
建立consumer在Topic中的客户端
bin/kafka-console-producer --zookeeper 192.168.69.135:2181 --topic topic-name
建立成功后可以在producer的命令行中输入消息,在consumer中可以显示producer发出的消息
4.2 Producer中运行shell脚本
实现思想:通过linux管道将脚本运行的结果导入Topic中,在consumer中便可以进行处理
示例:
shelllogger.sh
#!/bin/sh
# start cmd:
# nohup sh shellcrawler.sh >> shellcrawler.log 2>&1 &
# set timer
g_getTime=""
function getTime
{
g_getTime=`date '+%Y%m%d %H:%M:%S'`
}
#getTime && echo "[$g_getTime] [$0:$LINENO:$FUNCNAME] - "
# set function
function crawler
{
int=1
while(( $int<=1000000000 ))
do
log="INSERT INTO test(user,content) VALUES('Cccola.w','hello world');"
let "int++"
echo $log >> access.log
sleep 1s
#usleep 1000
done
}
# main
crawler
启动脚本生成文件 access.log
nohup sh shelllogger.sh &
在producer端将access.log导入Topic
nohup tail -f /home/Cccola/storm/access.log | bin/kafka-console-producer.sh --broker-list 192.168.69.135:9092 --topic topic-name >logs/producer.log 2>&1 &
在consumer端便可接收到producer提供的信息