前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(九)回顾

(九)回顾

作者头像
wolf
发布2020-10-28 14:07:30
5680
发布2020-10-28 14:07:30
举报
文章被收录于专栏:大数据分享大数据分享
kafka压力测试

1.生产者压力测试 [shsxt@hadoop002 kafka]$ bin/kafka-producer-perf-test.sh --topic test --record-size 100 --num-records 100000 --throughput -1 --producer-props bootstrap.servers=hadoop002:9092,hadoop003:9092,hadoop004:9092 100000 records sent, 31486.146096 records/sec (3.00 MB/sec), 1374.63 ms avg latency, 1699.00 ms max latency, 1469 ms 50th, 1666 ms 95th, 1694 ms 99th, 1698 ms 99.9th.

2.消费者压力测试 [shsxt@hadoop002 kafka]$ bin/kafka-consumer-perf-test.sh --zookeeper hadoop002:2181 --topic test --fetch-size 10000 --messages 10000000 --threads 1 start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec 2020-10-20 13:41:44:731, 2020-10-20 13:41:51:215, 9.5367, 1.4708, 100000, 15422.5787 PS:正常的集群应该达到100M/sec以上

kafka机器数量计算

Kafka机器数量(经验公式)=2(峰值生产速度副本数/100)+1 先拿到峰值生产速度,再根据设定的副本数,就能预估出需要部署Kafka的数量。 比如我们的峰值生产速度是50M/s。副本数为2。 Kafka机器数量=2(502/100)+ 1=3台(20台以内的服务器,速率在50M/s以下的,配置3台kafka即可) 这是一个不断迭代的过程,配一下、测一下,最终确定合适的台数。

HDFS参数调优hdfs-site.xml

dfs.namenode.handler.count=20 * log2(Cluster Size),比如集群规模为8台时,此参数设置为60(集群为6台时,参数可设置为50左右) The number of Namenode RPC server threads that listen to requests from clients. If dfs.namenode.servicerpc-address is not configured then Namenode RPC server threads listen to requests from all nodes. NameNode有一个工作线程池,用来处理不同DataNode的并发心跳以及客户端并发的元数据操作。对于大集群或者有大量客户端的集群来说,通常需要增大参数dfs.namenode.handler.count的默认值10。设置该值的一般原则是将其设置为集群大小的自然对数乘以20,即20logN,N为集群大小。

YARN参数调优yarn-site.xml

(1)情景描述:总共7台机器,每天几亿条数据,数据源->Flume->Kafka->HDFS->Hive 面临问题:数据统计主要用HiveSQL,没有数据倾斜,小文件已经做了合并处理,开启的JVM重用,而且IO没有阻塞,内存用了不到50%。但是还是跑的非常慢,而且数据量洪峰过来时,整个集群都会宕掉。基于这种情况有没有优化方案。 (2)解决办法: 内存利用率不够。这个一般是Yarn的2个配置造成的,单个任务可以申请的最大内存大小,和Hadoop单个节点可用内存大小。调节这两个参数能提高系统内存的利用率。 (a)yarn.nodemanager.resource.memory-mb 表示该节点上YARN可使用的物理内存总量,默认是8192(MB),注意,如果你的节点内存资源不够8GB,则需要调减小这个值,而YARN不会智能的探测节点的物理内存总量。 (b)yarn.scheduler.maximum-allocation-mb 单个任务可申请的最多物理内存量,默认是8192(MB)。

NodeManager 8G =>要根据服务器实际内存配置: 单个任务默认内存也是8G(WordCount操作) 任务中有很多的MapTask和ReduceTask,假如数据是128M,则默认MT和RT为1G内存 如果是1G的数据量,MT内存设为8G(相应*8)+(RT=2G),一共是10G (看map的聚合压缩情况,调整RT的内存大小)

Hadoop宕机

(1)如果MR造成系统宕机。此时要控制Yarn同时运行的任务数,和每个任务申请的最大内存。调整参数:yarn.scheduler.maximum-allocation-mb(单个任务可申请的最多物理内存量,默认是8192MB) (2)如果写入文件过量造成NameNode宕机。那么调高Kafka的存储大小,控制从Kafka到HDFS的写入速度。高峰期的时候用Kafka进行缓存,高峰期过去数据同步会自动跟上。

以及脚本的写入和执行

说明1: java -classpath 需要在jar包后面指定全类名; java -jar 需要查看一下解压的jar包META-INF/ MANIFEST.MF文件中,Main-Class是否有全类名。如果有可以用java -jar,如果没有就需要用到java -classpath 说明2:/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。(可以将一些无用的日志丢入进去)

flume集成kafka,设置上拦截器 1.实现接口

2.重写4个方法(初始化、单event、双event、close关闭资源) event能获取到 body 和 header ETL => body => 主要判断的就是 json数据 是否以 { 开头、以 } 结尾,还有服务器时间(长度13,全部是数字) 分类型拦截器 => body header => 根据body区分start或event类型,再把相应数据添加到头里面 topic,start_topic/event_topic

3.静态内部类Builder new 对象

4.打包上传集群

PS:kafka的blockId必须不能重复

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • kafka压力测试
  • kafka机器数量计算
  • HDFS参数调优hdfs-site.xml
  • YARN参数调优yarn-site.xml
  • Hadoop宕机
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档