如何在hdfs上使用配置单元?

时间:2016-07-04 10:33:17

标签: hadoop hive

我已经设置了Apache Hive环境。

而且,我已经创建了一个名为cx的数据库:

hive>create database cx;
OK
Time taken: 0.32 seconds
hive (default)> show databases;
OK
cx
default
Time taken: 0.032 seconds, Fetched: 2 row(s)
hive (default)>

当我使用“DESCRIBE DATABASE”命令检查数据库cx的详细信息时。我发现它的存储存在于本地文件系统中:

hive> describe database cx;
OK
cx      file:/user/hive/warehouse/cx.db root    USER
Time taken: 0.038 seconds, Fetched: 1 row(s)

我的问题是,如何在hdfs上存储这个数据库?

这是我的hive-site.xml设置:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
  <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
    <description>location of default database for the warehouse</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:derby:;databaseName=/user/hive/warehouse/metastore_db;create=true</value>
    <description>JDBC connect string for a JDBC metastore</description>
  </property>
</configuration>

这是我的.hiverc文件:

set hive.cli.print.current.db=true;
set hive.exec.mode.local.auto=true;

1 个答案:

答案 0 :(得分:0)

Hive在 Hadoop之上元服务层,即HDFS / HBase

Hive不存储实际数据,实际数据存储在 HDFS或NoSQL 存储中,如HBase / Cassandra。

Hive是HDFS数据的表管理/关系视图。因此实际数据位于HDFS和元数据中,即数据库名称,表名,视图名称等。使用Hive Metastore存储在Hive中。

Hive数据库是HDFS中扩展名为.db的目录。所有数据库目录的位置都是HDFS中的仓库位置,即/ user / hive / warehouse(hive.metastore.warehouse.dir)。

因此我们使用Hive创建数据库,Hive在HDFS内部创建一个目录,并将此目录映射到Hive元数据中的数据库名称。