Hive 快速入门与平台搭建 | 结合Mysql(一)

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS Agent(兼容Hermes Agent),2核4GB
简介: Hive 快速入门与平台搭建 | 结合Mysql(一)

Hive介绍


Apache Hive 是一款基于 Hadoop 的数据仓库软件


Hadoop 为商品硬件上的数据存储和处理提供了大规模扩展和容错能力. Hive 的设计目的是为了方便地进行数据的汇总、临时查询和大量数据的分析


它支持 SQL 语句,因此用户可以在 Hive 中进行一些特殊的查询、汇总和数据分析. 同时,Hive 的 SQL 也为用户提供了诸如用户定义函数(UDF)的特性来支持自定义的分析.


总体而言, Hive 通过在分布式存储中支持 SQL ,能够简化对大数据的查询、分析和管理工作,它还提供了命令行工具和 JDBC 的驱动程序来支持来自外部程序的连接.


Hive架构

Hive 的两大组件主要是 HCatalog 和 WebHCat


其中,HCatalog 是 Hadoop 的表和存储管理层,允许使用不同数据处理工具(例如 MapReduce b)的用户更容易地在网格上进行数据的读写


而 WebHCat 提供了一个服务,用户可通过该服务来运行 MapReduce 任务、Pig 查询、Hive 作业,也可以使用 HTTP 的 REST 接口来执行一些 Hive 的元数据操作


Hive 数据仓库在架构上主要具有以下特点:


  • 提供了利用 SQL 访问数据的工具,因此支持诸如提取、转换和加载(ETL)以及数据分析和报告等方面的的数据仓库任务。
  • 在数据格式中通过结构来维护它们的关系。
  • 本身不存储数据,其数据都是直接存储在 HDFS 或 HBase 等存储系统中。
  • 查询操作可以通过 Tez、 Spark 或 MapReduce 等计算引擎来执行。
  • 支持过程语言和 HPL-SQL 。
  • 通过 Hive LLAP、YARN 和 Slider 的支持,可以进行次秒级的查询检索。


尽管 Hive 提供了标准的 SQL 功能,但它并不是为在线事务处理设计的,而更适用于数据仓库任务


Hive 的设计目的是实现可伸缩性、性能、可扩展性和容错的最大化,以及输入格式的松耦合,因此 Hive 中不存在唯一的数据存储格式,它支持带有内置连接器的逗号、制表符分隔值文件(例如 CSV 、TSV 格式的文件)、Parquet、ORC 等格式. 我们可以使用这些格式的连接器来扩展 Hive


Hive中的基本数据单元

按粒度排序,Hive 的数据组织单位分为以下几种:


  1. **数据库(Database):**用来避免表、视图、分区、列等命名冲突的命名空间,还可用于加强用户或用户组的安全性


  1. **表(Table):**具有相同模式(Schema)的同质数据单元。在稍后的课程内我们会以 page_views 表作为案例进行讲解,其中每一行可以包含以下列:


  • timestamp:INT 类型,表示对应于浏览页面时的 UNIX 时间戳。
  • userid:BIGINT 类型,表示查看页面的用户。
  • page_url:字符串类型,表示捕获页面的位置。
  • referer_url:字符串类型,表示捕获用户到达当前页面的页面位置。
  • IP:字符串类型,表示发出页面请求的 IP 地址。

3.**分区(Partition):**每个表都有一个或多个分区键来确定数据的存储方式


除了存储单元,分区能够让用户有效地识别满足指定条件的行: 例如,字符串类型的 date_partition 和 country_partition 可以分别表示按日期的分区和按国家地区的分区。分区键中的每个唯一值用于定义表的一个分区。例如,2005-05-18 中的所有 CN 数据都是 page_views 表的一个分区。因此,如果只对 2005-10-18 的 CN 数据进行分析,那么只能在表的相关分区上运行查询,因此分区能够提高分析效率。分区是为了方便而进行命名的,数据管理员负责来维护分区名称和数据内容之间的关系。而分区列是一种虚拟列,它们不是数据本身的一部分,而是根据负载派生的.


4.桶(Bucket):也称为集群(Cluster),每个分区中的数据可以根据表中某个列的散列函数的值将其划分为不同的桶。例如,page_views 表可以基于 userid 进行桶的划分,但 userid 只是 page_view 表中的一个列,而不是分区列。划分了桶之后,系统在查询处理期间就可以删除大量的虚拟数据,因此数据的采样将会更加高效,也提高了查询效率。


Hive数据类型

Hive 支持一些原始和复杂的数据类型,可以访问官网的 Hive 数据类型 来查阅具体信息


Hive安装部署


下载和目录设置


使用 wget 命令从 Apache 下载镜像中下载最新稳定版本的 Hive . 此处我们选择了 Hive 的 2.3.3 版本.

wget https://labfile.oss.aliyuncs.com/courses/1136/apache-hive-2.3.3-bin.tar.gz

解压

tar -zxvf apache-hive-2.3.3-bin.tar.gz

移动到指定目录


sudo mv apache-hive-2.3.3-bin /usr/local/src/hive-2.3.3

环境变量设置


目录设置完成后,需要设置 Hive 相关的环境变量,使得 HIVE_HOME 指向其安装目录

vi /home/hadoop/.bashrc

在文件的末尾添加以下内容

export HIVE_HOME=/usr/local/src/hive-2.3.3
export PATH=$PATH:$HIVE_HOME/bin

其中 PATH 需要根据当前实验环境的实际情况进行修改,$PATH 指代的是之前已有的内容,请直接在 PATH 环境变量的最后添加 :$HIVE_HOME/bin 即可。


编辑完成后保存并退出,使用 source 命令来激活以上环境变量:

source ~/.bashrc

元数据库配置

在正式使用 Hive 之前,需要设置它的元数据存储


默认情况下, Hive 将元信息存储在嵌入式的 Derby 数据库中. 它在磁盘上的存储位置由 Hive 配置文件 conf/hive-default.xml 中的配置项 javax.jdo.option.ConnectionURL决定. 默认情况下,这个位置是 ./metastore_db 。


我们将采用 MySQL 作为元数据的存储。因此需要修改 Hive 的配置文件。


请在终端中输入以下命令,将配置模版文件复制一份使其生效:


cp $HIVE/conf/hive-default.xml.template $HIVE/conf/hive-site.xml

25.png

随后用 Vim 编辑器打开这个配置文件:

vim /opt/hive-2.3.3/conf/hive-site.xml


以下的配置项你可以通过 Vim 编辑器的搜索功能进行快速的定位(命令模式下按 / 键可以进行查找),也可以参考行数进行寻找


在第 545 行,找到名称为 javax.jdo.option.ConnectionURL 的配置项,将其配置值修改为 jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true


这是在设置元数据库的 JDBC 连接信息

1.png

在第 1020 行,找到名称为 javax.jdo.option.ConnectionDriverName 的配置项,将其配置值修改为 com.mysql.jdbc.Driver


这是在设置数据库连接的驱动程序名称


2.png


在第 1045 行,找到名称为 javax.jdo.option.ConnectionUserName 的配置项,将其配置值修改为 hive


这是在设置连接数据库所使用的用户名


3.png


在第 530 行,找到名称为 javax.jdo.option.ConnectionPassword 的配置项,将其配置值修改为 hive


这是在设置连接数据库所使用的密码


4.png


在第 39 行,找到名称为 hive.exec.scratchdir 的配置项,将其配置值修改为 /user/hive/tmp


这是在设置 HDFS 上临时文件的目录路径


5.png


在第 75 行,找到名称为 hive.exec.local.scratchdir 的配置项,将其配置值修改为 /tmp/hive


这是在设置本地文件系统中临时文件的目录路径


注意该路径不是 HDFS 上的路径,而是本地文件系统的路径


6.png


在第 1685 行,找到名称为 hive.querylog.location 的配置项,将其配置值修改为 /home/hadoop/hive/log


这是在设置查询日志的存放位置


7.png


在第 80 行,找到名称为 hive.downloaded.resources.dir 的配置项,将其配置值修改为 /tmp/hive


这是在设置下载资源的存放位置


8.png


对上述配置项编辑完成后,保存并退出编辑器。


随后,我们需要在 MySQL 数据库中创建上述配置项所用到的用户及密码。


数据库部署

安装

下载rpm包

wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

9.png


安装依赖


yum -y localinstall mysql57-community-release-el7-11.noarch.rpm

10.png


下载并安装mysql

yum -y install mysql-community-server

11.png


设置密码与用户


首先需要启动 MySQL 的服务,请在终端中输入以下命令:

sudo service mysql start

获取mysql默认密码

cat /var/log/mysqld.log

12.png


登陆

mysql -uroot -pykO:DNGXx5ee

修改默认密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Uiuingcom123@';

进入到 MySQL 的命令行之后,使用如下语句来创建名为 hive 的数据库用户,密码也设置为 hive

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

13.png


然后为 hive 用户赋予权限并刷新:

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

退出


exit;

重启服务

systemctl restart mysqld  

配置JDBC驱动

前往hive驱动包目录

cd $HIVE_HOME/lib

下载驱动包

wget https://search.maven.org/remotecontent?filepath=mysql/mysql-connector-java/8.0.27/mysql-connector-java-8.0.27.jar

设置Hive体系参数

元数据库配置好之后,还需要设置 Hive 内部用于识别 Hadoop 位置、内部配置文件路径等方面的配置项


首先是使用 cp 命令将设置模版复制一份,使其生效


cp $HIVE_HOME/conf/hive-env.sh.template $HIVE_HOME/conf/hive-env.sh

随后用 vi 编辑器打开 hive-env.sh 文件:

vi $HIVE_HOME/conf/hive-env.sh

在第 48 行,设置 Hadoop 的安装路径:


HADOOP_HOME=/usr/local/src/hadoop-2.6.1

在第 51 行,设置 Hive 的配置文件目录路径:

export HIVE_CONF_DIR=/usr/local/src/hive-2.3.3/conf

在第 51 行,设置 Hive 的配置文件目录路径:


export HIVE_CONF_DIR=/usr/local/src/conf

对以上配置项编辑完成后,保存并退出编辑器


初始化元数据库

所有的配置工作完成后,就可以开始初始化元数据库了。


由于稍后用到的数据会存储在 HDFS 上,因此需要提前启动好 HDFS 。请在终端中输入以下命令来启动 HDFS :

sh $HADOOP_HOME/sbin/start-dfs.sh
sh $HADOOP_HOME/sbin/start-yarn.sh

如果是首次使用 Hadoop ,则需要通过 hdfs namenode -format 对其进行初始化。


此处将会使用 Hive 自带的 schematool 工具来完成初始化工作。请在终端中输入以下命令:

schematool -initSchema -dbType mysql

14.png


当提示信息中表示已经完成初始化之后,就可以通过 hive 命令进入到其命令行。请在终端中输入以下命令:

hive

15.png


启动

后台启动远程服务

hive --service metastore &

后台启动hive2

hive --service hiveserver2 &


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
SQL DataWorks 关系型数据库
DataWorks操作报错合集之如何处理数据同步时(mysql->hive)报:Render instance failed
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
483 0
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
603 41
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
465 3
|
SQL 存储 关系型数据库
从Hive建表语句到MySQL的转换
【8月更文挑战第11天】
993 7
|
SQL 分布式计算 大数据
大数据处理平台Hive详解
【7月更文挑战第15天】Hive作为基于Hadoop的数据仓库工具,在大数据处理和分析领域发挥着重要作用。通过提供类SQL的查询语言,Hive降低了数据处理的门槛,使得具有SQL背景的开发者可以轻松地处理大规模数据。然而,Hive也存在查询延迟高、表达能力有限等缺点,需要在实际应用中根据具体场景和需求进行选择和优化。
1356 6
|
SQL 关系型数据库 MySQL
实时计算 Flink版操作报错合集之从mysql读数据写到hive报错,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
474 0
|
SQL 关系型数据库 MySQL
基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化)
基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化)
846 0
|
9月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
585 158

推荐镜像

更多