Hadoop HDFS 中的数据保留
Data retention in Hadoop HDFS
我们有一个 Hadoop 集群,在 HDFS 中有超过 100TB 的数据。我想删除某些 Hive 表中超过 13 周的数据。
有什么工具或方法可以实现吗?
谢谢
要删除超过特定时间范围的数据,您有几种选择。
首先,如果 Hive table 按日期分区,您可以简单地删除 Hive 中的分区并删除它们的底层目录。
第二个选项是 运行 插入新的 table,使用日期戳(如果可用)过滤掉旧数据。这可能不是一个好的选择,因为您有 100TB 的数据。
第三种选择是递归列出 Hive table 的数据目录。 hadoop fs -lsr /path/to/hive/table
。这将输出文件列表及其创建日期。您可以获取此输出,提取日期并与您想要保留的时间范围进行比较。如果文件较旧,那么您想保留 运行 一个 hadoop fs -rm <file>
。
第四种选择是获取 FSImage 的副本:curl --silent "http://<active namenode>:50070/getimage?getimage=1&txid=latest" -o hdfs.image
接下来将其转换为文本文件。 hadoop oiv -i hdfs.image -o hdfs.txt
。文本文件将包含 HDFS 的文本表示,与 hadoop fs -ls ...
和 return 相同。
我们有一个 Hadoop 集群,在 HDFS 中有超过 100TB 的数据。我想删除某些 Hive 表中超过 13 周的数据。
有什么工具或方法可以实现吗?
谢谢
要删除超过特定时间范围的数据,您有几种选择。
首先,如果 Hive table 按日期分区,您可以简单地删除 Hive 中的分区并删除它们的底层目录。
第二个选项是 运行 插入新的 table,使用日期戳(如果可用)过滤掉旧数据。这可能不是一个好的选择,因为您有 100TB 的数据。
第三种选择是递归列出 Hive table 的数据目录。 hadoop fs -lsr /path/to/hive/table
。这将输出文件列表及其创建日期。您可以获取此输出,提取日期并与您想要保留的时间范围进行比较。如果文件较旧,那么您想保留 运行 一个 hadoop fs -rm <file>
。
第四种选择是获取 FSImage 的副本:curl --silent "http://<active namenode>:50070/getimage?getimage=1&txid=latest" -o hdfs.image
接下来将其转换为文本文件。 hadoop oiv -i hdfs.image -o hdfs.txt
。文本文件将包含 HDFS 的文本表示,与 hadoop fs -ls ...
和 return 相同。