构建在Hadoop之上的数据仓库,数据计算使用MR,数据存储使用HDFS
        由于数据计算使用mapreduce。因此通经常使用于进行离线数据处理
Hive 定义了一种类 SQL 查询语言——HQL
        类似SQL,但不全然同样
可觉得是一个HQL-->MR的语言翻译器。
简单,easy上手

有了Hive,还须要自己写MR程序吗?
        Hive的HQL表达的能力有限
                迭代式算法无法表达
                有些复杂运算用HQL不易表达
        Hive效率较低
                Hive自己主动生成MapReduce作业。通常不够智能;
                HQL调优困难,粒度较粗
                可控性差

Hive各模块组成
        用户接口
                包含 CLI,JDBC/ODBC,WebUI
        元数据存储(metastore)
                默认存储在自带的数据库derby中,线上使用时一般换为MySQL
        驱动器(Driver)
                解释器、编译器、优化器、运行器
        Hadoop
                用 MapReduce 进行计算,用 HDFS 进行存储

Hive部署架构-实验环境


Hive部署架构-生产环境

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="600" alt="" style="border:none">


数据模型

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="600" alt="" style="border:none">

Partition 和Bucket 
Partition
        为降低不必要的暴力数据扫描,能够对表进行分区
        为避免产生过多小文件。建议仅仅对离散字段进行分区
Bucket
        对于值较多的字段,可将其分成若干个Bucket
        可结合Partition与Bucket使用

select语句
        不支持having和exist in操作, 可转换为LEFT SEMI JOIN操作
        Join(仅支持等值连接),不支持非等值的连接

Order by和Sort by 
Order by
        启动一个reduce task
        数据全局有序
        速度可能会很慢
        Strict模式下,必须与limit连用
Sort by
        能够有多个reduce task
        每一个Reduce Task内部数据有序。但全局无序
        通常与distribute by

Distribute by与Cluster by
distribute by
        相当于MapReduce中的paritioner,默认是基于hash实现的;
        与sort by连用,可发挥非常好的作用
cluster by
        当distribute by与sort by(降序)连用,且尾随的字段 同样时,可使用cluster by简写。

用户自己定义函数UDF:扩展HQL能力的一种方式

HQL支持索引吗?
        HQL运行过程主要是并行地暴力扫描。

眼下Hive仅支持单表索引,但提供了索引创建接口和调用方法,可由用户依据须要实现索引结构;

HQL支持update操作吗?
        不支持。Hive底层是HDFS,HDFS仅支持追加操作。不支持随机写;
Skew Data处理机制?
        指定skew 列:CREATE TABLE list_bucket_single (key STRING, value STRING) SKEWED BY (key) ON (1,5,6);
        为skew task分配很多其它资源(TODO)
        将skew task分解成多个task,再合并结果(TODO)

Hive On HBase
使用HQL处理HBase中的数据
        比直接通过HBase API存取数据方便。
        但性能更低,相当于把在线处理转为批处理
存在问题
        不够成熟;
        不能按时间戳获取数据,默认总是取最新的数据

Hive的类似系统
Stinger
        下一代Hive被称为“Stinger”,其底层的计算引擎将由Tez替换MapReduce。
        Tez相比于MapReduce具有众多优势:
                提供了多种算子(比方Map、Shuffle等)供用户使用;
                将多个作业合并成一个作业,降低磁盘读写IO;
                充分利用内存资源。


Shark
        Hive On Spark(http://spark.incubator.apache.org/);
        Spark是一个内存计算框架,相比于MapReduce,效率更加高效(部分測试表明,速度快100x)。
        Shark全然兼容Hive,底层计算引擎採用Spark。


Impala
        底层计算引擎不再採用MR。而是使用与商用并行关系数据库类似的分布式查询引擎;

性能比較

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="900" alt="" style="border:none">





大数据- Hive的更多相关文章

  1. [Hadoop大数据]——Hive初识

    Hive出现的背景 Hadoop提供了大数据的通用解决方案,比如存储提供了Hdfs,计算提供了MapReduce思想.但是想要写出MapReduce算法还是比较繁琐的,对于开发者来说,需要了解底层的h ...

  2. [Hadoop大数据]——Hive连接JOIN用例详解

    SQL里面通常都会用Join来连接两个表,做复杂的关联查询.比如用户表和订单表,能通过join得到某个用户购买的产品:或者某个产品被购买的人群.... Hive也支持这样的操作,而且由于Hive底层运 ...

  3. 大白话详解大数据hive知识点,老刘真的很用心(2)

    前言:老刘不敢说写的有多好,但敢保证尽量用大白话把自己复习的内容详细解释出来,拒绝资料上的生搬硬套,做到有自己的了解! 1. hive知识点(2) 第12点:hive分桶表 hive知识点主要偏实践, ...

  4. 大白话详解大数据hive知识点,老刘真的很用心(3)

    前言:老刘不敢说写的有多好,但敢保证尽量用大白话把自己复习的内容详细解释出来,拒绝资料上的生搬硬套,做到有自己的了解! 1. hive知识点(3) 从这篇文章开始决定进行一些改变,老刘在博客上主要分享 ...

  5. 入门大数据---Hive计算引擎Tez简介和使用

    一.前言 Hive默认计算引擎时MR,为了提高计算速度,我们可以改为Tez引擎.至于为什么提高了计算速度,可以参考下图: 用Hive直接编写MR程序,假设有四个有依赖关系的MR作业,上图中,绿色是Re ...

  6. [Hadoop大数据]——Hive数据的导入导出

    Hive作为大数据环境下的数据仓库工具,支持基于hadoop以sql的方式执行mapreduce的任务,非常适合对大量的数据进行全量的查询分析. 本文主要讲述下hive载cli中如何导入导出数据: 导 ...

  7. 大数据 Hive 简介

    第一部分:Hive简介 什么是Hive •Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. •本质是将SQL转换为MapReduce程序 ...

  8. 入门大数据---Hive是什么?

    这篇文章主要介绍Hive的概念. 简介: Hive中文名叫数据仓库管理系统,之前我们操作MapReduce必须通过编写代码或者通过特殊命令来实现,有了Hive我们通过常用的SQL语句就能操作MapRe ...

  9. 入门大数据---Hive数据查询详解

    一.数据准备 为了演示查询操作,这里需要预先创建三张表,并加载测试数据. 数据文件 emp.txt 和 dept.txt 可以从本仓库的resources 目录下载. 1.1 员工表 -- 建表语句 ...

随机推荐

  1. js插件---图片懒加载lazyload

    js插件---图片懒加载lazyload 一.总结 一句话总结:使用异常简单,src里面放加载的图片,data-original里面放原图片,不懂的位置去官网或者github找API就好. 1.laz ...

  2. 【 正确使用vim编辑器的姿势】

    vi:可视化接口(Visual Interface) vim:是vi的增强版(vi iMprove) vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样 ...

  3. Ubuntu 16.04安装mysql (连接)

    1.安装mysql sudo apt-get install mysql-server 注:若出现依赖问题安装失败,先执行以下命令sudo apt-get install -f 2.安装过程中会输入密 ...

  4. CentOS下部署巡风步骤详解

    本博客已经迁移到新的网站,www.je2se.com,请大家移步关注,互相交流,共同成长 巡风Centos 6.5部署指南 基础环境要求: Python2.7+ 安装Centos相关依赖 # Cent ...

  5. Cocos2d-x游戏的一般验证分析

    Coco2d-x引擎是相对于Unity3D的又一实力派引擎.尽管随着3D游戏的热门,很多其它的厂商偏向于Unity3D.可是Coco2d-x的普及量也不容小觑,特别是一些比較大的手游公司.比方触控科技 ...

  6. 【HDU 4763】Theme Section(KMP)

    这题数据水的一B.直接暴力都能够过. 比赛的时候暴力过的.回头依照正法做了一发. 匹配的时候 失配函数 事实上就是前缀 后缀的匹配长度,之后就是乱搞了. KMP的题可能不会非常直接的出,可是KMP的思 ...

  7. 75.《nodejs开发指南》express4.x版-微博案例完整实现

    转自:https://blog.csdn.net/cgwcgw_/article/details/39317587 完整代码下载 https://github.com/haishangfeie/wei ...

  8. 关于vuex的项目中数据流动方式

    vue的核心是数据驱动,所有数据变更的时机很重要,也就是watch的内容,一般是数据逻辑的操作.在使用vuex的项目中,我们在vuex中只是发请求.拿数据,在视图中来进行逻辑的操作.数据的更新. 1. ...

  9. 【DRF路由】

    在urls.py文件中按照如下步骤写,即可正确使用DRF的内置路由. from .views import BookModel # 1. 导入我们的视图 from rest_framework.rou ...

  10. reboot---重启Linux系统

    reboot命令用来重新启动正在运行的Linux操作系统. 语法 reboot(选项) 选项 -d:重新开机时不把数据写入记录文件/var/tmp/wtmp.本参数具有“-n”参数效果: -f:强制重 ...