数据仓库、Apache hive 入门

Apache Hive 是什么?

Apache Hive是一款建立在Hadoop之上的开源数据仓库系统,可以将存储在Hadoop文件中的结构化、半结构化数据文件映射为一张数据库表,基于表提供了一种类似SQL的查询模型,称为Hive查询语言( HQL),用于访问和分析存储在Hadoop文件中的大型数据集。Hive核心是将HIQL转换为MapReduce程序,然后将程序提交到Hadoop群集执行,Hive由Facebook实现并开源

Hive: 官网:https://hive.apache.org/

Hadoop是什么?

Hadoop是一个由Apache基金会所开发的分布式系统基础架构, 是一个存储系统+计算框架的软件框架。主要解决海量数据存储计算的问题,是大数据技术中的基石。Hadoop以一种可靠、高效、可伸缩的方式进行数据处理,用户可以在不了解分布式底层细节的情况下,开发分布式程序,用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序

Hadoop能解决什么问题
  1. 海量数据存储(HDFS)

    HDFS(Hadoop Distributed File System) 有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(High throughput)来访问数据,适合那些有着超大数据集(large data set)的应用程序,它由n台运行着DataNode的机器组成和1台(另外一个standby)运行NameNode进程一起构成。每个DataNode 管理一部分数据,然后NameNode负责管理整个HDFS 集群的信息(存储元数据)。

  2. 资源管理,调度和分配

    Apache Hadoop YARN(Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统和调度平台,可为上层应用提供统 一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨 大好处。

Hive 与Hadoop 关系

从功能来说,数据仓库软件,至少需要具备下述两种能力:存储数据的能力、分析数据的能力
Apache Hive作为一款大数据时代的数据仓库软件,当然也具备上述两种能力。只不过Hive并不是自己实现了上述两种能力,而是借助Hadoop。Hive利用HDFS存储数据,利用MapReduce查询分析数据,Hive的最大的魅力在于用户专注于编写HQL,Hive帮您转换成为MapReduce程序完成对数据的分析
数据仓库、Apache hive 入门_第1张图片

为什么要用Hive

使用Hadoop MapReduce直接处理数据所面临的问题

  1. 人员学习成本太高需要掌握java语言
  2. MapReduce实现复杂查询逻辑开发难度大大

使用Hive处理数据的好处

  1. 操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)
  2. 避免直接写MapReduce,减少开发人员的学习成本
  3. 支持自定义函数,功能扩展很方便
  4. 背靠Hadoop,擅长存储分析海量数据集

Hive的职责

假设在HDFS 文件系统里 存在着 路径为 /data/china_user.txt 文件,内容如下:

数据仓库、Apache hive 入门_第2张图片

需求: 统计 地址为 shanghai 的用户 ?

JAVA 程序员的做法:

  1. 读取txt 文件内容 、按照分割符 分割 获取数据,读取到集合中 遍历集合统计 或者创建sql 表 存储,并编写sql 语句进行统计

Hive 做法:

1、建立一张表 t_user 表结构如下:

id name age city
1 zhangsan 18 beijing
2 lisi 25 shanghai

2、在hive中能够写sql处理的前提是针对表,而不是针对文件,因此需要将文件和表之间的对应关系描述记录清楚。映射信息专业的叫法称之为元数据信息(元数据是指用来描述数据的数据metadata), 映射信息常存储在关系型数据库中

元数据信息需要记录以下内容:

  1. t_user 表对应着china_user.txt 的路径在哪?(文件位置)

  2. t_user表中,id 、name、age、city 对应着 txt 文件的哪些位置(字段对应关系)

  3. 记录txt 文件中 分隔符是什么?

3、表和文件的映射关系创建成功,用户写完sql之后,hive需要针对sql进行语法校验,并且根据记录的元数据信息解读sql背后的含义,制定执行计划。并且把执行计划转换成MapReduce程序来执行,把执行的结果封装返回给用户
数据仓库、Apache hive 入门_第3张图片

4、Hive 能将HDFS 里的文件映射成一张表,这个映射指的是:文件和数据表的关系

5、Hive 的职责是:将SQL 解析编译成MapReduce 程序

你可能感兴趣的:(大数据,数据仓库,apache,hive)