Hive数据仓库---Hive的安装与配置

这篇具有很好参考价值的文章主要介绍了Hive数据仓库---Hive的安装与配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 Hive下载

Hive 官网地址:https://hive.apache.org/

下载地址:http://www.apache.org/dyn/closer.cgi/hive/

hive数据仓库配置,hive,hive,数据仓库,hadoop,Powered by 金山文档
hive数据仓库配置,hive,hive,数据仓库,hadoop,Powered by 金山文档

2 Hive安装与启动

2.1 Hive安装

  1. 把安装文件apache-hive-3.1.2-bin.tar.gz上传到master节点的/opt/software目

录下,执行以下命令把安装文件解压到/opt/app目录中

cd /export/software
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /export/server
  1. 进入/opt/app目录,为目录apache-hive-3.1.2-bin建立软件链接

即输入hive就相当于输入apache-hive-3.1.2-bin,方便以后的shell命令

cd /export/server
ln -s apache-hive-3.1.2-bin hive
  1. 用vi命令编辑/etc/profile文件,添加环境变量

#HIVE_HOME
export HIVE_HOME=/export/server/apache-hive-3.1.2-bin
export PATH=$PATH:$HIVE_HOME/bin

运行source命令,让修改后的配置文件生效

source /etc/profile
  1. 解决日志jar包冲突:改名称

mv -T $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.jar $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.bak
  1. 初始化元数据库

schematool -dbType derby -initSchema

报以下错误

Exception in thread "main" java.lang.NoSuchMethodError:
com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V

原因是hadoop和hive的两个guava.jar版本不一致,两个jar位置分别位于下面两个目录:

/export/server/hive/lib/guava-19.0.jar
/export/server/hadoop/share/hadoop/common/lib/guava-27.0-jre.jar

解决办法:

删除低版本的那个,将高版本的复制到低版本目录下。

cd /export/server/hive/lib
rm -f guava-19.0.jar
cp /export/server/hadoop-3.1.4/share/hadoop/common/lib/guava-27.0-jre.jar /export/server/hive/lib

再次运行schematool -dbType derby -initSchema,即可成功初始化元数据库。

2.2 Hive启动

2.2.1 启动Hive

在命令窗口中输入以下命令启动hive:

hive

如果发生下面的报错

hive启动时报Exception in thread "main" java.lang.RuntimeException: java.net.ConnectExcepti on: Call From hadoop101/192.168.2.101 to hadoop101:9820 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused

额,你忘了启动hadoop集群了,hive的运行是基于hadoop集群的

2.2.2 退出Hive

exit;

2.2.3 查看Hive的启动日志

Hive的日志存放在“/tmp/登录用户名”目录下,以root用户登录,则存放在/tmp/root目录下。

hive数据仓库配置,hive,hive,数据仓库,hadoop,Powered by 金山文档

3 元数据库更换为MySQL

默认情况下,Hive 元数据保存在内嵌的 Derby 数据库中,只能允许一个会话连接,只适合简单的测试。实际生产环境中不适用, 为了支持多用户会话,则需要一个独立的元数据库,使用 MySQL 作为元数据库,Hive 内部对 MySQL 提供了很好的支持。内置的derby主要问题是并发性能很差,可以理解为单线程操作。

3.1 检查是否已安装MySQL

rpm -qa|grep mariadb
hive数据仓库配置,hive,hive,数据仓库,hadoop,Powered by 金山文档

如果查找到内容则要卸载mariadb,没有查找到内容则可以开始安装mysql。

rpm -e --nodeps mariadb-libs
hive数据仓库配置,hive,hive,数据仓库,hadoop,Powered by 金山文档

3.2 安装MySQL

注意一行一行的执行命令

cd /export/software/mysql
yum install -y numactl libaio net-tools
rpm -ivh mysql-community-common-8.0.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.19-1.el7.x86_64.rpm

3.3 修改MySQL默认密码

输入以命令运行MySQL

systemctl start mysqld.service  # 启动MySQL
systemctl enable mysqld.service # 开机自启动

查找MySQL的默认密码

grep 'temporary password' /var/log/mysqld.log
hive数据仓库配置,hive,hive,数据仓库,hadoop,Powered by 金山文档

用查找到的密码登录mysql

mysql -uroot -p'%:D%oc#1r:u.'

mysql登录成功后,执行以下命令修改root用户的登录密码为"%:D%oc#1r:u.",

让密码永不过期,

user 表中的 root 用户允许任意 ip 连接。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Big_data20';
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Big_data20' PASSWORD EXPIRE NEVER;
update mysql.user set host='%' where user='root';
flush privileges;

3.4 配置Hive元数据保存到MySQL

3.4.1 下载 MySQL JDBC 驱动程序

为了让 Hive 能够连接到 MySQL 数据库,需要下载 MySQL JDBC 驱动程序。可以到MySQL 官网(

http://www.mysql.com/downloads/connector/j)下载mysql_connector-java-8.0.23.tar.gz。

hive数据仓库配置,hive,hive,数据仓库,hadoop,Powered by 金山文档

3.4.2 安装JDBC驱动程序

从下载好的压缩包中解压出mysql-connector-java-8.0.23.jar,复制到/exprot/server/hive/lib 目录中。

cd /export/server/mysql
cp mysql-connector-java-8.0.23.jar /export/server/hive/lib

3.4.3 在$HIVE_HOME/conf 目录下新建 hive-site.xml 文件

vi $HIVE_HOME/conf/hive-site.xml

添加如下内容

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- jdbc 连接的 URL -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://node7:3306/metastore?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characte
        rEncoding=utf8&amp;useSSL=true&amp;serverTimezone=GMT%2B8</value>
    </property>
    <!-- jdbc 连接的 Driver-->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>

    <!-- jdbc 连接的 username-->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>

    <!-- jdbc 连接的 password -->
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>Big_data20</value>
    </property>

    <!-- Hive 元数据存储版本的验证 -->
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
    <!--元数据存储授权-->
    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>

    <!-- Hive 默认在 HDFS 的工作目录 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
</configuration>

3.4.5登录MySQL

mysql -uroot -p'Big_data20'

解决中文乱码的问题,在/etc/my.cnf的末尾添加发下代码:

character-set-server = utf8
collation-server = utf8_general_ci
init_connect='SET NAMES utf8'

[client]
default-character-set=utf8

若metastore数据库已创建,需要执行发下命令,若未创建可以忽略:

alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

先登入mysql,后然创建Hive元数据库

create database metastore;
quit;

3.4.5 初始化Hive元数据库

schematool -initSchema -dbType mysql -verbose

3.4.6 再次启动Hive

hive

3.4.7测试Hive

在Hive命令行窗口中输入以下命令

create table test (name string);
insert into test values('john');
select * from test;

注意:insert语句执行会很慢,时间可能会有几十秒,这是正常的

在HDFS上查看创建的表

hive数据仓库配置,hive,hive,数据仓库,hadoop,Powered by 金山文档

4 使用元数据服务的方式访问 Hive

4.1 metastore三种配置方式

4.1.1内嵌模式

内嵌模式使用的是内嵌的Derby数据库来存储元数据,也不需要额外起Metastore服务。数据库和Metastore服务都嵌入在主Hive Server进程中。这个是默认的,配置简单,但是一次只能有一个进程可以连接到数据库,适用于用来实验,不适用于生产环境。解压hive安装包 bin/hive 启动即可使用

缺点:不同路径启动hive,每一个hive拥有一套自己的元数据,无法共享。

hive数据仓库配置,hive,hive,数据仓库,hadoop,Powered by 金山文档

4.1.2本地模式

本地模式采用外部数据库来存储元数据,目前支持的数据库有:MySQL、Postgres、Oracle、MS SQL Server。本地模式不需要单独起metastore服务,用的是跟hive在同一个进程里的metastore服务。也就是说当你启动一个hive 服务,里面默认会帮我们启动一个metastore服务。hive根据hive.metastore.uris 参数值来判断,如果为空,则为本地模式。本地模式下hive的配置主需要指定mysql的相关信息。

缺点:每启动一次hive服务,都内置启动了一个metastore。

hive数据仓库配置,hive,hive,数据仓库,hadoop,Powered by 金山文档

4.1.3远程模式

远程模式下,需要单独起metastore服务,然后每个客户端都在配置文件里配置连接到该metastore服务。远程模式的metastore服务和hive运行在不同的进程里。在生产环境中,建议用远程模式来配置Hive Metastore。在这种情况下,其他依赖hive的软件都可以通过Metastore访问hive。远程模式下,需要配置hive.metastore.uris 参数来指定metastore服务运行的机器ip和端口,并且需要单独手动启动metastore服务。

hive数据仓库配置,hive,hive,数据仓库,hadoop,Powered by 金山文档

4.2 远程模式部署hive的metastore服务

4.2.1 使用Hive CLI连接metastore服务

4.2.1.1 在 hive-site.xml 文件中添加如下配置信息
<!-- 指定存储元数据要连接的地址 -->
<property>
    <name>hive.metastore.uris</name>
    <value>thrift://node7:9083</value>
</property>
4.2.1.2启动 metastore服务

前台启动:

hive --service metastore

注意: 该启动方式下,进程会一直占用shell终端前台。如果ctrl+c结束进程,则hive metastore服务也会同时关闭。

后台启动:

nohup hive --service metastore &
hive数据仓库配置,hive,hive,数据仓库,hadoop,Powered by 金山文档

后台启动的情况下,如果想关闭metastore服务,使用jps查看进程,kill -9 进程号即可。

hive数据仓库配置,hive,hive,数据仓库,hadoop,Powered by 金山文档
4.2.1.3启动Hive

前台启动需要打开一个新命令行窗口,后台启动不需要打开一个新的命令行窗口。用hive命令启动hive。

hive数据仓库配置,hive,hive,数据仓库,hadoop,Powered by 金山文档

4.2.2 使用BeeLine CLI连接metastore服务

4.2.2.1在 hive-site.xml 文件中添加如下配置信息
<!-- 指定存储元数据要连接的地址 -->
<!-- 指定 hiveserver2 连接的 host -->
<property>
    <name>hive.server2.thrift.bind.host</name>
    <value>node7</value>
</property>

<!-- 指定 hiveserver2 连接的端口号 -->
<property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
</property>
4.2.2.2 启动metastore服务
nohup hive --service metastore &
4.2.2.3 启动 hiveserver2
nohup hive --service hiveserver2 &
4.2.2.4 启动 beeline 客户端(需要多等待一会)
beeline -u 'jdbc:hive2://node7:10000' -n root

若出现以下错误

User: root is not allowed to impersonate root (state=08S01,code=0)

在/export/server/hadoop-3.1.4/etc/hadoop/core-site.xml 中添加如下部分,重启服务即可:

<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>

重启hadoop、metastore服务、hiveserver2服务,再次启动beeline 客户端就可以连接成功了。

4.2.3 编写Hive启动脚本

以上的方式启动、停止hive比较麻烦,下面编写一个Hive启动/停止脚本hive_script.sh,用于自动启停hive。

cd /export/server/hive/bin
vim hive-script.sh

脚本内容如下:

#!/bin/bash

if [ $# -lt 1 ]
then
    echo "Input No Args!"
    echo "请输入 $(basename $0) start/stop/restart/status"
    exit;
fi

HIVE_LOG_DIR=$HIVE_HOME/logs
if [ ! -d $HIVE_LOG_DIR ]
then
    mkdir -p $HIVE_LOG_DIR
fi

function check_process()
{
    pid=$(ps -ef 2>/dev/null | grep -v grep | grep -i $1 | awk '{print $2}')
    ppid=$(netstat -nltp 2>/dev/null | grep $2 | awk '{print $7}' | cut -d '/' -f 1)
    echo $pid
    [[ "$pid" =~ "$ppid" ]] && [ "$ppid" ] && return 0 || return 1
}

function hive_start()
{
    metapid=$(check_process HiveMetastore 9083)
    cmd="nohup hive --service metastore >$HIVE_LOG_DIR/metastore.log 2>&1 &"
    [ -z "$metapid" ] && eval $cmd || echo "Metastroe服务已启动"
    server2pid=$(check_process HiveServer2 10000)
    cmd="nohup hive --service hiveserver2 >$HIVE_LOG_DIR/hiveServer2.log 2>&1 &"
    [ -z "$server2pid" ] && eval $cmd || echo "HiveServer2服务已启动"
}

function hive_stop()
{
    metapid=$(check_process HiveMetastore 9083)
    [ "$metapid" ] && kill $metapid || echo "Metastore服务未启动"
    server2pid=$(check_process HiveServer2 10000)
    [ "$server2pid" ] && kill $server2pid || echo "HiveServer2服务未启动"
}

case $1 in
"start")
    hive_start
    ;;
"stop")
    hive_stop
    ;;
"restart")
    hive_stop
    sleep 3
    hive_start
    ;;
"status")
    check_process HiveMetastore 9083 >/dev/null && echo "Metastore服务运行正常" || echo "Metastore服务运行异常"
    check_process HiveServer2 10000 >/dev/null && echo "HiveServer2 服务运行正常" || echo "HiveServer2服务运行异常"
    ;;
*)
    echo "Input Args Error!"
    echo "请输入 $(basename $0) start/stop/restart/status"
    ;;
esac

保存脚本后,为脚本添加运行权限

chmod +x hive-script.sh

用脚本启动、停止、重启、检测运行状态的命令分别为:

hive-script.sh start
hive-script.sh stop
hive-script.sh restart
hive-script.sh status

注意:hive --service hiveserver2启动较慢,启动后在用hive-script.sh status检测服务状态时要多等一会儿,否则报服务运行异常。

hive-script.sh脚本只是启动了metastore服务和hiveserver2服务,要运行hive命令还需要启beeline 客户端。

beeline -u 'jdbc:hive2://node7:10000' -n root

关于hive异常:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStor

可能是你使用了metastore的远程模式,但是没有启动metastore服务导致,用通过重启metastore服务解决。文章来源地址https://www.toymoban.com/news/detail-781090.html

3台虚拟机重启后需要运行以下命令,重启hadoop和hive服务:
1. start-all.sh #启动hadoop服务
2. hive-script.sh start #启动metastore服务和HiveServer2服务
3. hive #启动hive
或运行beeline -u 'jdbc:hive2://node7:10000' -n root启动beeline客户端

到了这里,关于Hive数据仓库---Hive的安装与配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【hadoop——Hive的安装和配置】保姆式教学

      目录 一.Hive的安装和配置 1.Hive并不是hadoop自带的组件,因此我们需要去下载hive,此次课我们使用hive 1.2.1版本,下载地址为: 2.下载完成之后,安装包默认保存在下载文件夹中,解压安装包apache-hive-1.2.1-bin.tar.gz至路径 /usr/local,命令如下: 3.然后切换至目录 /usr/local,将文

    2023年04月22日
    浏览(42)
  • 安装hive数据仓库

    需要安装部署完成的Hadoop的环境如果不会搭建的可以参考: 卸载Centos7自带的mariadb mariadb-libs-5.5.64-1.el7.x86_64是使用 rpm -qa|grep mariadb 查询出来的名称 安装mysql 安装mysql时可能会出现的问题 1、依赖检测失败 问题很明显了就是依赖的问题,下载他说的依赖就好了 安装hive 上传并且

    2024年02月14日
    浏览(52)
  • L2 数据仓库和Hive环境配置

    数据仓库DW主要是一个用于存储,分析,报告的数据系统。 数据仓库的目的是面向分析的集成化数据环境,分析结果为企业提供决策支持。 -DW不产生和消耗数据 结构数据:数据库中数据,CSV文件 直接导入DW 非结构数据:基本数据处理后导入DW 针对部门需求可以做不同DW,为

    2024年02月09日
    浏览(44)
  • 数据仓库hive的安装说明

    1.按照下面语句顺序依次输入,安装mysql         $sudo apt-get install mysql-server         $sudo apt-get install mysql-client         $sudo apt-get install libmysqlclient-dev 2.连接MySQL数据库 (1)进入mysql         $sudo mysql -u root –p (2)使用mysql         use mysql; (3)修改mysql用户密

    2024年03月10日
    浏览(43)
  • Hadoop-HA-Hive-on-Spark 4台虚拟机安装配置文件

    apache-hive-3.1.3-bin.tar spark-3.0.0-bin-hadoop3.2.tgz hadoop-3.1.3.tar.gz 在hdfs上新建 spark-history(设置权限777),spark-jars文件夹 上传jar到hdfs 链接hadoop中的文件 ln -s 源文件名 新文件名 链接hive中的文件 ln -s 源文件名 新文件名 链接hadoop中的文件 ln -s 源文件名 新文件名

    2024年02月07日
    浏览(43)
  • 云计算技术 实验八 数据仓库Hive的安装和使用

    参考资料为:   教材代码-林子雨编著《大数据基础编程、实验和案例教程(第2版)》教材所有章节代码_厦大数据库实验室博客 1 . 实验学时 4学时 2 . 实验目的 熟悉Hive的安装 熟悉Hive的基本用法 3. 实验内容 (一)完成Hive的安装和配置Mysql接口。 先进行hive安装包的安装。

    2024年02月06日
    浏览(63)
  • 大数据平台安装实验: ZooKeeper、Kafka、Hadoop、Hbase、Hive、Scala、Spark、Storm

    ​ 在大数据时代,存在很多开源的分布式数据采集、计算、存储技术,本实验将在熟练掌握几种常见Linux命令的基础上搭建几种常用的大数据采集、处理分析技术环境。 相关安装包下载: 链接:https://pan.baidu.com/s/1Wa2U3qstc54IAUCypcApSQ 提取码:lcd8 Hadoop大数据平台所需工具、软件

    2023年04月09日
    浏览(89)
  • 大数据Hive--安装和配置

    有需要Hive-3.1.3.安装包和 MySQL安装包以及MySQL驱动jar包的,请浏览文章末尾 Hive官网地址 http://hive.apache.org/ 下载地址 http://archive.apache.org/dist/hive/ 1)把apache-hive-3.1.3-bin.tar.gz上传到Linux的/opt/software目录下 2)解压apache-hive-3.1.3-bin.tar.gz到/opt/module/目录下面 [yudan@hadoop102 software]$ ta

    2024年02月03日
    浏览(46)
  • (最新版本)hive4.0.0 + hadoop3.3.4 集群安装(无坑版)-大数据学习系列(一)

    网上的找的文档大多残缺不靠谱,所以我整理了一份安装最新版本的hive4..0.0+hadoop3.3.4的学习环境,可以提供大家安装一个完整的hive+hadoop的环境供学习。 由于在公司担任大数据的培训工作后续还会更新一些基础的文章,希望能帮助到大家。 机器信息 Hostname k8s-master k8s-node1 k8

    2024年02月06日
    浏览(50)
  • Hadoop、Hive安装

    Linux系统:Centos,版本7.0及以上 JDK:jdk1.8 Hadoop:3.1.3 Hive:3.1.2 虚拟机:VMware mysql:5.7.11 工具下载地址: https://pan.baidu.com/s/10J_1w1DW9GQC7NOYw5fwvg?pwd=0kdr 提取码: 0kdr 提示:以下是本篇文章正文内容,下面案例可供参考 下载jdk-8u181-linux-x64.tar.gz包,将此包上传至/opt 目录下。 使用

    2024年02月08日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包