Apache Hive实战基础

本节目标

  • 了解Hive的作用和优势
  • 了解Hive的基本架构
  • 了解Hive的数据类型
  • 了解Hive的数据库和表操作
  • 理解Hive的数据分区
  • 理解Hive的数据分桶

4.1 数据仓库

4.1.1 为什么要有数据仓库

在引入数据仓库之前,我们先来聊聊为什么回产生数据仓库?

Apache Hive实战基础_第1张图片

 

数据的作用有两个:操作型记录的保存分析型决策的制定

  • 操作型记录的保存意味着企业通常不必维护历史数据,只需要修改数据以反映最新的状态;
  • 分析型决策意味着企业需要保存历史的数据,从而可以更精准的来评估现有状况进行决策;

基于后者分析型决策的优化,需要高性能地完成用户的查询,因此引出了数据仓库的概念。

4.1.2 数据仓库概念

数据仓库是一个面向主题、集成的、非易失的、随时间变化的、用来支持管理人员决策的数据集合,数据仓库中包含了粒度化的企业数据。

数据仓库的主要特征是: 主题性 、 集成性 、 非易失性 、 时变性 。

数据仓库处理数据的流程:分析需求确认数据源ETL处理汇总/整合数据建模分析展现

Apache Hive实战基础_第2张图片

 

4.1.3 数据仓库的体系结构

数据仓库的体系结构通常包含4个层次:数据源、数据存储和管理、数据服务以及数据应用

Apache Hive实战基础_第3张图片

 

  • 数据源: 数据仓库的数据来源,包括外部数据、现有业务系统和文档资料等。
  • 数据存储和管理: 为数据提供的存储和管理,包括数据仓库、数据集市、数据仓库监视、运行与维护工具和元数据管理等。
  • 数据服务: 为前端工具和应用提供数据服务,包括直接从数据仓库中获取数据提供给前端使用,或者通过OLAP服务器为前端应用提供更为复杂的数据服务。
  • 数据应用: 直接面向最终用户,包括数据工具、自由报表工具、数据分析工具、数据挖掘工具和各类应用系统。

4.1.4 数据仓库解决的问题

  1. 为业务部门提供准确及时的报表
  2. 为管理人员提供更强的分析能力
  3. 为数据挖掘和知识发现奠定基础

4.1.5 面临的挑战

随着大数据时代的全面到来,传统数据仓库也面临了如下挑战:

  • 无法满足快速增长的海量数据存储需求
  • 无法有效处理不同类型的数据
  • 计算和处理能力不足

4.2 Hive基本概念Apache Hive实战基础_第4张图片

 

4.2.1 概述

Hive是建立在Hadoop之上的一种数仓工具。该工具的功能是将结构化、半结构化的数据文件映射为一张数据库表,基于数据库表,提供了一种类似SQL 的查询模型(HQL),它具有最小的学习曲线,用于访问和分析存储在Hadoop文件中的大型数据集。

Hive本身并不具备存储功能,其核心是将HQL转换为MapReduce程序,然后将程序提交到Hadoop集群中执行。

Apache Hive实战基础_第5张图片

特点:

  1. 提供简单和优化的模型,编码少于MR(提供了类似SQL的查询语言HiveQL,两者都是基于SQL92标准,底层会自动转化为MapReduce),使得精通SQL却不了解Java编程的人也能很好地进行大数据分析;
  2. 灵活性高,可以自定义用户函数(UDF)和存储格式;
  3. Hive支持在不同的计算框架上运行:mapreduce,tez(比MapReduce的性能快了50倍),有超大的数据设计的计算和存储能力,集群扩展容易;
  4. Hive支持在HDFS和HBase上进行临时查询数据。
  5. 用于ETL和BI工具的成熟JDBC和ODBC驱动程序;
  6. 统一的元数据管理,可以presto/impala/sparksql等共享数据;
  7. 执行延迟高,不适合做数据的实时处理,但适合做海量数据的离线处理;

4.2.2 产生背景

Apache Hive实战基础_第6张图片

Hive的产生背景主要有两个:

- 使用成本高: 使用MapReduce直接处理数据时,需要掌握Java等编程语言,学习成本较高,而且使用MapReduce不容易实现复杂查询;

- 建立分析型数仓的需求:Hive支持类SQL的查询以及支持自定义函数,可以作为数据仓库的工具。

Hive利用 HDFS存储数据,使用MapReduce查询分析数据。将SQL转换为MapReduce程序,从而完成对数据的分析决策。

4.2.3 当前Hive的主流版本

选择任何技术的版本要考虑哪些方面:功能,稳定性,可维护性,兼容性

  • 策略:靠考虑不新不九的稳定版本
  • 当前Hive的主流版本有两个
    • hive-1.x 其中使用比较多的是hive-1.2.x的版本,最后一个稳定版本是hive-1.2.2,如果使用这个版本,你的hive将来没法集成spark.
    • hive-2.x 现行主流的hive使用版本,现行稳定的hive-2.x版本中,我们选择使用hive-2.3.6
    • HDP(商业版大数据环境)2.6.3内置的hive为1.2.1

4.2.5 Hive 元数据管理

  • 为了支持schema和数据分区等功能,Hive将元数据保存在关系型数据库中。
  • 默认情况下,hive将元数据保存在关系型数据库中。
    • 基于缺省Derby的非常适合测试
    • 用户之间不共享架构,因为每个用户都有自己的嵌入式Derby实例
    • 存储在metastore_db目录中,该目录位于启动配置单元的目录中
  • 可以轻松切换另一个sql安装,如MySQL,Oracle。
  • 作为Hive的一部分的HCatalog将Hive元数据暴露给其他生态系统。
  • Hive3.0以上的版本,元数据是默认保存在Hbase里面,解决了HA的问题。

4.2.6 Hive体系架构

Apache Hive实战基础_第7张图片

Note:解释一下经常遇到的hiveServer1hiveServer2?早期版本的hiveServer(即hiveServer1)因使用Thrift接口的限制,不能处理多于一个客户端的并发请求,在hive-0.11.0版本中重写了hiveServer代码(hiveServer2),支持了多客户端的并发和认证,并且为开放API客户端如JDBCODBC提供了更好的支持。

  • 用户结构主要有三个:CLI(command line interface)命令行JDBCWeb UI,CLI是开发过程中常用的接口,在hive server2 提供新的命令beeline,使用sqlline语法
  • metaStore:hive的元数据结构描述信息库,可选用不同的关系型数据库来存储,通过配置文件修改、查看数据库配置信息。
  • Driver:解释器、编译器、优化器完成HQL查询语句从语法分析、词法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后由MapReduce调用执行。
  • Hive的数据存储在HDFS中,大部分的查询,计算由MapReduce完成
    • select * from emp;->操作不会执行mapreduce
    • select count(*) from emp; -> 执行mapreduce操作

Hive Interface - CLI 和 Beeline模式的区别

  • 有两种工具:Beeline和命令行(CLI)
  • 有两种模式:命令行模式和交互模式
purpose(作用) HiveServer2 Beeline HiveServer1 CLI
Server Connection beeline -u -n -p hive -h -p
help beeline -h or beeline --help hive -H
Run Query beeline -e beeline -f hive -e hive -f
Define Variable beeline --hivevar key=value hive --hivevar key=value
Enter Mode beeline hive
Connect !connect N/A
List Tables !table show tables;
List Columns !column desc table_name;
Run Query
Save Result !record !record N/A
Run Shell CMD !sh ls !ls;
Run DFS CMD dfs -ls dfs -ls;
Run SQL File !run source;
Check Version !dbinfo !hive --version;
Quit Mode !quit quit;

Purpose HiveServer2 Beeline HiveServer1 CLI

熟悉HDP-Hive环境

Hive Interface – 其他使用环境

Hive Web Interface (As part of Apache Hive)

--进入Hive cli

hive -e :执行指定的SQL语句

hive -f :执行指定的SQL脚本

hive -e "show databases”

echo "show databases" > demo.sql && hive -f demo.sql && rm -f demo.sql

--进入hive beeline

hive --service hiveserver2 开启服务

beeline -u jdbc:hive2://hadoop5:10000/db10 -n root -- 使用beeline连接hive
Copy to clipboardErrorCopied

Hive Interface - 其他使用环境

  • Hive Web Interface(As part of Apache Hive)
  • Hue(Cloudera)
  • Ambari Hive View(hortonworks)
  • Zeppelin - Hive
  • JDBC/ODBC (ETL工具,商业智能工具,集成开发环境)

 

你可能感兴趣的:(hive)