本教程采用了两种方案

一种是hive-1.21版本,hadoop版本为hadoop2.6.5

还有一种是主要讲基于hadoop3.x hive的搭建

先来第一种

一、本地方式(内嵌derby)

步骤

这种存储方式需要在本地运行一个mysql服务器,并作如下配置

解压

修改安装包内conf文件夹下的hive-default.xml.template,并重命名为hite-site.xml

<configuration> 

    <property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=metastore_db;create=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.apache.derby.jdbc.EmbeddedDriver</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property> </configuration>

将hive/lib目录下的jline jar包拷贝到hadoop的yarn lib下,并将原jar包删除或改名令其失效。否则会报版本不匹配的错误 问题

使用derby存储方式时,运行hive会在当前目录生成一个derby文件和一个metastore_db目录。这种存储方式的弊端是在同一个目录下同时只能有一个hive客户端能使用数据库,多个用户登录时会报错。(这是由于derby数据库的局限性造成的)

二、Local模式(mysql)

这种存储方式需要在本地运行一个mysql服务器,并作如下配置

步骤

安装一个mysql数据库

yum  install mysql-server -y

拷贝mysql驱动包到$HIVE_HOME\lib目录下

修改hive-site.xml

<configuration> 

<property> 

  <name>hive.metastore.warehouse.dir</name> 

  <value>/user/hive_remote/warehouse</value> 

</property> 

<property> 

  <name>hive.metastore.local</name> 

  <value>true</value> 

</property>
​ <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost/hive_meta?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> </property> ​

<property> <name>javax.jdo.option.ConnectionPassword</name> <value></value> </property> </configuration>
启动sql服务
service mysqld start

设置开机启动

chkconfig mysqld on

修改root用户权限

(1)登录mysql

mysql -uroot

(2)修改权限

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;

(3)刷新

flush privileges;

创建hive_meta数据库

create database hive_meta;

添加用户并修改权限

(1)创建hive用户和密码

CREATE USER 'hive'@'%' IDENTIFIED BY '123';

(2)赋予权限

grant all privileges on hive_meta.* to hive@"%" identified by '123';flush privileges;

删除多余权限

1.进入mysql数据库

use mysql;

2.查看用户

select host,user,password from user;

3. 删除多余会对权限造成影响的数据

delete from user where password = '';

将hive/lib目录下的jline jar包拷贝到hadoop的yarn lib下

配置HIVE_HOME,hive启动

三、远程(remote)模式

当有多个客户端使用hive时,若使用各自本地的hive和mysql,会导致各端元数据不一致,不易于管理,可能会出现各种问题。在一个基于本地mysql数据库的hive作为服务端,启动一个metastore服务,其他客户端通过thrift协议连接metastore使用服务端hive,从而使用同一份mysql内的元数据。

步骤

在一个搭建好基于mysql的hive的节点启动metastore服务作为服务端

hive --service metastore

在客户端解压安装包并修改hive-site.xml

<configuration> 

<property> 

    <name>hive.metastore.warehouse.dir</name> 

    <value>/user/hive/warehouse</value> 

</property> 

<property> 

    <name>hive.metastore.local</name> 

    <value>false</value> 

</property> 

<property> 

    <name>hive.metastore.uris</name> 

    <value>thrift://192.168.23.134:9083</value> 

</property> 

</configuration>
注:metastore的启动会一直启动在前台,可利用如下方法解决
hive --service metastore >> meta.log 2>&1 &

将日志打印到meta.log 错误日志(2)重定向到正常日志(1)

&表示后台执行

这种方式服务端只提供元数据,客户端运行自己的hiv


再来第二种

本篇主要描述hive3.x与历史版本搭建的不同之处。本地模式用的较少就不复赘述,直接从local模式开始,远程模式与历史版本无异,本篇也不再赘述。

一、local模式

1.修改hive-site.xml

<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>/tmp/hive</value>
<description>HDFS root scratch dir for Hive jobs which gets created with write all () permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/&lt;username&gt; is created, with ${hive.scratch.dir.permission}.</description>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/opt/software/hive/temp/root</value>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/opt/software/hive/temp/${hive.session.id}_resources</value>
</property>
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>/opt/software/hive/temp/root/operation_logs</value>
</property> <property>
<name>hive.querylog.location</name>
<value>/opt/software/hive/temp/root</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property> <property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost/hive_meta?createDatabaseIfNotExist=true</value>
</property> <property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property> <property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property> <property>
<name>javax.jdo.option.ConnectionPassword</name>
<value></value>
</property>
</configuration>

2.修改hive-env.sh

​export HADOOP_HOME=/opt/software/hadoop
export HIVE_CONF_DIR=/opt/software/hive/conf
export HIVE_AUX_JARS_PATH=/opt/software/hive/lib

3.将hadoop/share/hadoop/common/lib 下的 guava-xx.jar 复制到hive/lib 下 将hive 的guava-xx.jar删除

4.大功告成了,赶快试试吧!

文章首发公众号:Java架构师联盟,每日更新技术好文

基于Hadoop不同版本搭建hive集群(附配置文件)的更多相关文章

  1. Hive篇--搭建Hive集群

    一.前述 Hive中搭建分为三中方式 a)内嵌Derby方式 b)Local方式 c)Remote方式 三种方式归根到底就是元数据的存储位置不一样. 二.具体实现 a)内嵌Derby方式 使用derb ...

  2. 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解

    引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...

  3. HADOOP+SPARK+ZOOKEEPER+HBASE+HIVE集群搭建(转)

    原文地址:https://www.cnblogs.com/hanzhi/articles/8794984.html 目录 引言 目录 一环境选择 1集群机器安装图 2配置说明 3下载地址 二集群的相关 ...

  4. Canalv1.1.4版本搭建HA集群

    前提 Canal上一个正式版是于2019-9-2发布的v1.1.4,笔者几个月前把这个版本的Canal推上了生产环境,部署了HA集群.过程中虽然遇到不少的坑,但是在不出问题的前提下,Canal的作用还 ...

  5. hadoop的client搭建-即集群外主机访问hadoop

    1增加主机映射(与namenode的映射一样): 增加最后一行  [root@localhost ~]# su - root1 [root@localhost ~]# vi /etc/hosts 12 ...

  6. 使用Docker搭建Spark集群(用于实现网站流量实时分析模块)

    上一篇使用Docker搭建了Hadoop的完全分布式:使用Docker搭建Hadoop集群(伪分布式与完全分布式),本次记录搭建spark集群,使用两者同时来实现之前一直未完成的项目:网站日志流量分析 ...

  7. 庐山真面目之十二微服务架构基于Docker搭建Consul集群、Ocelot网关集群和IdentityServer版本实现

    庐山真面目之十二微服务架构基于Docker搭建Consul集群.Ocelot网关集群和IdentityServer版本实现 一.简介      在第七篇文章<庐山真面目之七微服务架构Consul ...

  8. Azure上搭建ActiveMQ集群-基于ZooKeeper配置ActiveMQ高可用性集群

    ActiveMQ从5.9.0版本开始,集群实现方式取消了传统的Master-Slave方式,增加了基于ZooKeeper+LevelDB的实现方式. 本文主要介绍了在Windows环境下配置基于Zoo ...

  9. 基于zookeeper+leveldb搭建activemq集群--转载

    原地址:http://www.open-open.com/lib/view/open1410569018211.html 自从activemq5.9.0开始,activemq的集群实现方式取消了传统的 ...

随机推荐

  1. 什么是动态规划?动态规划的意义是什么?https://www.zhihu.com/question/23995189

    阮行止 上海洛谷网络科技有限公司 讲师 intro 很有意思的问题.以往见过许多教材,对动态规划(DP)的引入属于"奉天承运,皇帝诏曰"式:不给出一点引入,见面即拿出一大堆公式吓人 ...

  2. 题目分享C 二代目

    题意:一个数列是由 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6.....组成,也就是1-1,1-2,1-3......并且如果遇到多位数也要拆成数字比如1-10 ...

  3. HTML data-* 属性的含义和使用

      data-*自定义数据属性 首先讲一下语法格式: data-* =“值” data-* 属性包括两部分: 属性名不应该包含任何大写字母,并且在前缀 "data-" 之后必须有至 ...

  4. Dreamoon Likes Coloring(模拟+构造)

    \(这题刚好撞到我的思路了,但是因为模拟......我看了几十遍测试数据....\) $首先当\sum_^m$小于n时一定无解 大于呢?那我们就要浪费一些区间(覆盖一些点,也就是多出来的点) 但是又不 ...

  5. 浅析java中ClassLoader如何加载Class

    我的博客地址:https://blog.csdn.net/qq_41907991 ClassLoader是一个经常出现又让很多人望而却步的词.本文试图以最浅显易懂的方式来讲解ClassLoader,希 ...

  6. Java集合简单介绍

    再最前面分享一下我再学习集合时的方法: 1.首先了解各集合的定义和特点 2.集合的构造方法和常用方法(增删改查等) 3.了解集合使用的场景,再什么情况下使用什么类型的集合(关键是集合的特性) 4.了解 ...

  7. 浅析Spring中bean的作用域

    一.前言   刚刚花了点时间,阅读了一下Spring官方文档中,关于bean的作用域这一块的内容.Spring-4.3.21官方文档中,共介绍了七种bean作用域,这篇博客就来简单介绍一下这七种作用域 ...

  8. python--集合和文件基本操作

    集合 # 集合天生就能去重,集合也是无序的  集合也是{ }  但是空集合定义特殊s=set()  #空集合s2 = set('1234445566778')print(s2) s3 = {'1',' ...

  9. Angular 初体验

    事情起源当初一个简单的截屏然后推流出去的工具,这个工具当初我用winform简单实现了下,然后因公司业余,添加许多程序包,需要自动管理这些程序包,包含下载更新上传等,以及与后台交互,学生老师提醒,自动 ...

  10. java 查询指定月份的工作日(不包括法定节假日)

    /** * 日期工具类 用于获取指定月份的工作日(除去周末和法定节假日) */ public class DateUtils { public static void main(String[] ar ...