HDFS仅与维护文件元数据的Namenode可靠。您最好设置Namenode HA并对其进行频繁的快照,并从HDFS外部存储它们。
如果所有Namenode都不可用,或者它们的元数据存储已损坏,尽管这些文件本身很好并且具有高可用性,您仍将无法读取HDFS datanode数据
以下是在Hive与HDFS(和/或HBase)中存储数据的一些注意事项。
配置单元:
- HDFS是支持故障转移和HA的文件系统。 HDFS将根据您选择的复制因子在多个数据节点中复制数据。 Hive建立在Hadoop之上,因此可以将数据存储在HDFS中,也可以利用HDFS for HA的优点。
- Hive利用predicates-pushdown提供了巨大的性能优势。 Hive还可以与现代文件格式(例如镶木地板和ORC)结合使用,从而进一步提高性能(利用谓词-下推式)。
- Hive通过类似于SQL的语言HQL(Hive查询语言)提供对数据的轻松访问。
- Hive与Spark搭配使用非常好,您可以将它们结合使用,既可以将Hive数据检索到数据帧中,又可以将数据帧保存到Hive中。
HDFS / HBase:
- Hive是用于数据分析的仓库系统,因此,Hive CRUD操作比直接访问HDFS文件(或为快速CRUD操作而构建的HBase)相对要慢。例如,在流应用程序中,将数据保存在HDFS或HBase中将比在Hive中快得多。如果您需要快速存储(或插入查询),并且不对大型数据集进行任何分析,则应首选HDFS / HBase而不是Hive。
- 如果性能对于您的应用程序至关重要,因此您希望跳过Hive直接访问HDFS文件的额外层。
- 团队决定不使用SQL。
相关帖子:
When to use Hadoop, HBase, Hive and Pig?