【问题标题】:Typical Hive and Hadoop disk space usage典型的 Hive 和 Hadoop 磁盘空间使用情况
【发布时间】:2014-11-23 03:53:50
【问题描述】:

我们有 2 台服务器的 Hadoop/Hive 集群,每台服务器上的 Hive 数据库使用约 160GB 的磁盘空间,但 Hadoop 数据目录为约 850GB。

这是否正常?Hive 数据库大小与 Hadoop 数据目录大小之间的典型比例是多少?

【问题讨论】:

标签: hadoop hive


【解决方案1】:

这完全取决于您存储的数据类型。您存储在 Hive 数据库中的数据实际上只是 hadoop 数据目录的一部分。如果您只在 hadoop 中存储 Hive 表的数据,那么比率将为 1:1。

Hive 数据库大小和 Hadoop 数据目录大小之间没有这种关系。 HDFS 是一个超集,包括 Hive 数据库在内的所有数据都存储在其中。

【讨论】:

  • 在 Mindaugus 案例中 /dfs/dn/ 占用的空间最多。而 .db 文件只有 150GB 大。我们可以让 /dfs/dn 更小吗?是否存储了相同的信息?
【解决方案2】:

/dfs/dn 指的是datanode大小,即HDFS的大小。这包括 hive 表占用的空间,以及 hdfs 中的其他内容。

如果您使用 hadoop 存储 hive 数据,请考虑创建 external tables。这些将仅存储元数据并重用已存储在 hdfs 文件夹中的数据,而内部表将复制数据和元数据。

【讨论】:

  • 如果使用外部表,对速度有影响吗?
  • 没有速度差异。Hive 只是作为一个框架在平面结构化数据上运行 map-reduce,而不管它存储在 HDFS 上的什么位置。在内部表中,hive 选择数据并将其放在其选择的位置以供后续处理。在外部表中,您专门告诉 hive 在哪里查找数据。
  • 好的,如果我改变表,它会释放 /dfs/dn 吗?
  • 如果您有内部表,随着时间的推移,删除它们应该可以释放 /dfs/dn。您可以在 hive 上运行“show create table ”并共享输出吗?
  • 是的,我可以,在这里:pastebin.com/KBY4nUj2 那么我怎样才能把它放到更小的桌子上呢?并且仍然可以将它加入到新表中。
猜你喜欢
  • 1970-01-01
  • 2021-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-24
  • 1970-01-01
  • 2012-07-26
  • 1970-01-01
相关资源
最近更新 更多