【发布时间】:2016-01-28 19:43:57
【问题描述】:
我对 Hadoop(HDFS 和 Hbase)和 Hadoop 生态系统(Hive、Pig、Impala 等)相当陌生。我对 Hadoop 组件(例如 NamedNode、DataNode、Job Tracker、Task Tracker)以及它们如何协同工作以高效地存储数据有很好的了解。
在尝试了解 Hive 等数据访问层的基础知识时,我需要了解表的数据(在 Hive 中创建)究竟存储在哪里?我们可以在 Hive 中创建外部和内部表。由于外部表可以在 HDFS 或任何其他文件系统中,Hive 不会将此类表的数据存储在仓库中。内部表呢?该表将创建为 Hadoop 集群上的一个数据节点上的目录。一旦我们从本地或 HDFS 文件系统加载这些表中的数据,是否还会创建更多文件来将数据存储在 Hive 中创建的表中?
比如说:
- 名为 test_emp_feedback.csv 的示例文件已从本地文件系统带到 HDFS。
- 在 Hive 中创建了一个表 (emp_feedback),其结构类似于 csv 文件结构。这导致在 Hadoop 集群中创建一个目录,例如 /users/big_data/hive/emp_feedback
- 现在,一旦我创建表并从 test_emp_feedback.csv 加载 emp_feedback 表中的数据
Hive 是否会在 emp_feedback 目录中创建文件副本?会不会造成数据冗余?
【问题讨论】:
标签: hadoop hive hbase hdfs bigdata