`
Kevin12
  • 浏览: 234763 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Hive使用默认数据库derby报错及解决方法

    博客分类:
  • Hive
阅读更多
在使用derby数据库时,遇到了很多错误,报错信息和解决方法如下,记录下来:
一,配置问题
Logging initialized using configuration in jar:file:/usr/local/hive/apache-hive-1.2.1-bin/lib/hive-common-1.2.1.jar!/hive-log4j.properties
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.hive.ql.session.SessionState.start(SessionState.java:522)
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:677)
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: 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:206)
    at org.apache.hadoop.fs.Path.<init>(Path.java:172)
    at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:563)
    at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:508)
    ... 8 more
Caused by: java.net.URISyntaxException: 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:203)
    ... 11 more

$HIVE_HOME/conf/hive-site.xml文件中缺少配置,修改下面的配置即可:
<property>
            <name>hive.querylog.location</name>
            <value>/usr/local/hive/iotmp/</value>
            <description>Location of Hive run time structured log file</description>
</property>
<property>
            <name>hive.server2.logging.operation.log.location</name>
            <value>/usr/local/hive/iotmp/operation_logs</value>
            <description>Top level directory where operation logs are stored if logging functionality is enabled</description>
</property>
<property>
            <name>hive.exec.local.scratchdir</name>
            <value>/usr/local/hive/iotmp/</value>
            <description>Local scratch space for Hive jobs</description>
  </property>
<property>
           <name>hive.downloaded.resources.dir</name>
            <value>/usr/local/hive/iotmp/${hive.session.id}_resources</value>
            <description>Temporary local directory for added resources in the remote file system.</description>
  </property


二,jar版本问题
Logging initialized using configuration in file:/usr/local/hive/apache-hive-1.2.1-bin/conf/hive-log4j.properties
[ERROR] Terminal initialization failed; falling back to unsupported
java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
    at jline.TerminalFactory.create(TerminalFactory.java:101)
    at jline.TerminalFactory.get(TerminalFactory.java:158)
    at jline.console.ConsoleReader.<init>(ConsoleReader.java:229)
    at jline.console.ConsoleReader.<init>(ConsoleReader.java:221)
    at jline.console.ConsoleReader.<init>(ConsoleReader.java:209)
    at org.apache.hadoop.hive.cli.CliDriver.setupConsoleReader(CliDriver.java:787)
    at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:721)
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:681)
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

Exception in thread "main" java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
    at jline.console.ConsoleReader.<init>(ConsoleReader.java:230)
    at jline.console.ConsoleReader.<init>(ConsoleReader.java:221)
    at jline.console.ConsoleReader.<init>(ConsoleReader.java:209)
    at org.apache.hadoop.hive.cli.CliDriver.setupConsoleReader(CliDriver.java:787)
    at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:721)
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:681)
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

hadoop的版本是2.6.0,hive的版本是1.2.1,$HIVE_HOME/lib目录下的jline-2.12.jar比$HADOOP_HOME/share/hadoop/yarn/lib下的jline-0.9.94.jar版本高,版本不一致导致。
解决方法:拷贝hive中的jline-2.12.jar到$HADOOP_HOME/share/hadoop/yarn/lib下,并重启hadoop即可。
root@master1:/usr/local/hadoop/hadoop-2.6.0/share/hadoop/yarn/lib# mv jline-0.9.94.jar jline-0.9.94.jar20160305
root@master1:/usr/local/hadoop/hadoop-2.6.0/share/hadoop/yarn/lib# cp $HIVE_HOME/lib/jline-2.12.jar ./

参考文章:http://www.linuxidc.com/Linux/2015-10/123822.htm

三,hadoop安全模式问题
Exception in thread "main" java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeException): Cannot create directory /tmp/hive/root/1069947e-cafd-4538-99d3-e4e8b5187380. Name node is in safe mode.
The reported blocks 234 has reached the threshold 0.9990 of total blocks 234. The number of live datanodes 3 has reached the minimum number 0. In safe mode extension. Safe mode will be turned off automatically in 4 seconds.
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkNameNodeSafeMode(FSNamesystem.java:1364)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirsInt(FSNamesystem.java:4216)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirs(FSNamesystem.java:4191)
    at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.mkdirs(NameNodeRpcServer.java:813)
    at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.mkdirs(ClientNamenodeProtocolServerSideTranslatorPB.java:600)
    at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:619)
    at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:962)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2039)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2035)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2033)

    at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:522)
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:677)
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeException): Cannot create directory /tmp/hive/root/1069947e-cafd-4538-99d3-e4e8b5187380. Name node is in safe mode.
The reported blocks 234 has reached the threshold 0.9990 of total blocks 234. The number of live datanodes 3 has reached the minimum number 0. In safe mode extension. Safe mode will be turned off automatically in 4 seconds.
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkNameNodeSafeMode(FSNamesystem.java:1364)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirsInt(FSNamesystem.java:4216)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirs(FSNamesystem.java:4191)
    at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.mkdirs(NameNodeRpcServer.java:813)
    at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.mkdirs(ClientNamenodeProtocolServerSideTranslatorPB.java:600)
    at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:619)
    at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:962)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2039)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2035)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2033)

    at org.apache.hadoop.ipc.Client.call(Client.java:1468)
    at org.apache.hadoop.ipc.Client.call(Client.java:1399)
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:232)
    at com.sun.proxy.$Proxy13.mkdirs(Unknown Source)
    at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.mkdirs(ClientNamenodeProtocolTranslatorPB.java:539)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:187)
    at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)
    at com.sun.proxy.$Proxy14.mkdirs(Unknown Source)
    at org.apache.hadoop.hdfs.DFSClient.primitiveMkdir(DFSClient.java:2753)
    at org.apache.hadoop.hdfs.DFSClient.mkdirs(DFSClient.java:2724)
    at org.apache.hadoop.hdfs.DistributedFileSystem$17.doCall(DistributedFileSystem.java:870)
    at org.apache.hadoop.hdfs.DistributedFileSystem$17.doCall(DistributedFileSystem.java:866)
    at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
    at org.apache.hadoop.hdfs.DistributedFileSystem.mkdirsInternal(DistributedFileSystem.java:866)
    at org.apache.hadoop.hdfs.DistributedFileSystem.mkdirs(DistributedFileSystem.java:859)
    at org.apache.hadoop.hive.ql.session.SessionState.createPath(SessionState.java:639)
    at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:574)
    at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:508)
    ... 8 more

解决办法:关闭安全模式
hadoop dfsadmin -safemode leave
参考文章:http://blog.csdn.net/wenlong237/article/details/11612847
分享到:
评论

相关推荐

    hive的一些报错及解决方法

    ### Hive的一些报错及解决方法 #### 一、Hive连接报错 在更换网络接口卡后重新启动服务时,可能会遇到Hive连接失败的问题。此类问题通常与元数据存储中的异常有关,例如存在多个版本的元数据或者端口被其他服务...

    Hive metastore 使用达梦数据库存储元数据

    解决方法是替换Spark环境中的Hive相关库,使用与达梦数据库兼容的版本。 总结起来,将Hive metastore迁移到达梦数据库涉及创建数据库用户和表空间、修改Hive配置文件以及初始化元数据等步骤。这个过程不仅可以提升...

    hive on tez 常见报错问题收集

    以上就是针对Hive on Tez常见报错的分析及解决方案。在实际操作中,应根据具体环境和需求调整相关配置,确保Hive作业的稳定性和效率。同时,对于复杂的查询场景,理解Hive和Tez的工作原理以及它们之间的交互至关重要...

    Hive安装,使用MySQL作为元数据库

    通常,Hive默认使用Derby数据库作为元数据库,但当面对大规模数据处理时,Derby可能无法满足高并发和稳定性需求,因此选择更强大的MySQL作为元数据库是常见的做法。 **安装Apache Hive** 1. **下载与解压**: 首先...

    Hive4--HIVE元数据库.pdf

    在Hive中,Derby可以作为默认的元数据库,用于存储Hive的元数据。启动Derby数据库的步骤如下: 1. 进入Hive安装目录,例如`/home/admin/caona/hive/build/dist/`。 2. 启动Derby网络服务器,命令通常为`...

    Hive元数据库操作

    Hive 元数据库操作 Hive 元数据库操作是 Hive 运维中常用的操作之一,它提供了对元数据的管理和查询功能。在 Hive 中,元数据是指对数据的描述信息,如表名、表路径、分区信息、列信息等。下面将对 Hive 元数据库...

    Hive配置(Oracle数据库为元数据)

    当需要使用 Oracle 数据库作为 Hive 的元数据存储时,我们需要对 Hive 进行相应的配置调整。本文档将详细介绍如何配置 Hive 以便能够利用 Oracle 数据库来管理其元数据信息。 #### 二、安装与配置流程 **1. 下载并...

    数据库工具连接hive的驱动包

    总结来说,“数据库工具连接Hive的驱动包”是连接Hive和数据库管理工具的桥梁,它的正确配置和使用对于高效的数据操作至关重要。了解并掌握这些知识点,有助于我们在大数据环境中更便捷地进行数据管理和分析工作。

    Hive数据库的安装及基本使用

    默认情况下,Hive使用内嵌的Derby数据库,仅支持单一会话连接,不适用于生产环境。使用MySQL作为元数据库可以支持多用户会话。 3. **安装Hive步骤** - 确保MySQL已经安装并且可以通过ping命令和数据库工具远程连接...

    hive开启权限后不能创建数据库问题

    背景:由于Hive需要开启...使用root用户登录,进入Hive命令行界面。 执行 create database test; 发现报错: Authorization failed:No privilege 'Create' found for outputs { }. Use SHOW GRANT to get more details

    cloudera manager中添加hive数据库使用mysql的配置步骤

    在Cloudera Manager中配置Hive使用MySQL数据库涉及多个步骤,从卸载CentOS默认MySQL到配置完毕,下面详细说明每一步的知识点。 首先,确保在添加Hive数据库前,系统中不存在先前安装的MySQL版本。使用命令rpm -qa |...

    基于Hadoop Hive健身馆可视化分析平台项目源码+数据库文件.zip

    基于Hadoop Hive健身馆可视化分析平台项目源码+数据库文件.zip启动方式 环境启动 hadoop hive2元数据库 sql导入 导入hivesql脚本,修改application.yml 启动主程序 HadoopApplication 基于Hadoop Hive健身馆可视化...

    hive1.2.1用mysql作为元数据库搭建DT-大数据.pdf

    Hive使用MySQL作为元数据存储数据库(元数据库)是一个常见的做法,这有利于管理Hive中表的结构和属性等信息。元数据库主要存储了表结构、分区信息、表属性等元数据。 在安装Hive时,一般情况下仅需要在单个节点...

    datax数据从hive导入mysql数据缺失解决

    ### DataX 数据从 Hive 导入 MySQL 数据缺失解决 #### 背景介绍 在大数据处理领域,Hive 和 MySQL 分别作为数据仓库与关系型数据库的重要组成部分,在数据流转过程中承担着关键角色。Hive 通常用于存储海量数据并...

    Hive4——HIVE元数据库.pdf

    然后,使用配置文件`hive-default.xml`中的连接URL,连接到DERBY数据库,如`jdbc:derby://hadoop1:1527/metastore_db;create=true`。一旦连接建立,就可以通过SQL查询来管理和操作元数据。 元数据库的核心在于其...

    hive2.1.1中orc格式读取报数组越界错误解决方法

    在描述中提到的解决方案是替换相关的jar包,具体为`hive-exec-2.1.1-cdh6.3.2.jar`和`hive-orc-2.1.1-cdh6.3.2.jar`。这两个jar包分别是Hive执行引擎和ORC文件格式处理的实现,更新它们可能是为了修复特定版本中的...

    jdbc连接hive数据库的驱动jar包

    当需要通过Java程序访问Hive数据库时,就需要使用Hive JDBC驱动。Hive是Apache Hadoop生态系统中的一个数据仓库工具,允许用户通过SQL-like查询语言HQL处理存储在HDFS上的大规模数据。 标题中的"jdbc连接hive数据库...

    HIVE数据库解析vc编写

    在IT行业中,HIVE数据库通常指的...通过深入理解以上知识点,VC程序员可以有效地编写代码来操作Hive数据库,解决在大数据处理中的挑战。实际应用中,可能还需要结合具体的业务需求和场景,进行更复杂的逻辑设计和实现。

    使用mysql作为hive的元数据库

    然而,Hive默认使用的是内嵌的Derby数据库作为元数据库,这在大规模集群环境下可能会成为性能瓶颈。因此,使用更强大的MySQL作为Hive的元数据库是一个常见的优化选择。 **1. 安装Hive和MySQL** 首先,你需要下载并...

    数据库修改为拉丁语的步骤 1、在hive中无法删除非空数据库,无法删除表的解决办法如下;2、在hive中加载数据导表中报错

    数据库修改为拉丁语的步骤。1、在hive中无法删除非空数据库,无法删除表的解决办法如下;2、在hive中加载数据导表中报错。直接下载到本地即可查看步骤

Global site tag (gtag.js) - Google Analytics