目录
Zookeeper 配置
配置
启动和验证
Kafka 配置
配置
启动和验证
Zookeeper 配置
Zookeeper为分布式协调组件,分布式协调技术主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源,防止造成"脏数据"的后果。
配置
直接解压Zookeeper压缩包/home/stream下,需要修改的配置文件在zk的conf目录下,复制zoo_sample.cfg 并改名:cp zoo_sample.cfg zoo.cfg,在zoo.cfg文件中的配置项如下:
注:原生的conf目录中没有zoo.cfg
Zoo.cfg的配置:
# the port at which the clients will connect
//zookeeper对外通信端口,默认不用修改
clientPort=2181
# The number of milliseconds of each tick
//Zookeeper服务器心跳时间,单位毫秒
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
//投票选举新leader的初始化时间
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
//Leader与Follower之间的最大响应时间单位,响应超过syncLimit*tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
//数据持久化目录,也保存有节点的ID信息,需要自己创建指定
dataDir=/home/xxxx/zookeeperxxxx/data
//日志保存路径,这个目录必须手工创建指定,否则启动报错。
dataLogDir=/home/xxx/zookeeper/logs
//Session超时时间限制,如果客户端设置的超时时间不在这个范围,那么会被强制设置为最大或最小时间。默认的Session超时时间是在2 *tickTime ~ 20 * tickTime这个范围
maxSessionTimeout=120000
# The number of snapshots to retain in dataDir
//这个参数和下面的参数搭配使用,这个参数指定了需要保留的文件数目。默认是保留3个。(No Java system property)New in 3.4.0
autopurge.snapRetainCount=2
# Purge task interval in hours
# Set to "0" to disable auto purge feature
//在上文中已经提到,3.4.0及之后版本,ZK提供了自动清理事务日志和快照文件的功能,这个参数指定了清理频率,单位是小时,需要配置一个1或更大的整数,默认是0,表示不开启自动清理功能,但可以运行bin/zkCleanup.sh来手动清理zk日志。
autopurge.purgeInterval=3
//配置zookeepe集群各节点之间通信和选举的端口,其中2888端口号是zookeeper服务之间通信的监听端口,而3888是zookeeper选举通信端口。server.N N代表这个节点的ID编号,需要用户手工指定各节点对应的编号,编号不能有重复;
server.1=namenode:2888:3888
server.2=datanode1:2888:3888
server.3=datanode2:2888:3888
配置集群节点编号myid
新建文件myid(在zoo.cfg配置的dataDir目录下,此处为/home/xxx/zookeeperxxx/data),使得myid中的值与server的编号相同,比如namenode上的myid:1;datanode1上的myid:2,以此类推;
配置log4j.properties:
在~/zookeeper/conf/路径下有log4j.properties文件,需要修改host及其他的log路径配置信息;
启动和验证
进入bin目录下,./zkServer.sh start启动服务;
运行./zkServer.sh status,查看各节点状态,其中1个节点是leader,其余是follower,也可以通过jps查看,多了一个QuorumPeerMain的进程。
./zkServer.sh stop停止服务,服务起不来请检查:
① 端口2181 2888 3888 被占用
② Ip和主机名没有加入/etc/hosts,配置里面配置了主机名
Kafka 配置
Kafka是分布式的高吞吐消息系统,其节点状态需要Zk维护;
配置
直接将Kafka的tar.gz包解压到/home/stream目录下。需要修改xxx/kafka/config/server.properties文件,修改的常用配置项有:
//Kafka机器的每个节点都是一个broker,这个配置本节点的broker编号ID,每个节点编号必须唯一。
//Kafka默认对外通信端口9092以及本机的IP地址,如果不指定hostname和port会使用当前主机,并使用默认的9092端口;
//Kafka 数据持久化目录,需要手工创建指定。
//Kafka集群数据保留周期,默认168小时,一般不推荐修改,可以通过命令修改单一topic的超时。
//配置指向的zookeeper集群。
delete.topic.enable | 默认false | 启用delete topic参数,建议设置为true。 |
//如果不开启true,那么当用命令删除topic的时候并不是真正的删除,而只是标记为marked for deletion
log.cleanup.policy = delete //默认
//日志清理策略 选择有:delete和compact 主要针对过期数据的处理,或是日志文件达到限制的额度,会被 topic创建时的指定参数覆盖
auto.leader.rebalance.enable =true //默认false
//是否自动平衡broker之间的分配策略
message.max.bytes =1000000 //默认
//消息体的最大大小,单位是字节。服务器可以接收到的最大的消息大小。注意此参数要和consumer的maximum.message.size大小一致,否则会因为生产者生产的消息太大导致消费者无法消费。
replica.fetch.max.bytes=1000000
//最好和上面保持一致
log.retention.check.interval.ms=5minutes //默认
//文件大小检查的周期时间,是否触发 log.cleanup.policy中设置的策略;
启动和验证
分别到各个主机的bin目录下,逐个启动服务:
cd /home/xxx/kafka_xxxx/bin;
后台启动服务:
nohup ./kafka-server-start.sh ../config/server.properties &
验证:
jps命令查看是否有kafka的进程,也可以使用zkCli.sh查看broker的状态是否注册,并创建topic测试;