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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 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 &


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
0019Java程序设计-SSM + MySQL 家庭医生预约平台
0019Java程序设计-SSM + MySQL 家庭医生预约平台
117 0
|
5月前
|
SQL 分布式计算 数据库
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
115 0
|
2月前
|
SQL 关系型数据库 MySQL
Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
【2月更文挑战第9天】Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
102 7
|
12天前
|
数据管理 关系型数据库 MySQL
数据管理DMS产品使用合集之DMS可以接入其他平台的MySQL数据库,是否还支持无感知变更功能
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
26天前
|
SQL 关系型数据库 MySQL
Hive【环境搭建 01】【hive-3.1.2版本 安装配置】【含 mysql-connector-java-5.1.47.jar 网盘资源】【详细】
【4月更文挑战第6天】Hive【环境搭建 01】【hive-3.1.2版本 安装配置】【含 mysql-connector-java-5.1.47.jar 网盘资源】【详细】
32 1
|
1月前
|
监控 数据可视化 安全
智慧工地SaaS可视化平台源码,PC端+APP端,支持二开,项目使用,微服务+Java++vue+mysql
环境实时数据、动态监测报警,实时监控施工环境状态,有针对性地预防施工过程中的环境污染问题,打造文明生态施工,创造绿色的生态环境。
15 0
智慧工地SaaS可视化平台源码,PC端+APP端,支持二开,项目使用,微服务+Java++vue+mysql
|
2月前
|
存储 Kubernetes 关系型数据库
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/4)
KubeSphere 核心实战之一【在kubesphere平台上部署mysql】(实操篇 1/4)
64 0
|
2月前
|
SQL DataWorks NoSQL
DataWorks报错问题之从hive到mysql报错如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
2月前
|
传感器 人工智能 监控
智慧工地云信息平台源码(微服务+java+springcloud+uniapp+mysql)
智慧工地云信息平台源码(微服务+java+springcloud+uniapp+mysql)
33 0
|
5月前
|
SQL 存储 大数据
手把手教你大数据离线综合实战 ETL+Hive+Mysql+Spark
手把手教你大数据离线综合实战 ETL+Hive+Mysql+Spark
118 0