您可以通過調整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版上的小文件聚合成大文件會對整體的分析性能有較大幫助。