linux hive创建数据库失败,Hive本地模式安装及遇到的问题和解决方案

Apache Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

Hive有三种运行模式:

1.内嵌模式:将元数据保存在本地内嵌的Derby数据库中,这得使用Hive最简单的方式,不过使用内嵌模式的话,缺点也比较明显,因为一个内嵌的Derby数据库每次只能访问一个数据文件,这也就意味着不支持多会话连接。这种情况应对本地测试可能都有所不足,仅供初学者熟悉应用Hive;

2.本地模式:这种模式是将元数据库保存在本地的独立数据库中(比如说MySQL),这样就能够支持多会话和多用户连接;

3.远程模式:如果我们的Hive客户端比较多,在每个客户端都安装MySQL服务还是会造成一定的冗余和浪费,这种情况下,就可以更进一步,将MySQL也独立出来,将元数据保存在远端独立的MySQL服务中。

因为只有一台电脑,所以本文主要介绍Hive的本地模式安装。

安装前准备

1.正确安装Hadoop

2.下载文件:

apache-hive-1.1.0-bin.tar.gz:https://hive.apache.org/downloads.html

JDBC:http://download.softagency.net/MySQL/Downloads/Connector-J/

解压文件并配置Hive环境变量

解压文件

tar zxf apache-hive-1.1.0-bin.tar.gz

mv apache-hive-1.1.0-bin /usr/local/

tar zxf mysql-connector-java-5.1.35.tar.gz

配置环境变量vim /etc/profile

export HIVE_HOME=/usr/local/apache-hive-1.1.0-bin

export PATH=${PATH}:${HIVE_HOME}/bin

修改Hive配置

hive-config.sh

#vim /usr/local/apache-hive-1.1.0-bin/bin/hive-config.sh

export JAVA_HOME=/usr/lib/jvm/java-7-Oracle

export HIVE_HOME=/usr/local/apache-hive-1.1.0-bin

export HADOOP_HOME=/usr/local/hadoop-2.6.0

hive-env.sh

cp hive-env.sh.template hive-env.sh1

hive-site.xml

#cp hive-default.xml.template hive-site.xml

#vim hive-site.xml

javax.jdo.option.ConnectionURL

jdbc:mysql://localhost:3306/hive

JDBC connect string for a JDBC metastore

javax.jdo.option.ConnectionDriverName

com.mysql.jdbc.Driver

Driver class name for a JDBC metastore

javax.jdo.option.ConnectionUserName

数据库用户名

Username to use against metastore database

javax.jdo.option.ConnectionPassword

数据库密码

password to use against metastore database

#如果不配置下面的部分会产生错误1.

hive.exec.local.scratchdir

自定义目录

Local scratch space for Hive jobs

hive.downloaded.resources.dir

自定义目录

Temporary local directory for added resources in the remote file system.

hive.querylog.location

自定义目录

Location of Hive run time structured log file

hive.server2.logging.operation.log.location

自定义目录/operation_logs

Top level directory where operation logs are stored if logging functionality is enabled

hive-log4j.properties

#cp hive-log4j.properties.template hive-log4j.properties

#vim hive-log4j.properties

hive.log.dir=自定义目录/log/

在HDFS上建立/tmp和/user/hive/warehouse目录,并赋予组用户写权限。

HADOOP_HOME/bin/hadoop fs -mkdir      /tmp

HADOOP_HOME/bin/hadoop fs -mkdir      /user/hive/warehouse

HADOOP_HOME/bin/hadoop fs -chmod g+w  /tmp

HADOOP_HOME/bin/hadoop fs -chmod g+w  /user/hive/warehouse

Mysql配置

#创建数据库

mysql> create database hive;

#赋予访问权限

mysql> grant all privileges on hive.* to root@localhost identified by '密码' with grant option;

mysql> flush privileges;

#将JDBC复制到Hive库目录用于java程序与mysql的连接

cp mysql-connector-java-5.1.35/mysql-connector-java-5.1.35-bin.jar /usr/local/apache-hive-1.1.0-bin/lib/

完成以上操作后,启动Hadoop,再在终端输入hive启动Hive,若Hive成功启动,Hive本地模式安装完成。

错误1.

Logging initialized using configuration in file:/usr/local/apache-hive-1.1.0-bin/conf/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:472)

at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:671)

at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

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.(Path.java:172)

at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:515)

at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:458)

... 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:1804)

at java.net.URI.(URI.java:752)

at org.apache.hadoop.fs.Path.initialize(Path.java:203)

... 11 more

错误2.

Logging initialized using configuration in file:/usr/local/apache-hive-1.1.0-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.(ConsoleReader.java:229)

at jline.console.ConsoleReader.(ConsoleReader.java:221)

at jline.console.ConsoleReader.(ConsoleReader.java:209)

at org.apache.hadoop.hive.cli.CliDriver.getConsoleReader(CliDriver.java:773)

at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:715)

at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)

at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

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.(ConsoleReader.java:230)

at jline.console.ConsoleReader.(ConsoleReader.java:221)

at jline.console.ConsoleReader.(ConsoleReader.java:209)

at org.apache.hadoop.hive.cli.CliDriver.getConsoleReader(CliDriver.java:773)

at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:715)

at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)

at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

at org.apache.hadoop.util.RunJar.run(RunJar.java:221)

at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

错误原因:

Hive has upgraded to Jline2 but jline 0.94 exists in the Hadoop lib.1

1.Delete jline from the Hadoop lib directory (it's only pulled in transitively from ZooKeeper).

2.export HADOOP_USER_CLASSPATH_FIRST=true

Hive 的详细介绍:请点这里

Hive 的下载地址:请点这里

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值