Hive基本原理及环境搭建

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:       今天我主要是在折腾这个Hive,早上看了一下书,最开始有点凌乱,后面慢慢地发现,hive其实挺简单的,以我的理解就是和数据库有关的东西,那这样的话对我来说就容易多啦,因为我对sql语法应该是比较熟悉了,而这个是HQL的,其实很多都差不多。先来看一下Hive的基本介绍: 一、Hive基本原理        hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映

      今天我主要是在折腾这个Hive,早上看了一下书,最开始有点凌乱,后面慢慢地发现,hive其实挺简单的,以我的理解就是和数据库有关的东西,那这样的话对我来说就容易多啦,因为我对sql语法应该是比较熟悉了,而这个是HQL的,其实很多都差不多。先来看一下Hive的基本介绍:

一、Hive基本原理

       hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

       Hive将元数据存储在数据库(RDBMS)中,比如MySQL、Derby中。Hive有三种模式连接到数据,其方式是:单用户模式,多用户模式和远程服务模式。(也就是内嵌模式
、本地模式、远程模式)。


1.1 Hive体系结构:

Hive体系结构图:主要分为:用户接口、Thrift服务器、元数据存储、解析器、Hadoop



1.2 Hive数据类型

Hive的存储是建立在Hadoop文件系统之上的,它本身没有专门的数据存储格式,其主要包括四类数据模型:
表(Table)
分区(Partition)
桶(Bucket)
外部表(External Table)



Hive的内置数据类型可以分为两大类:(1)、基础数据类型;(2)、复杂数据类型。其中,基础数据类型包括:TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBLE,STRING,BINARY,TIMESTAMP,DECIMAL,CHAR,VARCHAR,DATE。


1.3Hive的执行流程要点
操作符(Operator)是Hive的最小处理单位;
每个操作符处理代表HDFS操作或MR作业;
编译器把Hive SQL转换成一组操作符;
Hive通过ExecMapper和ExecReducer来执行MapReduce任务;
执行MapReduce时有两种模式:本地模式和分布式模式;

常见的Hive操作符(部分)如下:


1.4 Hive的HQL操作

hive基本的运行操作其实和sql差不多,例如:

select u.name, o.orderid from order o join user u on o.uid = u.uid;

select dealid, count(distinct uid), count(distinct date) from order group by dealid;

简单Hive表语句:
create table student
(
    name string,
    sex string,
    age int
);



二、Hive基本配置

    1、从apache官网的hadoop找到hive,目前最新版本是2.0.1,我下的就是这个,http://hive.apache.org/downloads.html,

   2、下载mysql驱动,目前是5.1.38的 ,我已经把这需要的两个整理好一个压缩包了,可以通过以下链接下载:(我后续贴出)

   3、分别解压到你需要的目录中,我是放置在/home/admin1/下载/hive-2.0.1中的,把mysql驱动也放到hive的这个lib包中,然后在hive-2.0.1/conf中对以下文件进行配置:

新建一个文件hive-env.sh

把里面的目录改成你的hadoop放置的目录就可以了。

export HIVE_HOME=/home/admin1/下载/hive-2.0.1
export PATH=$PATH:$HIVE_HOME/bin
HADOOP_HOME=/home/admin1/下载/hadoop-2.5.2
export HIVE_CONF_DIR=/home/admin1/下载/hive-2.0.1/conf
export HIVE_AUX_JARS_PATH=/home/admin1/下载/hive-2.0.1/lib

还需要新建一个hive-site.xml:

这里我用的是mysql的账号和密码来配置的,其他的你也可以参照配置。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>

<name>javax.jdo.option.ConnectionURL</name>

<!--<value>jdbc:derby:;databaseName=metastore_db;create=true</value>-->

<value>jdbc:mysql://localhost:3306/hive?=createDatabaseIfNotExist=true</value>

<description>JDBC connect string for a JDBCmetastore</description>

</property> 

<property>

<name>javax.jdo.option.ConnectionDriverName</name>

<!--<value>org.apache.derby.jdbc.EmbeddedDriver</value>-->

<value>com.mysql.jdbc.Driver</value>

<description>Driver class name for a JDBCmetastore</description>

</property> 

<property>

<name>javax.jdo.option.ConnectionUserName</name>

<value>hive</value>

<description>username to use against metastoredatabase</description>

</property>

<property>

<name>javax.jdo.option.ConnectionPassword</name>

<value>a</value>

<description>password to use against metastoredatabase</description>

</property>
</configuration>

启动:在/home/admin1/下载/hive-2.0.1中执行:
bin/hive
 若无法初始化,则:
bin/schematool -dbType mysql  -initSchema

在hive2.0以上版本都需要initSchema一下,否则会报错,我也是因为这个问题折腾了好几个小时,最后发现很简单就解决了。


最后说一下的就是在安装mysql的时候,你可以直接用ubuntu里面的uk软件下载就可以了,在里面搜索mysql,然后下载mysql的服务器,客户端和工作平台就可以了,这里不再重复啰嗦了,就是需要在控制台创建一下新用户:

mysql -uroot

create user 'hive' identified by 'a';

create database hive;

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

flush privileges

然后可以通过hive账号进行登陆就可以了,

mysql  -u hive -p 

然后输入密码hive就成功登陆,把这个登陆信息配置到hive-site.xml中就可以了。


接下来就可以愉快的进行hive的使用了,创建表等。记得要把hadoop的服务打开哦  ,    sbin/start-all.sh

总结:今天遇到的两个主要问题就是,1:bin/hive后一直报错,最后初始化之后就可以了。2、在linux中的sublim-text无法输入中文,且无法下载gpk解决,无法编译sublime_imfix.c,后来通过在github上面发现已经编译好的库,然后导入,经过一系列复杂的操作最后成功解决了这个问题。找对方法,找对工具。



相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
8月前
|
SQL HIVE
Hive sql 执行原理
Hive sql 执行原理
79 0
|
SQL 存储 分布式计算
|
SQL 存储 分布式计算
Hive底层原理:explain执行计划详解(一)
不懂hive中的explain,说明hive还没入门,学会explain,能够给我们工作中使用hive带来极大的便利!
931 0
|
27天前
|
SQL 存储 分布式计算
了解Hive 工作原理:Hive 是如何工作的?
Apache Hive 是一个建立在 Hadoop 之上的分布式数据仓库系统,提供类 SQL 查询语言 HiveQL,便于用户进行大规模数据分析。Hive Metastore(HMS)是其关键组件,用于存储表和分区的元数据。Hive 将 SQL 查询转换为 MapReduce 任务执行,适合处理 PB 级数据,但查询效率较低,不适合实时分析。优点包括易于使用、可扩展性强;缺点则在于表达能力有限和不支持实时查询。
36 3
|
8月前
|
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 网盘资源】【详细】
479 1
|
8月前
|
SQL HIVE
Hive【Hive学习大纲】【数据仓库+简介+工作原理】【自学阶段整理的xmind思维导图分享】【点击可放大看高清】
【4月更文挑战第6天】Hive【Hive学习大纲】【数据仓库+简介+工作原理】【自学阶段整理的xmind思维导图分享】【点击可放大看高清】
212 0
|
8月前
|
SQL 存储 编解码
Hive中的压缩技术是如何实现的?请解释其原理和常用压缩算法。
Hive中的压缩技术是如何实现的?请解释其原理和常用压缩算法。
83 0
|
SQL 关系型数据库 MySQL
Hive环境搭建及简单使用
上篇文章我们介绍了Hive源码编译的相关内容,本篇文章将主要介绍Hive环境的搭建步骤及简单使用。
295 0
|
SQL 存储 资源调度
Hive 架构、执行原理【重要】
Hive 架构、执行原理【重要】
153 0
|
SQL 分布式计算 关系型数据库