贫农的大数据之二(Kafka)
来源:互联网 发布:用什么看网络电视好 编辑:程序博客网 时间:2024/05/21 14:59
Kafka集群部署
部署环境
实体机2台,CPU:4核,内存:8G,硬盘:SAS 600G RAID1,网卡:1000M。
ip分别为192.168.0.136,192.168.0.137。系统均为Centos 6.3
软件版本
SUN JDK 1.6
Zookeeper 3.4.5 ,这里我使用了3个节点的集群分别为:zkserver1,zkserver2,zkserver3
Kafka 0.7.2
安装过程
- 下载编译
tar xzf kafka-<VERSION>.tgzcd kafka-<VERSION>./sbt update./sbt package
- 配置,修改config/server.properties文件,需要修改的属性有:
brokerid - broker的id,每个broker唯一,136设置为1,137设置为2
hostname - 设置为本机的ip
num.threads - 设置为4
num.partitions - Kafka分区数,设置为3,决定了consumer和producer最大并发数
log.dir - 这是kafka持久化数据的目录,设置到SAS硬盘区
zk.connect - zkserver1:2181,zkserver2:2181,zkserver3:2181/kafka - 设置JVM
修改bin/kafka-run-class.sh,找到KAFKA_OPTS并修改如下java -server -Xms3072m -Xmx3072m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -Xloggc:logs/gc.log -Djava.awt.headless=true -Dcom.sun.management.jmxremote -classpath <long list of jars>
- 在zookeeper中创建znode,
create /kafka kafka_data
- 启动kafka服务器
#nohup bin/kafka-server-start.sh config/server.properties &
- 验证Kafka安装
发送测试数据bin/kafka-console-producer.sh --zookeeper zkserver1:2181,zkserver2:2181,zkserver3:2181/kafka --topic test
接收测试数据bin/kafka-console-consumer.sh --zookeeper zkserver1:2181,zkserver2:2181,zkserver3:2181/kafka --topic test --from-beginning
- 日志修改,当前版本的kafka使用log4j,所以修改config/log4j.properties即可
Kafka压力测试
测试kafka集群配置
测试中使用2台实体机与上面的不同,因为测试在生产环境部署之前做的,而且很遗憾当时没有测试下生产环境下的性能。
服务器具体配置如下是,cpu:E5507*1,内存:8G*2,硬盘:SCSI 500G
同时这2台加上同样配置的一台部署有zookeeper,每个使用3G内存
kafka JVM配置为: -Xms3072m -Xmx3072m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70
同时这2台加上同样配置的一台部署有zookeeper,每个使用3G内存
kafka JVM配置为: -Xms3072m -Xmx3072m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70
测试客户端程序为java编写,测试结果图中的X轴为时间,每5秒一次计算;Y轴为5秒内平均每秒发送的消息数
测试用例-1
Producer测试客户端服务器:1个,配置为4核CPU,6G内存
Producer线程数:20个
Producer实例数:20个,即每个线程一个Producer实例
Producer发送方式:同步发送
分别使用string和avro两种数据格式,每种数据格式分别测试30、50、100、150、200个字节的消息
Producer线程数:20个
Producer实例数:20个,即每个线程一个Producer实例
Producer发送方式:同步发送
分别使用string和avro两种数据格式,每种数据格式分别测试30、50、100、150、200个字节的消息
从图中可以看出string-200B的吞吐量可以达到40MByte/Second
测试用例-2
与测试用例1相比,增加一个客户端进行测试
Kafka节点数:2个
Producer测试客户端服务器:2个
Producer线程数/客户端:20个
Producer实例数/客户端:20个,即每个线程一个
Producer发送方式:同步发送
分别使用string和avro两种数据格式,每种数据格式分别测试30、50、100、150、200个字节的消息
Producer测试客户端服务器:2个
Producer线程数/客户端:20个
Producer实例数/客户端:20个,即每个线程一个
Producer发送方式:同步发送
分别使用string和avro两种数据格式,每种数据格式分别测试30、50、100、150、200个字节的消息
测试结果与测试用例1差不多,可见增加客户端已经没有意义
测试用例-3
与测试用例1相比,减少一个kafka服务器
Kafka节点数:1个
Producer测试客户端服务器:1个
Producer线程数:20个
Producer实例数:20个,即每个线程一个
Producer发送方式:同步发送
仅仅使用avro这一种数据格式,分别测试30、50、100、150、200个字节的消息
Producer测试客户端服务器:1个
Producer线程数:20个
Producer实例数:20个,即每个线程一个
Producer发送方式:同步发送
仅仅使用avro这一种数据格式,分别测试30、50、100、150、200个字节的消息
图中是测试环境下一个Kafka与两个Kafka的对比测试,其中xxx-one的表示使用一个kafka,xxx-two的表示使用两个kafka
从图中可以看到平均两个Kafka服务器比一个服务器有50K的增长,性能大概提升30%-40%。在一个
Kafka节点情况下,吞吐量能达到 30MB/sec,比官方的50MB/sec有差距。但是考虑到官方服务器配置和官方使用异步+batch方式测试,这个数值还是可以接受
的。也能够满足我们的场景。下图为官方的测试结果供参考
Kafka节点情况下,吞吐量能达到 30MB/sec,比官方的50MB/sec有差距。但是考虑到官方服务器配置和官方使用异步+batch方式测试,这个数值还是可以接受
的。也能够满足我们的场景。下图为官方的测试结果供参考
测试用例-4
与测试用例1相比,多线程共用一个Producer实例
与测试用例1相比,多线程共用一个Producer实例
Kafka节点数:2个
Producer测试客户端服务器:3个
Producer线程数:20个
Producer实例数:1个,即所有线程共享一个实例
Producer发送方式:同步发送
仅仅使用String这一种数据格式,这样排除自定义的avro序列化影响,测试100个字节的消息
Producer测试客户端服务器:3个
Producer线程数:20个
Producer实例数:1个,即所有线程共享一个实例
Producer发送方式:同步发送
仅仅使用String这一种数据格式,这样排除自定义的avro序列化影响,测试100个字节的消息
测试结果:每个客户端的平均每秒发送78000左右的消息,这个与多线程多Producer实例的性能有很大差别,很明显!不过对服务器端无任何影响,3台测试端也能够使服务器吞吐量达到最大。
所以Producer的单态模式对客户端性能有影响,但是反过来说对于web服务器这个性能还是足够了,所以实际实现时不用刻意追求,除非要求
单台客户端性能最大化。
所以Producer的单态模式对客户端性能有影响,但是反过来说对于web服务器这个性能还是足够了,所以实际实现时不用刻意追求,除非要求
单台客户端性能最大化。
0 0
- 贫农的大数据之二(Kafka)
- 贫农的大数据之三(Storm集群部署)
- 贫农的大数据之四(Storm简介及开发)
- 贫农的大数据之五(Hadoop集群部署)
- 贫农的大数据之一(设计篇)
- 大数据分析的技术栈(二)-Apache Kafka
- 大数据技术之Kafka是什么
- 大数据系列之Kafka安装
- 大数据系列之kafka-java实现
- 大数据协作框架之kafka
- Apache Kafka:大数据的实时处理时代
- Apache Kafka:大数据的实时处理时代
- 大数据Kafka
- 大数据生态系统基础:Apache Kafka基础(二):最新kafka编程入门:Producer API
- kafka源码解析之二kafka内部的专业术语
- 大数据系列之kafka监控kafkaoffsetmonitor安装
- 大数据学习之——kafka安装部署
- kafka的线程模型之二
- iOS应用程序状态切换相关
- hdu1100
- MIPI DSI协议介绍
- sstab 保存后的读取问题
- NSURLConnection实现HTTPS(SSL)链接请求
- 贫农的大数据之二(Kafka)
- myeclipse中java代码注释模板问题
- UIView动画(过渡效果)的学习笔记
- 如何快速查找电脑中的文件
- Windows 下 web.py上传图片乱码的解决办法
- LeetCode刷题笔录 Binary Tree Zigzag Level Order Traversal
- 打包和压缩及常见解压缩方法
- 多媒体之音频audio帖子汇总
- 2104腾讯暑期实习offer之路(技术类面经)