解决:测试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),作为测试的文件数量。

image-20211213222530768

出现上面的原因是没有将虚拟内存管理关闭(虚拟后的运行内存是2.1*虚拟机的内存,但是centos7和jdk8 之间兼容有点问题,centos7会给应用留大量的资源),导致在测试HDFS写性能资源不足,关闭后直接使用的是物理内存

解决办法:yarn-site.xml中添加以下东西

<!--是否启动一个线程检查每一个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true,使用的是物理内存-->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>

最后的执行的结果为以下:

测试HDFS写性能:

image-20211213231238143

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处理的差值,越小越均衡

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐