本页介绍了如何将启用了分层命名空间的存储桶用于 Hadoop 工作负载。
概览
使用带有分层命名空间的 Cloud Storage 存储桶时,您可以将 Cloud Storage 连接器配置为对 Hadoop、Spark、Hive 等工作负载使用重命名文件夹操作。
在没有分层命名空间的存储桶中,Hadoop、Spark 和 Hive 中的重命名操作涉及多个对象复制和删除作业,从而影响性能和一致性。在处理包含大量对象的文件夹时,使用 Cloud Storage 连接器重命名文件夹可优化性能并确保一致性。
Dataproc
您可以使用 Google Cloud CLI 创建 Dataproc 集群,并启用 Cloud Storage 连接器以执行文件夹操作。
安装或更新 Cloud Storage 连接器 2.2.23 版或更高版本(不包括 3.0.0 版)。
使用以下命令创建 Dataproc 集群:
gcloud dataproc clusters create CLUSTER_NAME --properties=core:fs.gs.hierarchical.namespace.folders.enable=true, core:fs.gs.http.read-timeout=30000
其中:
CLUSTER_NAME
是集群的名称。 例如:my-cluster
fs.gs.hierarchical.namespace.folders.enable
用于在存储桶上启用分层命名空间。fs.gs.http.read-timeout
是从已建立连接中读取数据的最大时长(以毫秒为单位)。这是可选设置。
自行管理的 Hadoop
您可以在自行管理 Hadoop 集群上启用 Cloud Storage 连接器,以执行文件夹操作。
安装或更新 Cloud Storage 连接器 2.2.23 版或更高版本(不包括 3.0.0 版)。
将以下内容添加到 core-site.xml 配置文件中:
<property> <name>fs.gs.hierarchical.namespace.folders.enable</name> <value>true</value> </property> <property> <name>fs.gs.http.read-timeout</name> <value>30000</value> </property>
其中:
fs.gs.hierarchical.namespace.folders.enable
用于在存储桶上启用分层命名空间fs.gs.http.read-timeout
是从已建立连接中读取数据的最大时长(以毫秒为单位)。这是可选设置。
与 Cloud Storage 连接器版本 3.0.0 或 2.2.23 之前的版本的兼容性
使用 Cloud Storage 连接器版本 3.0.0 或 2.2.23 之前的版本,或停用分层命名空间的文件夹操作,可能会导致以下限制:
文件夹重命名效率低下:Hadoop 中的文件夹重命名操作使用的是对象级复制和删除操作,这比专用
rename folder
操作速度更慢且效率更低。空文件夹堆积:文件夹资源不会自动删除,导致存储桶中堆积空文件夹。空文件夹的堆积可能会产生以下影响:
- 如果未明确删除,则会增加存储空间费用。
减慢列表操作速度并增加列表操作超时风险。
兼容性问题:在重命名文件夹时,混合使用旧版和新版连接器版本,或启用和停用文件夹操作,可能会导致兼容性问题。请考虑以下使用多种连接器版本的场景:
使用低于 2.2.23 版本的 Cloud Storage 连接器执行以下任务:
- 在文件夹
foo/
下写入对象。 - 将文件夹
foo/
重命名为bar/
。重命名操作会复制和删除foo/
下的对象,但不会删除空的foo/
文件夹。
- 在文件夹
使用已启用文件夹操作设置的 Cloud Storage 连接器版本 2.2.23 将文件夹
bar/
重命名为foo/
。
连接器版本 2.2.23 在启用文件夹操作后会检测现有的
foo/
文件夹,导致重命名操作失败。旧版连接器不会删除foo/
文件夹,因为文件夹操作已停用。
后续步骤
自行试用
如果您是 Google Cloud 新手,请创建一个账号来评估 Cloud Storage 在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
免费试用 Cloud Storage