您可以通过调整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.use.buffer.size.setting:该值配置成false表示文件存储HDFS使用alidfs.default.write.buffer.size和alidfs.default.read.buffer.size配置的值。该值配置成true表示文件存储HDFS使用hadoop配置的值。
    • alidfs.default.write.buffer.size:表示写缓存区的大小,单位为Byte。适当的缓存大小可以提供更高的吞吐,建议配置在1MB和8MB之间。
    • alidfs.default.read.buffer.size:表示读缓存区的大小,单位Byte。适当的缓存大小可以提供更高的吞吐,建议配置在1MB和8MB之间。
    • dfs.connection.count:表示单SDK内的连接池数目,建议配置为16。
  • 建议二:调整TestDFSIO配置

    在使用TestDFSIO测试集群吞吐性能时建议您将-nrFiles参数值设置成500。

    -nrFiles:该参数表示读/写文件的个数和测试TestDFSIO时的并发度,提高并发度可以更好的测试集群的吞吐性能,该参数建议配置为500。

  • 建议三:尽量避免使用小文件

    处理小文件并非Hadoop的设计目标,Hadoop分析引擎处理大量小文件的速度远远小于处理同等数据量的大文件的速度。每一个小文件都会占用一个task,而task启动将耗费大量时间,造成作业的大部分时间都耗费在启动task和释放task上。将存储在文件存储HDFS上的小文件聚合成大文件会对整体的分析性能有较大帮助。