基于Hadoop不同版本搭建hive集群(附配置文件)
本教程采用了两种方案
一种是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}/<username> 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集群(附配置文件)的更多相关文章
- Hive篇--搭建Hive集群
一.前述 Hive中搭建分为三中方式 a)内嵌Derby方式 b)Local方式 c)Remote方式 三种方式归根到底就是元数据的存储位置不一样. 二.具体实现 a)内嵌Derby方式 使用derb ...
- 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解
引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...
- HADOOP+SPARK+ZOOKEEPER+HBASE+HIVE集群搭建(转)
原文地址:https://www.cnblogs.com/hanzhi/articles/8794984.html 目录 引言 目录 一环境选择 1集群机器安装图 2配置说明 3下载地址 二集群的相关 ...
- Canalv1.1.4版本搭建HA集群
前提 Canal上一个正式版是于2019-9-2发布的v1.1.4,笔者几个月前把这个版本的Canal推上了生产环境,部署了HA集群.过程中虽然遇到不少的坑,但是在不出问题的前提下,Canal的作用还 ...
- hadoop的client搭建-即集群外主机访问hadoop
1增加主机映射(与namenode的映射一样): 增加最后一行 [root@localhost ~]# su - root1 [root@localhost ~]# vi /etc/hosts 12 ...
- 使用Docker搭建Spark集群(用于实现网站流量实时分析模块)
上一篇使用Docker搭建了Hadoop的完全分布式:使用Docker搭建Hadoop集群(伪分布式与完全分布式),本次记录搭建spark集群,使用两者同时来实现之前一直未完成的项目:网站日志流量分析 ...
- 庐山真面目之十二微服务架构基于Docker搭建Consul集群、Ocelot网关集群和IdentityServer版本实现
庐山真面目之十二微服务架构基于Docker搭建Consul集群.Ocelot网关集群和IdentityServer版本实现 一.简介 在第七篇文章<庐山真面目之七微服务架构Consul ...
- Azure上搭建ActiveMQ集群-基于ZooKeeper配置ActiveMQ高可用性集群
ActiveMQ从5.9.0版本开始,集群实现方式取消了传统的Master-Slave方式,增加了基于ZooKeeper+LevelDB的实现方式. 本文主要介绍了在Windows环境下配置基于Zoo ...
- 基于zookeeper+leveldb搭建activemq集群--转载
原地址:http://www.open-open.com/lib/view/open1410569018211.html 自从activemq5.9.0开始,activemq的集群实现方式取消了传统的 ...
随机推荐
- 聊聊select, poll 和 epoll_wait
聊聊select, poll 和 epoll 假设项目上需要实现一个TCP的客户端和服务器从而进行跨机器的数据收发,我们很可能翻阅一些资料,然后写出如下的代码. 服务端 客户端 那么问题来了,如果有一 ...
- TCP的三次握手四次挥手理解及面试题
一.TCP概述 每一条TCP连接都有两个端点,这种端点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字, 例如,若IP地址为192.0.0.1 而端口号为8000,那么得到 ...
- 简单模拟实现Rxjs Observable
1.先定义类型 export type Observer = { next: (any) => void, complete?: (any) => void, } export inter ...
- 题目分享k
题意:开关问题,有n只奶牛朝前或朝后,要使这n只奶牛全部朝前,每次能且必须翻转k只奶牛,求在最少翻转次数下的最小的k值,n≤5000 分析:n²暴力直接水过......枚举k值,对于每个k值因为最左边 ...
- 程序猿使用Python的tkinter库进行GUI编程肯定要会的事件处理
事件类型用户通过鼠标.键盘.游戏控制设备在与图形界面交互时,就会触发事件.tkinter事件通常采用了将事件名称放置于尖括号内的字符串表示,尖括号中的内容我们称之为事件类型.事件类型有其通用的定义方式 ...
- 《Docker从入门到跑路》之多阶段构建
多阶段构建就是在一个Dokcerfile中定义多个FROM,每个FROM都可以使用不同的基础镜像,并表示开始一个新的构建阶段,我们可以很方便的将一个阶段的文件复制到另外一个阶段中,在最终的阶段保存你需 ...
- P1666前缀单词
题目传送门点我传送 Ⅰ.字典树+树型DP 非常奇妙的一种解法 第一部分:构建树 先对来的单词读入,插入字典树 然后对于一颗字典树,其实是有很多无用边的,所以我们需要删去一些边 删去非单词节点和非单词节 ...
- 常用linux命令学习记录
批量替换文件中字符串: sed -i "s/ITSApi/icallApi/g" `grep ITSApi -rl icallbiz` 解释: 将icallbiz目录文件中包涵的I ...
- 设计模式之GOF23享元模式
享元模式FlyWeight 场景:如果有很多个完全相同或者相似的对象,可以节省内存资源 核心: 享元模式以共享的方式高效地支持大量细粒对象的重用 享元对象做到共享的关键是区分了内部状态和外部状态: 内 ...
- 设计模式之GOF23桥接模式
桥接模式 当一个问题违反单一职责原则时,及控制该产品的有多个维度,为了扩展时减少类的膨胀个数,可以选用桥接模式 避免多重继承时 例如买电脑时 桥接模式