vlambda博客
学习文章列表

大数据7|Hive数据仓库

大数据7|Hive数据仓库
大数据7|Hive数据仓库

数据仓库Data Warehouse

  1. 数据仓库:

    1. 面向主题Subject Oriented

    2. 集成integrated

    3. 相对稳定non-volatile

    4. 反映历史变化Time Variant

  2. 用于:

    1. 管理决策(企业)OLTP多维数据分析

  3. 特点

    1. 相对稳定

    2. 只读

    3. 基本保留全部历史数据

  4. 传统数据仓库无法满足

    1. 快速增长的海量数据存储需求

    2. 处理不同类型数据

    3. 计算能力不足

大数据7|Hive数据仓库
大数据7|Hive数据仓库

Hive简介

  1. hive

    1. facebook开发

    2. 贡献给了apache

    3. 因为基于oracle的数据仓库无法满足

  2. hive数据仓库工具

    1. 构建在hadoop顶层

    2. 支持大规模数据存储,分析,拓展性好

    3. 可视为用户编程接口--提供编程语言

    4. 本身不存储,处理数据

  3. hive借鉴sql语言设计新的查询语言hiveQL

    1. 编写HiveQL可运行MapReduce任务

    2. 容易把原构建在关系数据库上的数据仓库应用程序移植到Hadoop

    3. 很直观的数据分析工具

  4. hive显著特点1-采用批处理处理

    1. HiveQL语句转成MapReduce任务运行

    2. 存储的是静态数据,数据变化不频繁

  5. 特点2-有对数据提取,转化,加载ETL工具

    1. 满足数据仓库各类应用场景

  6. 与hbase互补,满足实时交互

  7. 缺点

    1. 只支持批量导入

    2. 不支持更新(只读)因为hdfs

    3. 分钟级响应海量数据

    4. 依赖hadoop,有其对应缺点

大数据7|Hive数据仓库
大数据7|Hive数据仓库
  1. hbase交互性,实时性

  2. mahout部署了数据挖掘,机器学习算法。

大数据7|Hive数据仓库
大数据7|Hive数据仓库

HBase架构

  1. 3个核心模块

    1. 对外访问接口

    2. 驱动模块

    3. 元数据存储模块

  2. Qubole

    1. 直接作为服务提供给用户

    2. 不需要再企业部署数据仓库,可直接用亚马逊AWS云平台远程属于数据仓库

    3. 整个数据仓库集群管理让亚马逊来

大数据7|Hive数据仓库
大数据7|Hive数据仓库
  1. 在实际应用中,Hive也暴露出不稳定的问题

  2. 解决方案:Hive HA(High Availability)

    1. 高可用性hive解决方案

    2. Hive实例被纳入到一个资源池中,并由HAProxy提供一个统一的对外接口

    3. 对编程人员透明

大数据7|Hive数据仓库
大数据7|Hive数据仓库

Hive工作原理

  1. hive本身不做具体数据处理和存储

  2. 把sql转给MapReduce作业

  3. 过程

    1. 编写map处理逻辑

    2. a输入关系数据库表

    3. 通过map对数据转换

  4. 用户向Hive输入命令,Hive需要与Hadoop交互工作来完成该操作:

    1. 驱动模块接收该命令或查询编译器

    2. 对该命令解析编译

    3. 优化器对该命令进行优化计算

    4. 通过执行器执行

大数据7|Hive数据仓库
大数据7|Hive数据仓库
大数据7|Hive数据仓库
  1. 驱动模块:sql抽象为树

  2. 树→查询块

  3. 逻辑查询

  4. 优化,合并,减少MapReduce数量

  5. 执行器执行

大数据7|Hive数据仓库
  1. 网关机主要是远程操作和管理节点上的JobTracker通信来执行任务

  2. XML文件驱动模块

大数据7|Hive数据仓库

Impala

大数据7|Hive数据仓库
大数据7|Hive数据仓库
  1. Cloudera公司开发

  2. 提供SQL语义,能查询存储在Hadoop的HDFS和HBase上的PB级大数据,在性能上比Hive高出3~30倍

  3. 运行需要依赖于Hive的元数据

  4. 可以直接与HDFS和HBase进行交互查询【不需要转化为MapReduce任务

  5. 和Hive采用相同的SQL语法、ODBC驱动程序和用户接口

大数据7|Hive数据仓库
大数据7|Hive数据仓库
  1. 和Hive、HDFS、HBase等统一部署在一个Hadoop平台上的

  2. 虚线是Impala,实线是hadoop其他组件

  3. 三部分组成

大数据7|Hive数据仓库
大数据7|Hive数据仓库
大数据7|Hive数据仓库

Impala查询过程

大数据7|Hive数据仓库
  1. hive与impala不同

    1. hive批量处理

    2. impala实时交互sql查询

    3. hive依赖MapReduce

    4. impala生成执行树下发任务

    5. hive可用外存

    6. impala不会用外存,快但查询受限

  2. hive和impala相同点

    1. 相同的存储数据池,都支持把数据存储于HDFS和HBase中

    2. 相同的元数据

    3. 对SQL的解释处理比较相似

  3. 总结

    1. Impala的目的不在于替换现有的MapReduce工具

    2. 二者配合使用效果最佳

    3. Hive先进行数据转换处理,之后再使用Impala在Hive处理后的结果数据集上进行快速的数据分析

大数据7|Hive数据仓库
大数据7|Hive数据仓库

hive编程实践

大数据7|Hive数据仓库
大数据7|Hive数据仓库
大数据7|Hive数据仓库
  1. Hive有三种运行模式,单机模式、伪分布式模式、分布式模式。

    1. 均是通过修改hive-site.xml文件实现,如果文件不存在,可参考$HIVE_HOME/conf目录下的hive-default.xml.template文件新建。

  2. create database hive;等

大数据7|Hive数据仓库
大数据7|Hive数据仓库
大数据7|Hive数据仓库
  1. Hive中编程实现WordCount算法

  2. 在MapReduce中的编程实现和Hive中编程实现的主要不同点:

    1. Hive代码量较少

    2. 在MapReduce需要编译生成jar文件来执行算法,而在Hive中不需要

    3. HiveQL语句的最终实现需要转换为MapReduce任务来执行,这都是由Hive框架自动完成的,用户不需要了解具体实现细节

大数据7|Hive数据仓库
大数据7|Hive数据仓库

小总结

  1. Hive是构建于Hadoop顶层的数据仓库工具,主要用于对存储在 Hadoop 文件中的数据集进行数据整理、特殊查询和分析处理。

  2. Hive在某种程度上可以看作是用户编程接口,本身不存储和处理数据,依赖HDFS存储数据,依赖MapReduce处理数据。

  3. Hive支持使用自身提供的命令行CLI、简单网页HWI访问方式,及通过Karmasphere、Hue、Qubole等工具的外部访问。

  4. Hive在数据仓库中的具体应用中,主要用于报表中心的报表分析统计上。在Hadoop集群上构建的数据仓库由多个Hive进行管理,具体实现采用Hive HA原理的方式,实现一台超强“hive"。

  5. Impala作为新一代开源大数据分析引擎,支持实时计算,并在性能上比Hive高出3~30倍,甚至在将来的某一天可能会超过Hive的使用率而成为Hadoop上最流行的实时计算平台。

  6. 以单词统计为例,介绍了如何使用Hive进行简单编程。

排版|悠闲是蓝蓝

文案|悠闲是蓝蓝呀


谦虚,低调,棒槌优越感