Hive的三种安装方式(内嵌模式,本地模式远程模式)

一、安装模式介绍:

    Hive官网上介绍了Hive的3种安装方式,分别对应不同的应用场景。

    1、内嵌模式(元数据保村在内嵌的derby种,允许一个会话链接,尝试多个会话链接时会报错)

    2、本地模式(本地安装mysql 替代derby存储元数据)

    3、远程模式(远程安装mysql 替代derby存储元数据)


二、安装环境以及前提说明:

    首先,Hive是依赖于hadoop系统的,因此在运行Hive之前需要保证已经搭建好hadoop集群环境。

    本文中使用的hadoop版本为2.5.1,Hive版本为1.2.1版。

OS:Linux Centos 6.5 64位

jdk:java version "1.7.0_79"

    假设已经下载了Hive的安装包,且安装到了/home/install/hive-1.2.1
    在~/.bash_profile中设定HIVE_HOME环境变量:

export HIVE_HOME=/home/install/hive-1.2.1

三、内嵌模式安装:

这种安装模式的元数据是内嵌在Derby数据库中的,只能允许一个会话连接,数据会存放到HDFS上。

1、切换到HIVE_HOME/conf目录下,执行下面的命令:

cp hive-env.sh.template hive-env.sh
vim hive-env.sh

在hive-env.sh中添加以下内容:

HADOOP_HOME=/home/install/hadoop-2.5.1

2、启动hive,由于已经将HIVE_HOME加入到了环境变量中,所以这里直接在命令行敲hive即可:

然后我们看到在hadoop的HDFS上已经创建了对应的目录。

注意,只要上面2步即可完成内嵌模式的安装和启动,不要画蛇添足。。。。。。比如下面

================================【下面这段就不要看了】==============================================

作废)2、提供一个hive的基础配置文件,执行如下代码,就是将conf目录下自带的文件修改为配置文件:

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

作废)3、启动hive,由于已经将HIVE_HOME加入到了环境变量中,所以这里直接在命令行敲hive即可:

作废)结果报错了,看错误日志中提到system:java.io.tmpdir,这个配置项在hive-site.xml中有提到。

作废)我们创建一个临时目录/opt/tem/hive-1.2.1/iotemp,并修改hive-site.xml中的system:java.io.tmpdir的值:

mkdir -p /opt/tem/hive-1.2.1/iotemp
vim hive-site.xml

作废)在vim编辑界面输入如下命令完成替换:

:%[email protected]\${system:java.io.tmpdir}@/opt/tem/hive-1.2.1/[email protected]

作废)4、重新启动hive:

作废)报了这样一个错误:java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected。

作废)查询资料说,hadoop目录下存在老版本jline,替换掉就行了。复制后注意删除原来版本的jar包

cp /home/install/hive-1.2.1/lib/jline-2.12.jar /home/install/hadoop-2.5.1/share/hadoop/yarn/lib/

   rm -rf /home/install/hadoop-2.5.1/share/hadoop/yarn/lib/jline-0.9.94.jar

作废)再次重新启动,OK了。


四、本地模式安装:

这种安装方式和嵌入式的区别在于,不再使用内嵌的Derby作为元数据的存储介质,而是使用其他数据库比如MySQL来存储元数据。

这种方式是一个多用户的模式,运行多个用户client连接到一个数据库中。这种方式一般作为公司内部同时使用Hive。

这里有一个前提,每一个用户必须要有对MySQL的访问权利,即每一个客户端使用者需要知道MySQL的用户名和密码才行。

下面开始正式搭建,这里要求hadoop系统已经正常启动,且MySQL数据库已经正确安装。

1、首先登录MySQL,创建一个数据库,这里命名为hive,数据库名是可以随意定义的。

创建hive用户,并赋予所有的权限:

CREATE USER ‘hive‘@‘localhost‘ IDENTIFIED BY ‘123456‘;
GRANT ALL PRIVILEGES ON *.* TO hive IDENTIFIED BY ‘123456‘  WITH GRANT OPTION;

2、将MySQL的JDBC驱动包拷贝到hive的安装目录中,驱动包自行查找下载。

cp mysql-connector-java-5.1.32-bin.jar /home/install/hive-1.2.1/lib/

3、将HIVE_HOME/conf下的hive-default.xml.template拷贝一份:

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

4、修改hive-site.xml文件:

该配置文件有3300多行,选择其中的几个选项进行修改即可。

A、修改javax.jdo.option.ConnectionURL属性。

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost/hive?createDatabaseIfNotExist=true</value>
    <description>JDBC connect string for a JDBC metastore</description>
</property>

B、修改javax.jdo.option.ConnectionDriverName属性。

<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
</property>

C、修改javax.jdo.option.ConnectionUserName属性。即数据库用户名。

<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>Username to use against metastore database</description>
</property>

D、修改javax.jdo.option.ConnectionPassword属性。即数据库密码。

<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>123456</value>
    <description>password to use against metastore database</description>
</property>

E、添加如下属性hive.metastore.local:

<property>
    <name>hive.metastore.local</name>
    <value>true</value>
    <description>controls whether to connect to remove metastore server or open a new metastore server in Hive Client JVM</description>
</property>

F、修改hive.server2.logging.operation.log.location属性,因为默认的配置里没有指定具体的路径。

<property>
    <name>hive.server2.logging.operation.log.location</name>
    <value>/tmp/hive/operation_logs</value>
    <description>Top level directory where operation logs are stored if logging functionality is enabled</descripti     on>
</property>

G、修改hive.exec.local.scratchdir属性。

<property>
    <name>hive.exec.local.scratchdir</name>
    <value>/tmp/hive</value>
    <description>Local scratch space for Hive jobs</description>
</property>

H、修改hive.downloaded.resources.dir属性。

<property>
    <name>hive.downloaded.resources.dir</name>
    <value>/tmp/hive/resources</value>
    <description>Temporary local directory for added resources in the remote file system.</description>
</property>

I、修改属性hive.querylog.location属性。

<property>
    <name>hive.querylog.location</name>
    <value>/tmp/hive/querylog</value>
    <description>Location of Hive run time structured log file</description>
</property>

5、配置hive的log4j配置文件。

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

6、将hive下的jline-2.12.jar替换掉hadoop自带的包,不然会报错。

cp /home/install/hive-1.2.1/lib/jline-2.12.jar /home/install/hadoop-2.5.1/share/hadoop/yarn/lib/   
rm -rf /home/install/hadoop-2.5.1/share/hadoop/yarn/lib/jline-0.9.94.jar

7、启动hive,界面如下:


五、远程模式安装,即server模式。

这种模式需要使用hive安装目录下提供的beeline+hiveserver2配合使用才可以。

其原理就是将metadata作为一个单独的服务进行启动。各种客户端通过beeline来连接,连接之前无需知道数据库的密码。

1、首先执行hiveserver2命令:

./hiveserver2 start

启动后命令行会一直监听不退出,我们可以看到它监听了10000端口。

2、新开一个命令行窗口,执行beeline命令:

[[email protected] bin]# beeline
Beeline version 1.2.1 by Apache Hive
beeline> !connect jdbc:hive2://node5:10000
Connecting to jdbc:hive2://node5:10000
Enter username for jdbc:hive2://node5:10000: hive
Enter password for jdbc:hive2://node5:10000: ******

报错了,错误日志如下:

Error: Failed to open new session: java.lang.RuntimeException: java.lang.RuntimeException: org.apache.hadoop.security.AccessControlException: Permission denied: user=hive, access=EXECUTE, inode="/tmp":root:supergroup:drwx------
    at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkFsPermission(FSPermissionChecker.java:271)
    at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:257)
    at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkTraverse(FSPermissionChecker.java:208)
    at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:171)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:5904)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getFileInfo(FSNamesystem.java:3691)
    at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getFileInfo(NameNodeRpcServer.java:803)
    at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getFileInfo(ClientNamenodeProtocolServerSideTranslatorPB.java:779)
    at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:585)
    at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:928)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2013)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2009)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1614)
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2007) (state=,code=0)
0: jdbc:hive2://node5:10000 (closed)>

说是hive用户对HDFS上的/tmp权限不够。

这里直接把HDFS的权限设置为最大。

hadoop fs -chmod 777 /tmp

重新连接:成功了。

时间: 2025-01-01 01:45:29

Hive的三种安装方式(内嵌模式,本地模式远程模式)的相关文章

grub安装的 三种安装方式

1. 引言 grub是什么?最常态的理解,grub是一个bootloader或者是一个bootmanager,通过grub可以引导种类丰富的系统,如linux.freebsd.windows等.但一旦进入linux操作系统(如无特殊声明,以下提及操作系统或系统皆为linux操作系统),可以敲一个grub命令,就进入”grub>”提示状态,然后可以进入操作若干命令.这时候的grub是什么?是shell,是一个和bash类似的一个shell.并且提供了两种工作模式,交互(interactive)模式

vue.js三种安装方式

Vue.js(读音 /vju?/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件.它不仅易于上手,还便于与第三方库或既有项目整合. 下面介绍三种 Vue.js 的安装方法: 独立版本 我们可以在Vue.js的官网上直接下载vue.js,并在html中通过<script>标签中引用.<script src = ../vue.js> </script> 开发环境不要使用最

Hive metastore三种配置方式

本文转载至:http://blog.csdn.net/reesun/article/details/8556078 目录(?)[-] 一本地derby 二本地mysql 三远端mysql 1服务端配置文件 2客户端配置文件 Hive的meta数据支持以下三种存储方式,其中两种属于本地存储,一种为远端存储.远端存储比较适合生产环境.Hive官方wiki详细介绍了这三种方式,链接为:Hive Metastore. 一.本地derby 这种方式是最简单的存储方式,只需要在hive-site.xml做如

postgresql - 三种安装方式

最近接触了postgresql的安装,和大家分享一下. 一.简 介 PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统.有些特性甚至连商业数据库都不具备.这个起源于伯克利(BSD)的数据库研究计划目前已经衍生成一项国际开发项目,并且有非常广泛的用户. 优势:http://www.cnblogs.com/zhangpengme/archive/2011/12/01/2271092.html 官网:http:/

MySQL5.7版本的三种安装方式

                 mysql5.7的安装方式 安装MySQL可以分为三种方式:{1:源码编译.2:二进制安装.3:rpm安装} 一.MySQL 5.7主要特性: 原生支持Systemd更好的性能:对于多核CPU.固态硬盘.锁有着更好的优化更好的InnoDB存储引擎更为健壮的复制功能:复制带来了数据完全不丢失的方案,传统金融客户也可以选择使用MySQL数据库. 新增sys库:以后这会是DBA访问最频繁的库更好的优化器:优化器代码重构的意义将在这个版本及以后的版本中带来巨大的改进,O

centOS下 JDK的三种安装方式

由于各Linux开发厂商的不同,因此不同开发厂商的Linux版本操作细节也不一样,今天就来说一下CentOS下JDK的安装: 方法一:手动解压JDK的压缩包,然后设置环境变量 1.在/usr/目录下创建java目录 [[email protected] ~]# mkdir/usr/java[[email protected] ~]# cd /usr/java 2.下载jdk,然后解压 [[email protected] java]# curl -O http://download.Oracle

Linux平台下mysql三种安装方式比较

MySQL在Linux平台下的安装包有RPM包.二进制包和源码包三种 (1)RPM包: 优点:安装简单,不需要过多的安装配置,适合初学者安装使用缺点:需要下载客户端和服务器端,当然现在都是可以捆绑下载了,安装路径为默认安装路径不能修改,一台服务器只能安装一个MySQL,不能安装多个虚拟主机.文件安装路径:/usr/bin(客户端程序和脚本)/usr/sbin(mysqld服务器)/var/lib/mysql(日志文件和数据库)/usr/share/doc/packages(文档)/usr/inc

mysql学习之-三种安装方式与版本介绍

MYSQL版本介绍 mysql分alpha,beta,rc,GA四个版本. alpha  暗示这是一个以展示新特性为目的的版本,存在比较多的不稳定因素,还会向代码中添加新新特性 beta 以后的beta版.发布版或产品发布中,所有API.外部可视结构和SQL命令列均不再更改,不再向代码中添加影响代码稳定性的新特性. rc 是指 Release Candidate. Release candidates被认为是稳定的, 通过了mysql所有的内部测试, 修正了所有已知的致命bug. 但是rc版本还

mysql的三种安装方式(详细)

安装MySQL的方式常见的有三种: rpm包形式 通用二进制形式 源码编译 1,rpm包形式 (1) 操作系统发行商提供的 (2) MySQL官方提供的(版本更新,修复了更多常见BUG)www.mysql.com/downloads 关于MySQL中rpm包类型的介绍: MySQL-client         客户端组件  MySQL-debuginfo      调试MySQL的组件  MySQL-devel          想针对于MySQL编译安装PHP等依赖于MySQL的组件包  M