hadoop - 当我有hive-site.xml和其他错误时,Hive Shell无法打开

标签 hadoop hive

我对Hive比较陌生。我在Vagrant VM上安装了Hive 2.3.2,但是在运行Hive时遇到问题。

我将其安装如下:

wget http://ftp.heanet.ie/mirrors/www.apache.org/dist/hive/hive-2.3.2/apache-hive-2.3.2-bin.tar.gz
tar -xzf apache-hive-2.3.2-bin.tar.gz
sudo mv apache-hive-2.3.2-bin /usr/local/hive

然后,我在bashrc中添加了以下内容:
export HIVE_HOME=/usr/local/hive
export HIVE_CONF_DIR=/usr/local/hive/conf
export PATH=$HIVE_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:/usr/local/hadoop/lib/*:.
export CLASSPATH=$CLASSPATH:/usr/local/hive/lib/*:.

然后,将以下内容添加到我的hive-config.sh中
export HADOOP_HOME=/usr/local/hadoop

并运行以下命令:
sudo $HADOOP_HOME/bin/hadoop fs -mkdir -p     /tmp
sudo $HADOOP_HOME/bin/hadoop fs -mkdir -p    /user/hive/warehouse
sudo $HADOOP_HOME/bin/hadoop fs -chmod g+w   /tmp
sudo $HADOOP_HOME/bin/hadoop fs -chmod g+w   /user/hive/warehouse
sudo $HIVE_HOME/bin/schematool -dbType derby -initSchema

此后,当我运行hive命令时,将按预期显示hive命令行。但是,当我尝试任何命令显示为show table时;我收到以下错误:
FAILED: SemanticException org.apache.hadoop.hive.qlmetadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

我几天前收到此错误,并设法解决了该错误。但是,昨天没有进行任何更改,一切都停止了工作。
我最初通过执行以下操作来修复它:

首先,我检查了conf文件夹,发现那里只有模板文件,因此我运行了以下命令:
sudo cp hive-default.xml.template hive-site.xml
sudo cp hive-env.sh.template hive-env.sh

我编辑了hive-env.sh文件,以包括以下内容:
export HADOOP_HEAPSIZE=1024
# Set HADOOP_HOME to point to a specific hadoop install directory
export HADOOP_HOME=/usr/local/hadoop
#hive 
export HIVE_HOME=/usr/local/hive
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=$HIVE_HOME/conf

然后通过运行以下命令确保我可以访问:

须藤chmod a + rwx。 -递归

最初是可行的,当我输入显示表时;它跑了。但是昨天它停止工作,并且HIVE命令行将不再出现。我收到以下错误消息:
Logging initialized using configuration in jar:file:/usr/local/hive/lib/hive-common-2.3.2.jar!/hive-log4j2.properties Async: true
Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
at org.apache.hadoop.fs.Path.initialize(Path.java:254)
at org.apache.hadoop.fs.Path.<init>(Path.java:212)
at org.apache.hadoop.fs.Path.ql.session.SessionState.createSessionDirs(SessionState.java:659)
at org.apache.hadoop.fs.Path.ql.session.SessionState.start(SessionState.java:582)
at org.apache.hadoop.fs.Path.ql.session.SessionState.beginStart(SessionState.java:549)
at org.apache.hadoop.fs.Path.cli.CliDriver.run(CliDriver.java.750)
at org.apache.hadoop.fs.Path.cli.CliDriver.main(CliDriver:java.686)
at sun.reflect.NativeMethodAccessorImpl.invoked(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoked(NativeMethodAccessorimpl.java:62)
at sun.reflect.DelegatingMethodAcessorImpl.invoke(DelegatingMethodAccessorimpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.hadoop.util.Runjar.run(Runjar.java:239)
at org.apache.hadoop.util.Runjar.main(Runjar.java:153)
Caused by: java.netURISyntaxException: Relative path in absolute URI: $(system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
at java.net.URI.checkPath(URI.java:1823)
at java.net.URI.<init>(URI.java:745)
at org.apache.hadoop.fs.Path.initialize(Path.java:251)
... 12 more

我一直在网上寻找,找不到能解决上述问题的任何东西。配置单元命令行甚至不再出现以上错误。

任何帮助,将不胜感激。提前致谢。

最佳答案

检查下面的配置,希望可以。

(1).bashrc文件

#HIVE VARIABLE START
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
#HIVE VARIABLE END

(2)hive-env.sh
export HADOOP_HOME=/usr/local/hadoop export HADOOP_HEAPSIZE=512 export HIVE_CONF_DIR=/usr/local/hive/conf
(3)hive-site.xml
 <property>
    <name>hive.exec.local.scratchdir</name>
    <value>/tmp/${user.name}</value>
    <description></description>
  </property>

<property>
    <name>hive.downloaded.resources.dir</name>
    <value>/tmp/${user.name}_resources</value>
    <description></description>
</property>

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost/metastore_db1?createDatabaseIfNotExist=true&amp;autoReconnect=true&amp;useSSL=false</value>
    <description></description>
</property>

<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hiveuser</value>
    <description></description>
</property>

(4)复制数据库连接器的jar文件

/usr/local/hive/lib




即如果您正在使用mysql,则将mysql-connector.jar文件复制到lib中

关于hadoop - 当我有hive-site.xml和其他错误时,Hive Shell无法打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49368016/

相关文章:

java - 映射 : expected org. apache.hadoop.io.NullWritable 中的值类型不匹配,已收到 org.apache.hadoop.io.Text

hadoop - 时间戳是否与 Apache Hive 中的时区一起存储?

apache - 将数据从一个集群复制到另一个集群时 Hadoop Distcp 中止

SQL 移动平均线

hadoop - 如何将第一行输出为列限定符名称

java - 是否有任何Bigdata工具来处理pdf文档

hadoop - 无法删除损坏的 Hive 表

hadoop - 运行 HCatalog 时出错

hadoop - Hive 中 MetaStore 的主要用途?

java - 不是 org.apache.hadoop.mapreduce.Mapper