我已经为html" target="_blank">HDFS中的数据摄取开发了一个NiFi流原型。现在我想提高整体表现,但似乎我不能真正前进。对此,作者提出了建议
该流接收输入csv文件(每行有80个字段),在行级别拆分它们,对字段应用一些转换(使用4个顺序执行的自定义处理器),将新行缓冲到csv文件中,然后将它们输出到HDFS中。我以这样一种方式开发了处理器,即当读取每个记录并将其字段移动到flowfile属性时,只访问一次流文件的内容。已经在amazon EC2 M4.4xLarge实例(16核CPU、64 GB RAM)上执行了测试。
这是我目前所尝试的:
我能得到的最多是215K行/分钟,也就是35K行/秒。就体积而言,它只有4,7 Mb/s。我的目标肯定比这更伟大。作为比较,我创建了一个流,该流读取文件,将其拆分成行,将它们合并成块并输出到磁盘上。这里我得到12K行/秒,或17 Mb/s。看起来也不惊人的快,让我觉得我可能做错了什么。有人对如何提高表演有什么建议吗?在集群上运行NiFi而不是随着实例规范的增长,我会受益多少?谢谢大家
结果发现,性能差是开发的自定义处理器和合并内容内置处理器的结合。同样的问题反映在hortonworks社区论坛上,得到了有趣的反馈。
关于第一个问题,建议将supportsbatching
注释添加到处理器中。这允许处理器将几个提交批处理在一起,并允许NiFi用户从配置菜单中支持处理器执行的延迟或吞吐量。其他信息可以在这里的文档中找到。
另一个发现是MergeContent
内置处理器本身似乎没有最佳性能,因此如果可能,应该考虑修改流并避免合并阶段。
Node.js 调优 作为一门后端语言,肯定要求运行的效率最优化,以实现对于资源最小损耗,这一章正是围绕这个话题展开。调优是一个有挑战性的活儿,可能经常让人摸不着头脑,下面的内容尽量使用实例来带入一个个调优的场景。 11.1 准备工作 首先我们准备一个 http server 端代码,请求后返回一个二维码图片: var http = require('http'); var ccap = requ
对于某些工作负载,可以在通过在内存中缓存数据或者打开一些实验选项来提高性能。 在内存中缓存数据 Spark SQL可以通过调用sqlContext.cacheTable("tableName")方法来缓存使用柱状格式的表。然后,Spark将会仅仅浏览需要的列并且自动地压缩数据以减少内存的使用以及垃圾回收的 压力。你可以通过调用sqlContext.uncacheTable("tableName")
调整内存的使用以及Spark应用程序的垃圾回收行为已经在Spark优化指南中详细介绍。在这一节,我们重点介绍几个强烈推荐的自定义选项,它们可以 减少Spark Streaming应用程序垃圾回收的相关暂停,获得更稳定的批处理时间。 Default persistence level of DStreams:和RDDs不同的是,默认的持久化级别是序列化数据到内存中(DStream是StorageLe
集群中的Spark Streaming应用程序获得最好的性能需要一些调整。这章将介绍几个参数和配置,提高Spark Streaming应用程序的性能。你需要考虑两件事情: 高效地利用集群资源减少批数据的处理时间 设置正确的批容量(size),使数据的处理速度能够赶上数据的接收速度 减少批数据的执行时间 设置正确的批容量 内存调优
常用命令 1. 查看系统 CPU 总数 $ grep -c ^processor /proc/cpuinfo $ lscpu 2. 查看网卡信息,主机名 $ hostname $ ip addr show eth0 3. 查看系统上运行的服务 # systemctl list-units -t service | awk '$3=="active"' ** ** ** **
硬件因素 内存(RAM)的读写速度时普通 SSD 的 25 倍。MongoDB 中依赖 RAM 最多的操作包括:聚合、索引遍历、写操作、查询引擎、连接 Table 1. 常见存储的IOPS 类型 IOPS 7200 rpm SATA 75 - 100 15000 rpm SAS 175 - 210 SSD Intel X25-E(SLC) 5000 SSD Intel X25-M G2(MLC)