您可以通过调整core-site.xml配置、TestDFSIO配置或避免使用小文件来优化集群性能。
调整core-site.xml配置
在测试集群吞吐性能之前建议在core-site.xml文件中增加或修改如下配置,同步到所有依赖hadoop-common的节点上并重启集群服务。
<property>
<name>alidfs.default.write.buffer.size</name>
<value>8388608</value>
<description>To achieve high write throughput, no less than 1MB, no more than 8MB</description>
</property>
<property>
<name>alidfs.default.read.buffer.size</name>
<value>8388608</value>
<description>To achieve high read throughput, no less than 1MB, no more than 8MB</description>
</property>
<property>
<name>alidfs.use.buffer.size.setting</name>
<value>false</value>
</property>
<property>
<name>dfs.connection.count</name>
<value>16</value>
<description>If multi threads in the same process will read/write to DFS, set to count of threads</description>
</property>
参数说明如下所示。
参数 | 说明 |
alidfs.default.write.buffer.size | 写缓存区的大小,单位为Byte。 适当的缓存大小可以提供更高的吞吐,建议配置在1 MB和8 MB之间。 |
alidfs.default.read.buffer.size | 读缓存区的大小,单位Byte。 适当的缓存大小可以提供更高的吞吐,建议配置在1 MB和8 MB之间。 |
alidfs.use.buffer.size.setting | 文件存储HDFS版是否使用Hadoop默认的buffer size值。取值范围如下:
|
dfs.connection.count | 单SDK内的连接池数目,建议配置为16。 |
调整TestDFSIO配置
在使用TestDFSIO测试集群吞吐性能时,建议您将-nrFiles参数值设置为500
。
-nrFiles:表示读或写文件的个数和测试TestDFSIO时的并发度,提高并发度可以更好的测试集群的吞吐性能。
避免使用小文件
处理小文件并非Hadoop的设计目标,Hadoop分析引擎处理大量小文件的速度远远小于处理同等数据量的大文件的速度。每一个小文件都会占用一个task,而task启动将耗费大量时间,造成作业的大部分时间都耗费在启动task和释放task上。将存储在文件存储HDFS版上的小文件聚合成大文件会对整体的分析性能有较大帮助。