为什么hive使用RDBMS存储Metastore而不是文件系统?

时间:2016-02-19 06:47:24

标签: hadoop hive

我想了解使用RDBMS进行Hive元数据而非文件系统的设计原则

从我的角度来看,RDBMS正在提供 -

并发控制

ACID属性

亚秒级延迟等

文件系统可以提供 -

复制数据

使用Zookeeper

可以实现并发

在Hive的设计过程中影响这个决定的任何其他事情?

3 个答案:

答案 0 :(得分:2)

你可以找到hive在文章中使用RDBMS的原因:" Hive:一个关于map-reduce框架的仓储解决方案"。

它描述如下

"应优化Metastore的存储系统 用于随机访问和更新的在线交易。 像HDFS这样的文件系统不适合,因为它已经过优化 用于顺序扫描而不用于随机访问。所以 Metastore使用传统的关系数据库(如 MySQL,Oracle)或文件系统(如本地,NFS,AFS)和 不是HDFS。因此,只能访问的HiveQL语句 元数据对象以非常低的延迟执行。然而, Hive必须明确保持之间的一致性 元数据和数据。"

答案 1 :(得分:0)

据我所知,他们选择在RDBMS 中存储hive表的元信息的方法,而不是将这些信息存储在hdfs中,因为他们需要Meta存储(模式,分区,其他信息) )延迟非常低。

答案 2 :(得分:0)

使用RDBMS存储元数据的原因:  无法进行CRUD操作,  不允许编辑HDFS中存在的文件或数据,  元数据使用RDBMS存储元数据以提供低查询延迟,  HDFS读/写操作是一个非常耗时的过程。

相关问题