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 的下载地址:请点这里

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

  1. linux服务器安装mysql数据库并通过本地Navicat连接访问远程mysq数据库

    之前因为项目需要,所以自己在linux服务器上安装了mysql数据库,但是自己在安装mysql数据库的时候也是遇到了很多的问题,所以特此在本博客中介绍一下如何在linux服务器上进行mysql数据库的 ...

  2. 数据库操作中:出现创建数据库失败

    数据库操作中:出现创建数据库失败 数据库操作中:出现创建数据库失败 查看节点状态为non-Primary 故障解决: 进行节点设置: 再次查看节点状态:Primary 进行测试:创建数据库成功. 欢迎 ...

  3. 执行transact mysql_创建数据库失败((Microsoft.SqlServer.Smo))执行Transact-SQL

    机房收费系统完成了,但是我是在笔记本上敲得,没有实现异地发布,结局只能是被PASS掉了~回来重新导出自己的数据库到台式机上,由于我笔记本装的SQL和台式机版本是不一样的,所以遇到一些问题,具体解决方法 ...

  4. 创建数据库失败((Microsoft.SqlServer.Smo))执行Transact-SQL语句或批处理时发生了异常。

    创建数据库失败((Microsoft.SqlServer.Smo))执行Transact-SQL语句或批处理时发生了异常. 参考文章: (1)创建数据库失败((Microsoft.SqlServer. ...

  5. linux postgresql 创建数据库,Linux下创建Postgresql数据库的方法步骤

    Linux下创建Postgresql数据库的方法步骤 前言 PostgreSQL (也叫 Postgres)是一个自由的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行. ...

  6. linux创建数据库并设置密码,CentOS 8安装MySQL教程并创建数据库并添加用户

    本文的CentOS系统版本:CentOS 8.0 1905 MySQL版本:mysql-8.0.18 准备 首先,防火墙配置 CentOS使用防火墙作为7.x的默认防火墙,这里将其更改为iptable ...

  7. 如何在linux上创建数据库,在LINUX平台上手动创建数据库(oracle 10g)

    在LINUX平台上手动创建数据库(oracle 10g) 安装完oracle软件后,不使用dbca创建数据库,而手动创建数据库,主要目的是了解数据库创建的过程中主要进行了那些操作. 1.首先设置要创建 ...

  8. 通过navicat连接linux中MySql数据库失败10060

    通过navicat远程连接linux(Centos7)中MySql数据库失败 图片: 主要原因: linux防火墙没关 具体命令: //查看防火墙状态 sudo systemctl status fi ...

  9. 【PostgreSQL的模板库存在连接导致创建数据库失败】

    众所周知,PostgreSQL里包含两个标准系统数据库,template0和template1. 创建数据库时,CREATE DATABASE通过拷贝一个已有数据库进行工作.默认情况下,它拷贝名为te ...

最新文章

  1. 遇到的浏览器兼容问题及应对方法
  2. Wince C++串口编程
  3. jquery 滚动条插件
  4. LeetCode 754. 到达终点数字(数学推理)
  5. 联想小新/YOGA新品发布会官宣:定档10月20日
  6. 很久很久之前的一道面试题(老师的生日是那一天?)~
  7. webstorm快捷键收集
  8. 白话关于API与SDK的区别
  9. android studio调整字体大小,如何在Android Studio中增加字体大小?
  10. matlab 正交park变换 功率守恒,第二章功率变换.ppt
  11. matlab中的函数简化,matlab的简化函数simple
  12. lempel ziv matlab,1.9 Lempel-Ziv算法
  13. canvas mdn_MDN文档 canvas教程笔记
  14. 测试人真实面试经历:十面阿里,七面头条,六个Offer
  15. 学习笔记——VLSI测试方法学和可测性设计
  16. APP指的是智能手机的第三方应用
  17. Python列表实现矩阵的创建、输入输出、转化转置、加减乘运算并设计一个矩阵计算器GUI界面
  18. 【算法思想】数学归纳法在算法题中的应用(含例题举例)
  19. 曲面的渐近方向和共轭方向、主方向、曲率线网
  20. 微信小程序一个你可能需要的功能

热门文章

  1. C#Array(数组) 一维、多维数组
  2. RESTful设计原则和样例(开发前后台接口)
  3. oracle索引总结
  4. Qt之进程间通信(IPC)
  5. ERWin 7.1 和7.2 的官方FTP下载地址
  6. 详解 WSUS 部署
  7. hdu 5587(数学规律)
  8. hdu-3033-I love sneakers!--背包
  9. PHP+JS动态显示当前时间
  10. NYOJ练习题 下三角矩形 (模拟)