bigdata-17-Hive部署与Hive基础

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: bigdata-17-Hive部署与Hive基础

4.3 部署Hive

下载地址

https://archive.apache.org/dist/hive/

https://hive.apache.org/downloads.html

这里我们下载hive-3.1.2这个版本

软件地址在这:

链接: https://pan.baidu.com/s/1sYvZsTc4Mz1d9QnwG8zu5A 提取码: jewn
--来自百度网盘超级会员v7的分享

部署

部署Mysql8.x

1.下载镜像

yum install wget
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

2.安装镜像

rpm -ivh mysql80-community-release-el7-3.noarch.rpm

3.升级系统中的软件包

yum update mysql-server

4.安装mysql

yum -y install mysql-server

提示:

失败的软件包是:mysql-community-icu-data-files-8.0.30-1.el7.x86_64
GPG  密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

重新导入密钥并执行安装

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum -y install mysql-server

安装完毕

5.修改文件权限

chown mysql:mysql -R /var/lib/mysql

6.初始化

mysqld --initialize

7.启动设置开机自启动

systemctl start mysqld.service
systemctl enable mysqld.service
systemctl daemon-reload

看到active状态表示正常

8.查看版本

mysqladmin --version

9.进入mysql

mysql -u root -p

权限错误

10.重置密码

#关闭服务
systemctl stop mysqld
#跳过检查方式启动
mysqld --user=root --skip-grant-tables &
#登录mysql
mysql:mysql -u root -p
#刷新权限
flush privileges;
#修改密码
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';

11.开启mysql远程

#登录
mysql -u root -p 你的密码
#查询数据库的用户
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
#更新用户表
UPDATE user SET `Host` = '%' WHERE `User` = 'root' LIMIT 1;
alter user 'root'@'%' identified with mysql_native_password by '你的密码';
#刷新权限
flush privileges;

12.使用Navicat测试连接

连接成功即可

备份快照

部署Hive

由于Hive本身属于Hadoop客户端工具,所以放在任意节点都可以

这里我们选择部署在客户机bigdata04上

1.上传安装包并解压:

2.进入conf目录 修改模板文件

mv hive-env.sh.template  hive-env.sh
mv hive-default.xml.template  hive-site.xml

3.修改hive-env.sh配置文件内容并保存

vi hive-env.sh
#添加如下三行内容
export JAVA_HOME=/data/soft/jdk1.8
export HIVE_HOME=/data/soft/apache-hive-3.1.2-bin
export HADOOP_HOME=/data/soft/hadoop-3.2.0

4.修改hive-site.xml文件具体内容

  • 指定元数据存放数据库为mysql
  • 指定日志目录与资源目录
修改Hive中的hive-site.xml配置文件
vi hive-site.xml
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://mysqlIp:3306/hive?serverTimezone=Asia/Shanghai</value>
</property>
<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.cj.jdbc.Driver</value>
</property>
<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
</property>
<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>admin</value>
</property>
<property>
    <name>hive.querylog.location</name>
    <value>/data/hive_repo/querylog</value>
</property>
<property>
    <name>hive.exec.local.scratchdir</name>
    <value>/data/hive_repo/scratchdir</value>
</property>
<property>
    <name>hive.downloaded.resources.dir</name>
    <value>/data/hive_repo/resources</value>
</property>

5.在bigdata01节点上修改Hadoop配置

这里配置的目的是处理beeline连接产生的错误信息

在Hadoop的core-site.xml文件中增加下面配置
vi core-site.xml
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>

6.同步bigdata01的core-site.xml到bigdata02和bigdata03

scp -rq /data/soft/hadoop-3.2.0/etc/hadoop/core-site.xml bigdata02:/data/soft/hadoop-3.2.0/etc/hadoop/
scp -rq /data/soft/hadoop-3.2.0/etc/hadoop/core-site.xml bigdata03:/data/soft/hadoop-3.2.0/etc/hadoop/

ps:bigdata04节点不需要修改此配置

8.重启Hadoop集群

stop-all.sh
start-all.sh

重启完成

9.初始化Hive的Metastore

  • 拷贝jdbc驱动包到hive  lib目录下
  • 打开hive-site.xml
  • 删除hive.txn.xlock.iow对应的description标签
  • 这个位置原始配置有问题
  • 在MySQL下创建hive数据库
  • 初始化:
bin/schematool -dbType mysql -initSchema

初始化成功标志

4.4 Hive基础

使用方式

  • 命令行
  • JDBC

命令行

  • bin/hive 最基础的使用方式
  • beeline:官方推荐的轻量级客户端工具

hive

在hive目录下 bin/hive进入

简单测试下

show tables;
create table t1(id int,name string);

添加数据

insert into t1(id,name) values(1,"zs");

这里执行时会产生mapReduce任务

查询表数据

select * from t1;

查询时并没有产生mapReduce任务,针对select * from tableName这种操作,就跟我们在hdfs打开文件一样,不需要调用计算引擎,所以也就没有产生mapReduce任务。

删除表测试

drop table if exists t1;

退出

quit;

beeline

首先启动HiveServer2服务

bin/hiveserver2

这里必须要等待Hive2服务启动后再通过beeline去连接

等待Hive2输出完所有的Session ID 信息

一般是四行

hiveserver2默认会监听本机的10000端口

重新打开一个新的session会话

启动beeline

bin/beeline -u jdbc:hive2://localhost:10000

上述操作再来一遍

create table t1(id int,name string);

这里报错信息提示缺少写权限

先退出beeline,用root用户启动

bin/beeline -u jdbc:hive2://localhost:10000 -n root

再来一遍

create table t1(id int,name string);
select * from t1;

可以看到beeline会对一些信息进行封装,显得更加好看和专业

官方推荐使用beeline,这个看个人喜好。

hive -e 执行hql语句

首先知道hive -e无需启动会话,就可以执行hive命令

测试如下

配置hive环境变量

vi /etc/profile
export HIVE_HOME=/data/soft/apache-hive-3.1.2-bin
source /etc/profile

JDBC方式

这里我们创建一个maven项目

com.bigdata.hive

添加Hive开发依赖

hive JDBC驱动如下

<dependency>
 <groupId>org.apache.hive</groupId>
 <artifactId>hive-jdbc</artifactId>
 <version>3.1.2</version>
</dependency>

核心代码:

先启动hiveserver2服务

/**
 * JDBC代码操作 Hive
 */
public class HiveJdbcDemo {
 public static void main(String[] args) throws Exception{
 //指定hiveserver2的连接
 String jdbcUrl = "jdbc:hive2://192.168.197.104:10000";
 //获取jdbc连接,这里的user使用root,就是linux中的用户名,password随便指定即
 Connection conn = DriverManager.getConnection(jdbcUrl, "root", "any")
 //获取Statement
 Statement stmt = conn.createStatement();
 //指定查询的sql
 String sql = "select * from t1";
 //执行sql
 ResultSet res = stmt.executeQuery(sql);
 //循环读取结果
 while (res.next()){
 System.out.println(res.getInt("id")+"\t"+res.getString("name"));
 }
 }
}

这里处理下log4j的信息

排除hive自带的log4j

<dependency>
      <groupId>org.apache.hive</groupId>
      <artifactId>hive-jdbc</artifactId>
      <version>3.1.2</version>
      <exclusions>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

资源目录下新增log4j.xml

重新打印,即可解决log4j报错信息问题

使用临时参数

在hive命令行中可以使用set命令临时设置一些参数的值

其实就是临时修改hive-site.xml中参数的值

通过set命令设置的参数只在当前会话有效,退出重新打开就无效了

在hive-site.xml中有一个参数是 hive.cli.print.current.db ,这个参数可以显示当前所在的数据库名 称,默认值为 false 。 在这里我们设置为true。

set hive.cli.print.current.db = true;

还有一个参数 hive.cli.print.header 可以控制获取结果的时候显示字段名称,这样看起来会比较清晰

set hive.cli.print.header = true;

修改 ~/.hiverc,保留配置仅对当前用户生效

vi ~/.hiverc
set hive.cli.print.current.db = true;
set hive.cli.print.header = true;

重新进入看下效果

配置Hive日志

删除重复的日志信息

hive中的一个日志依赖包和hadoop中的日志依赖包冲突

我们移除hive的日志依赖包

mv log4j-slf4j-impl-2.10.0.jar log4j-slf4j-impl-2.10.0.jar.bak

配置Hive日志信息目录

mv hive-log4j2.properties.template hive-log4j2.properties
vi hive-log4j2.properties
配置信息如下
property.hive.log.level = WARN
property.hive.root.logger = DRFA
property.hive.log.dir = /data/hive_repo/log
property.hive.log.file = hive.log
property.hive.perflogger.log.level = INFO

这样后期分析日志就可以到 /data/hive_repo/log 目录下去查看了。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
SQL 存储 分布式计算
基于Hadoop数据仓库Hive1.2部署及使用
基于Hadoop数据仓库Hive1.2部署及使用
|
8月前
|
SQL 分布式计算 Hadoop
Hive部署
Hive部署
83 0
|
2月前
|
SQL 消息中间件 Kafka
Flink部署问题之hive表没有数据如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
9月前
|
SQL 分布式计算 关系型数据库
hadoop搭建、mysql、hive部署(三)
hadoop搭建、mysql、hive部署
106 0
hadoop搭建、mysql、hive部署(三)
|
9月前
|
SQL 分布式计算 关系型数据库
hadoop搭建、mysql、hive部署(二)
hadoop搭建、mysql、hive部署
69 0
|
9月前
|
SQL 分布式计算 Hadoop
hadoop搭建、mysql、hive部署(一)
hadoop搭建、mysql、hive部署
125 0
|
SQL 存储 分布式计算
工良出品:包教会,Hadoop、Hive 搭建部署简易教程
导读 Hadoop、Hive 是什么 运行环境 Java 环境 Mysql 下载 Hadoop、Hive 和 驱动 安装 Hadoop core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml hadoop-env.cmd 启动 Hadoop 安装 Hive 配置 Hive hive-env.sh hive-site.xml 运行 Hive 连接到 Hive
283 0
|
SQL 存储 分布式计算
大数据技术基础实验九:Hive实验——部署Hive
大数据技术基础实验九,了解有关Hive的知识和学习如何在虚拟机上部署Hive并启动Hive。
393 0
大数据技术基础实验九:Hive实验——部署Hive
|
SQL 分布式计算 关系型数据库
|
2月前
|
SQL 数据采集 数据挖掘
大数据行业应用之Hive数据分析航班线路相关的各项指标
大数据行业应用之Hive数据分析航班线路相关的各项指标
141 1