ZK安装及kafka基本运行小结

来源:互联网 发布:php apache forbidden 编辑:程序博客网 时间:2024/06/13 17:54

ZK安装及kafka基本运行小结

Sec.1 安装前置

系统版本:Centos 6.5

用户:Cccola

ip:192.168.69.135

Java 配置

JDK 1.8.0_65~/.bash_profileexport JAVA_HOME=/home/Cccola/jdk1.8.0_65export PATH=$JAVA_HOME/binexport 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 logsdataLogDir=/home/Cccola/zookeeper-3.3.6/logs# set serverserver.1=localhost:4887:5887  

server.2 3可用于多机配置

3.启动Zookeeper
修改bin下执行权限

su rootchmod +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=0host.name=192.168.69.135zookeeper.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 timerg_getTime=""function getTime{    g_getTime=`date  '+%Y%m%d %H:%M:%S'`}#getTime && echo "[$g_getTime] [$0:$LINENO:$FUNCNAME] - "# set functionfunction 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提供的信息

0 0
原创粉丝点击