移除 HDFS 存储位置

移除 HDFS 存储位置的步骤与移除标准存储位置的步骤类似:

  1. 通过使用 SET_OBJECT_STORAGE_POLICY 更改每个对象的存储位置,从 HDFS 存储位置移除任何现有数据。或者,您可以使用 CLEAR_OBJECT_STORAGE_POLICY。由于 Tuple Mover 不经常运行,请将 enforce-storage-move 参数设置为 true 以立即进行更改。

  2. 使用 RETIRE_LOCATION,在定义了该存储位置的每个主机上停用该位置。将 enforce-storage-move 设置为 true

  3. 使用 DROP_LOCATION 删除每个节点上的位置。

  4. 可以选择将快照和文件从该存储位置的 HDFS 目录中移除。

  5. 执行完整的数据库备份。

有关更改存储策略、更改使用、停用位置和删除位置的详细信息,请参阅管理存储位置

从 HDFS 移除存储位置文件

删除 HDFS 存储位置不会自动清理存储该位置文件的 HDFS 目录。也不会删除备份该位置时创建的任何数据文件快照。这些文件不但占用 HDFS 上的磁盘空间,还使该目录无法再次用作 HDFS 存储位置。Vertica 无法在包含现有文件或子目录的目录中创建存储位置。

您必须登录到 Hadoop 群集,才能将文件从 HDFS 中删除。一个替代方案是,使用一些其他的 HDFS 文件管理工具。

移除备份快照

如果您试图移除具有快照的目录,HDFS 将返回以下错误:

$ hdfs dfs -rm -r -f -skipTrash /user/dbadmin/v_vmart_node0001
rm: The directory /user/dbadmin/v_vmart_node0001 cannot be deleted since
/user/dbadmin/v_vmart_node0001 is snapshottable and already has snapshots

作为备份过程的一部分,Vertica 备份脚本将创建 HDFS 存储位置的快照。如果制作了 HDFS 存储位置的备份,您必须在删除目录之前删除快照。

HDFS 将快照存储在名为 .snapshot 的子目录中。您可以使用标准的 HDFS ls 命令列出目录中的快照。

$ hdfs dfs -ls /user/dbadmin/v_vmart_node0001/.snapshot
Found 1 items
drwxrwx---   - dbadmin supergroup          0 2014-09-02 10:13 /user/dbadmin/v_vmart_node0001/.snapshot/s20140902-101358.629

要删除快照,请使用以下命令:

$ hdfs dfs -removeSnapshot directory snapshotname

下面的示例演示了用于删除上个示例中显示的快照的命令:

$ hdfs dfs -deleteSnapshot /user/dbadmin/v_vmart_node0001 s20140902-101358.629

您必须将每个快照从群集中各个主机的目录中删除。删除快照后,您就可以删除存储位置中的目录。

有关管理和移除快照的详细信息,请参阅 Apache 的 HDFS 快照文档

移除存储位置目录

您可以通过下列任一方法,删除保存存储位置数据的目录:

  • 使用 HDFS 文件管理器删除目录。请参阅 Hadoop 发行版的文档,以确定其是否提供文件管理器。

  • 使用数据库管理员帐户登录到 Hadoop 名称节点,然后使用 HDFS 的 rmr 命令删除目录。有关详细信息,请参阅 Apache 的文件系统 Shell 指南

下面的示例从 Linux 命令行使用 HDFS rmr 命令,来删除 HDFS 存储位置目录 /user/dbamin 中剩余的目录。它使用 -skipTrash 标志来强制立即删除这些文件:

$ hdfsp dfs -ls /user/dbadmin
Found 3 items
drwxrwx---   - dbadmin supergroup          0 2014-08-29 15:11 /user/dbadmin/v_vmart_node0001
drwxrwx---   - dbadmin supergroup          0 2014-08-29 15:11 /user/dbadmin/v_vmart_node0002
drwxrwx---   - dbadmin supergroup          0 2014-08-29 15:11 /user/dbadmin/v_vmart_node0003

$ hdfs dfs -rmr -skipTrash /user/dbadmin/*
Deleted /user/dbadmin/v_vmart_node0001
Deleted /user/dbadmin/v_vmart_node0002
Deleted /user/dbadmin/v_vmart_node0003