解决:测试HDFS读写性能时出现错误
今天测试HDFS的读写性能出现以下错误
java.lang.IllegalArgumentException:Unsupported ByteMultiple M
测试HDFS写执行的命令:
hadoop jar hadoop-mapreduce-client-jobclient-3.1.3-tests.jar TestDFSIO -write -nrFiles 2 -fileSize 128MB
我有三个集群,每台虚拟机只有1核,故集群一共只有3核,因此在-nrFiles 的数量为2(核-1),作为测试的文件数量。
出现上面的原因是没有将虚拟内存管理关闭(虚拟后的运行内存是2.1*虚拟机的内存,但是centos7和jdk8 之间兼容有点问题,centos7会给应用留大量的资源),导致在测试HDFS写性能资源不足,关闭后直接使用的是物理内存。
解决办法:yarn-site.xml中添加以下东西
<!--是否启动一个线程检查每一个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true,使用的是物理内存-->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
最后的执行的结果为以下:
测试HDFS写性能:
Number of files:生产文件数量,也是mapTask的数量,一般都是(核数-1)
Total MBytes processed:单个map处理的文件大小
Troughput mb/sec:当个mapTask的吞吐量
计算方式:所有数据量累加/总时间
Average IO rate mb/sec:平均mapTask的吞吐量
计算方法:(每一个mapTask平均速度之后)/Number of files
IO rate std deviation:方差、反应各个mapTask处理的差值,越小越均衡
|