【问题标题】:Why is Hive creating tables in the local file system为什么 Hive 在本地文件系统中创建表
【发布时间】:2017-11-27 09:39:14
【问题描述】:

我正在关注 Apache 网站上的 Hadoop 和 Hive 入门指南。我已将 Hadoop 配置为在 Pseudo-Distributed Operation 中运行。我能够运行 hdfs 操作、启动直线、创建表、插入数据等等。唯一的问题是我希望数据库存储在 HDFS 上的 /user/hive/warehouse 中,但它们是在本地文件系统上的同一路径上创建的。

这是我的版本和配置:

hadoop@precise64:/data/hadoop-2.8.2/logs$ hadoop version
Hadoop 2.8.2
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 66c47f2a01ad9637879e95f80c41f798373828fb
Compiled by jdu on 2017-10-19T20:39Z
Compiled with protoc 2.5.0
From source with checksum dce55e5afe30c210816b39b631a53b1d
This command was run using /data/hadoop-2.8.2/share/hadoop/common/hadoop-common-2.8.2.jar
hadoop@precise64:/data/hadoop-2.8.2/logs$ hive --version
Hive 2.3.2
Git git://stakiar-MBP.local/Users/stakiar/Desktop/scratch-space/apache-hive -r 857a9fd8ad725a53bd95c1b2d6612f9b1155f44d
Compiled by stakiar on Thu Nov 9 09:11:39 PST 2017
From source with checksum dc38920061a4eb32c4d15ebd5429ac8a
hadoop@precise64:/data/hadoop-2.8.2/logs$ cat $HADOOP_HOME/etc/hadoop/yarn-site.xml
<?xml version="1.0"?>
<configuration>
   <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
   </property>
</configuration>
hadoop@precise64:/data/hadoop-2.8.2/logs$ cat $HADOOP_HOME/etc/hadoop/core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:9000</value>
   </property>
   <property>
      <name>hadoop.proxyuser.hive.groups</name>
      <value>*</value>
   </property>
   <property>
      <name>hadoop.proxyuser.hive.hosts</name>
      <value>*</value>
   </property>
   <property>
      <name>hadoop.proxyuser.hadoop.hosts</name>
      <value>*</value>
   </property>
   <property>
      <name>hadoop.proxyuser.hadoop.groups</name>
      <value>*</value>
   </property>
</configuration>
hadoop@precise64:/data/hadoop-2.8.2/logs$ cat $HADOOP_HOME/etc/hadoop/hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
   <property>
      <name>dfs.replication</name>
      <value>1</value>
   </property>

   <property>
      <name>dfs.name.dir</name>
      <value>file:///home/hadoop/hadoopinfra/hdfs/namenode</value>
   </property>

   <property>
      <name>dfs.data.dir</name>
      <value>file:///home/hadoop/hadoopinfra/hdfs/datanode</value>
   </property>
</configuration>
hadoop@precise64:/data/apache-hive-2.3.2-bin/conf$ cat hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:derby:;databaseName=metastore_db;create=true</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>org.apache.derby.jdbc.EmbeddedDriver</value>
  </property>
  <property>
    <name>hive.exec.local.scratchdir</name>
    <value>/home/hadoop/tmp</value>
  </property>
  <property>
    <name>hive.downloaded.resources.dir</name>
    <value>/home/hadoop/tmp/${hive.session.id}_resources</value>
  </property>
  <property>
    <name>hive.querylog.location</name>
    <value>/home/hadoop/tmp</value>
  </property>
  <property>
    <name>hive.server2.logging.operation.log.location</name>
    <value>/home/hadoop/tmp/operation_logs</value>
  </property>
</configuration>

【问题讨论】:

  • 您使用的是嵌入式 Hive 元存储吗?添加你的 hive-site.xml
  • 是的,基于:&lt;property&gt;&lt;name&gt;javax.jdo.option.ConnectionDriverName&lt;/name&gt;value&gt;org.apache.derby.jdbc.EmbeddedDriver&lt;/value&gt;&lt;/property&gt; hive-site 基于模板,模板很大。我已经上传到:dropbox.com/s/ake7my6wtjemiqu/hive-site.xml?dl=0
  • 如果您制作自己的蜂巢站点,所有默认值都将回退。重要的是metastore目录
  • 如果您想要一个功能齐全的 Hadoop 环境,我可能会建议您通过 Apache Ambari 或 Cloudera Manager 安装和配置东西
  • 我将 hive-site.xml 替换为一个文件,该文件设置一些目录位置并配置元存储以使用(目前)嵌入式 derby 驱动程序。这行得通。有趣的是,它立即生效,无需重新启动 hiverserver2 或 beeline。我将迁移到远程数据库并考虑 Cloudera。谢谢。

标签: hadoop hive


【解决方案1】:

听起来你还没有配置 Hive

默认情况下,这就是你得到的

元数据存储在嵌入式 Derby 数据库中,其磁盘存储位置由名为 javax.jdo.option.ConnectionURL 的 Hive 配置变量确定。默认情况下,此位置为 ./metastore_db(请参阅 conf/hive-default.xml)。

而且你的人脉有限

在嵌入式模式下使用 Derby 一次最多允许一个用户。

建议使用 Postgres、MySQL 或 Oracle 数据库作为 Metastore(远程 Metastore)

https://cwiki.apache.org/confluence/display/Hive/AdminManual+MetastoreAdmin#AdminManualMetastoreAdmin-RemoteMetastoreDatabase

【讨论】:

    猜你喜欢
    • 2013-08-08
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多