访问 S3
配置对 S3 的访问
在访问 S3(或 S3 兼容)存储时,有一些配置键会显著影响性能。我们建议至少在 core-site.xml 和 hive-site.xml 中设置以下配置键。需要注意的是,我们将 hive.mv.files.thread 放在 core-site.xml 中(而不是 hive-site.xml 中),因为它仅对 S3 有用。
vi core-site.xml
<property>
<name>fs.s3a.connection.maximum</name>
<value>2000</value>
</property>
<property>
<name>fs.s3.maxConnections</name>
<value>2000</value>
</property>
<property>
<name>fs.s3a.threads.max</name>
<value>100</value>
</property>
<property>
<name>fs.s3a.threads.core</name>
<value>100</value>
</property>
<!-- S3 write performance -->
<property>
<name>hive.mv.files.thread</name>
<value>15</value>
</property>
<property>
<name>fs.s3a.max.total.tasks</name>
<value>5</value>
</property>
<property>
<name>fs.s3a.blocking.executor.enabled</name>
<value>false</value>
</property>
<!-- S3 input listing -->
<property>
<name>mapreduce.input.fileinputformat.list-status.num-threads</name>
<value>50</value>
</property>
vi hive-site.xml
<!-- S3 input listing -->
<property>
<name>hive.exec.input.listing.max.threads</name>
<value>50</value>
</property>
<!-- MSCK (Metastore Check) -->
<property>
<name>hive.metastore.fshandler.threads</name>
<value>30</value>
</property>
<property>
<name>hive.msck.repair.batch.size</name>
<value>3000</value>
</property>
<!-- dynamic partition query -->
<property>
<name>hive.load.dynamic.partitions.thread</name>
<value>25</value>
</property>
ORC 2 中的向量化读取
由于 HivePlus 使用 ORC 2,用户可以调整从 S3 向量化读取的配置键。例如,将以下配置键的值(从默认值 4K 和 1M)增加通常会减少 S3 请求(如 s3.GetObject 操作)并增加每次请求的数据大小。
vi core-site.xml
<property>
<name>fs.s3a.vectored.read.min.seek.size</name>
<value>512K</value>
</property>
<property>
<name>fs.s3a.vectored.read.max.merged.size</name>
<value>4M</value>
</property>