大数据的仓库Hive学习

 10期-崔晓光 2016-06-20  大数据   hadoop   10原文链接

我们接着之前学习的大数据来学习。之前说到了NoSql的HBase数据库以及Hadoop中的HDFS存储系统,可是我们发现这跟我们平时常用的关系型数据库有很大区别,为了使用方便,产生了针对大数据存储的数据仓库Hive。

一、是什么

1、概念

Hive 是一个基于 Hadoop 的开源数据仓库工具,用于存储和处理海量结构化数据。 它把海量数据存储于 hadoop 文件系统,而不是数据库,但提供了一套类数据库的数据存储和处理机制,并采用 HQL (类 SQL )语言对这些数据进行自动化管理和处理。我们可以把 Hive 中海量结构化数据看成一个个的表,而实际上这些数据是分布式存储在 HDFS 中的。 Hive 经过对语句进行解析和转换,最终生成一系列基于 hadoop 的 map/reduce 任务,通过执行这些任务完成数据处理。

2、体系结构

  • hiveserver

hiveserver启动方式:hive –service hiveserver 
HiveServer支持多种连接方式:Thrift、JDBC、ODBC

  • metastore

metastore用来存储hive的元数据信息(表格、数据库定义等),默认情况下是和hive绑定的,部署在同一个JVM中,将元数据存储到Derby中 
      这种方式不好的一点是没有办法为一个Hive开启多个实例(Derby在多个服务实例之间没有办法共享)

Hive提供了增强配置,可将数据库替换成MySql等关系数据库,将存储数据独立出来在多个服务实例之间共享

甚至还可以将metastore Service也独立出来,部署到其他JVM中去,在通过远程调用的方式去访问

3、优缺点

  • 优点
可扩展

Hive可以自由的扩展集群的规模,一般情况下不需要重启服务

延展性

Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数

容错

良好的容错性,节点出现问题SQL仍可完成执行

  • 缺点
不支持记录级别的更新、插入和删除操作

Hive不是一个完整的数据库。Hadoop以及hdfs的设计本身约束和局限性地限制了hive所能胜任的工作。Hive不支持记录级别的更新、插入和删除操作。但是用户可以通过查询生成新表或者将查询结果导入到文件中。

查询延时比较严重

因为Hadoop是一个面向批处理的系统,而mapreduce任务(job)的启动过程需要消耗较长的时间,所以hive查询延时比较严重。传统数据库中在秒级可以完成的查询,在hive中,即时数据集相对较小,往往也需要执行更长的时间。 
由于Hadoop本身的时间开销很大,并且Hadoop所被设计用来处理的数据规模非常大,因此提交查询和返回结果是可能具有非常大的延时的,所以hive并不能满足OLAP的“联机”部分,至少目前并没有满足。如果用户需要对大规模数据使用OLTP功能的话,那么应该选择使用一个NOSQL数据库。例如,和Hadoop结合使用的HBase及Cassandra.

不支持事务

二、相关联系

1、与HBase的关系

Hive是基于Hadoop的一个数据仓库工具,是为简化编写MapReduce程序而生的,Hive十分适合数据仓库的统计分析。 
HBase是一个分布式的、面向列的开源数据库,它是一个适合于非结构化数据存储的数据库。

2、与RDBMS的关系


总结:

今天我们通过对Hive的学习,对大数据的处理又有了一定的认识。在以后的实际操作中,我们去慢慢掌握Hive的使用方法。通过不断学习,达到自己所追求的目标。

 
相关文章推荐:
  • 学习笔记:infobright数据仓库
  • Hive定义、Hive与HBase关系、Hive与RDBMS的关系、数据库与数据仓库的区别
  • hive学习笔记——Hive表中数据的导入和导出
  • 数据仓库的架构
  • HIVE在腾讯分布式数据仓库实践
  • 大数据的仓库Hive原理(三)
  • 数据仓库的模型设计
  • 数据仓库数据挖掘——Data Preprocessing
  • 什么是数据仓库主题
  • 数据仓库工作日记_记录(二)-数据治理下
    • 1、Hive定义

      Hive 是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。

      Hive是一个构建在Hadoop上的数据仓库平台,其设计目标是使Hadoop上的数据操作与传统SQL结合,让
          熟悉SQL编程的开发人员能够轻松向Hadoop平台转移

      Hadoop1.x的项目结构除了核心内容MapReduce和HDFS,还包括Common、Avro、
          Chukwa、Hive、HBase等子项目,它们之间相互提供服务,或在核心层上为更高提供服务

      免费的日志分析工具有:Awstats  Webalizer 页面中嵌入js代码
          日志分析的方式有:Linux Shell脚本、SQL查询、基于Hadoop的日志分析

      2、Hive与HBase关系

      Hive是基于Hadoop的一个数据仓库工具,是为简化编写MapReduce程序而生的,Hive十分适合数据仓库的统计分析
        
      HBase是一个分布式的、面向列的开源数据库,它是一个适合于非结构化数据存储的数据库,列式数据库

      3、Hive与RDBMS的关系

      Hive除了用了和数据库相似的查询语言,再无别的相同点

      4、数据库与数据仓库的区别

      数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策。

      所谓的(1) 面向主题:指数据仓库中的数据是按照一定的主题域进行组织。

      (2)集成:指对原有分散的数据库数据经过系统加工, 整理得到的消除源数据中的不一致性。

      (3)相对稳定:指一旦某个数据进入数据仓库以后只需要定期的加载、刷新。

      (4)反映历史变化:指通过这些信息,对企业的发展历程和未来趋势做出定量分析预测。

      数据仓库建设是一个工程,是一个过程,而不是一种可以购买的产品。企业数据处理方式是以联机事务处理形式信息,并利用信息进行决策;在信息应用过程中管理信息。

      数据仓库的出现,并不是要取代数据库。目前,大部分数据仓库还是用关系数据库管

      理系统来管理的。数据仓库与数据库的主要区别在于:

      (1)数据库是面向事务的设计,数据仓库是面向主题设计的。

      (2)数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。

      (3)数据库设计是尽量避免冗余,数据仓库在设计是有意引入冗余。

      (4)数据库是为捕获数据而设计,数据仓库是为分析数据而设计。

       

hive学习的更多相关文章

  1. Hive学习路线图(转)

    Hadoophivehqlroadmap学习路线图   1 Comment Hive学习路线图 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig ...

  2. 【转】Hive学习路线图

    原文博客出自于:http://blog.fens.me/hadoop-hive-roadmap/ 感谢! Hive学习路线图 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Ha ...

  3. Hive学习之六 《Hive进阶— —hive jdbc》 详解

    接Hive学习五 http://www.cnblogs.com/invban/p/5331159.html 一.配置环境变量 hive jdbc的开发,在开发环境中,配置Java环境变量 修改/etc ...

  4. Hive学习路线图--张丹老师

    前言 Hive是Hadoop家族中一款数据仓库产品,Hive最大的特点就是提供了类SQL的语法,封装了底层的MapReduce过程,让有SQL基础的业务人员,也可以直接利用Hadoop进行大数据的操作 ...

  5. Hive学习 系列博客

    原 Hive作业优化 原 Hive学习六:HIVE日志分析(用户画像) 原 Hive学习五--日志案例分析 原 Hive学习三 原 Hive学习二 原 Hive学习一 博客来源,https://blo ...

  6. hive学习路线

    hive学习路线图:

  7. Hive学习之修改表、分区、列

    Hive学习之修改表.分区.列 https://blog.csdn.net/skywalker_only/article/details/30224309 https://www.cnblogs.co ...

  8. [转帖]Hive学习之路 (一)Hive初识

    Hive学习之路 (一)Hive初识 https://www.cnblogs.com/qingyunzong/p/8707885.html 讨论QQ:1586558083 目录 Hive 简介 什么是 ...

  9. Hive学习目录

    大数据之Hive学习目录 第 1 章 Hive入门 1.1 什么是Hive 1.2 Hive的优缺点 1.2.1 优点 1.2.2 缺点 1.3 *Hive架构原理 1.4 Hive和数据库比较 第 ...

随机推荐

  1. css学习记录

    1 !important 表示此属性需要优先考虑: <head>    <title>Page Title</title>    <style type=&q ...

  2. 为大型网站提速—redis

    一.数据库 1.关系型数据库:Mysql,sqlserver,oracle 2.非关系型数据库(nosql):key-value存储数据库(redis) 列表存储数据库 文档型数据库(MongoDb) ...

  3. MySQL学习记录--分组与聚集

    一.group by 子句 group by 字句可对数据进行分组. 以MySQL5.5的sakila数据库中的film数据表举例:查找出各个电影等级的电影总数 mysql>SELECT rat ...

  4. ubuntu的一些常用命令,测试版本:Ubuntu 12.04.5 LTS

    最近配置了一台Linux服务器,选用的是Ubuntu 12.04.5 LTS版本. 把之前放在Windows Server 2003上的网站移到了现在的服务器上,给我的感受用一个字形容:真JB快! 网 ...

  5. python——Django(ORM连表操作)

    千呼万唤始出来~~~当当当,终于系统讲了django的ORM操作啦!!!这里记录的是django操作数据库表一对多.多对多的表创建及操作.对于操作,我们只记录连表相关的内容,介绍增加数据和查找数据,因 ...

  6. python——线程与多线程基础

    我们之前已经初步了解了进程.线程与协程的概念,现在就来看看python的线程.下面说的都是一个进程里的故事了,暂时忘记进程和协程,先来看一个进程中的线程和多线程.这篇博客将要讲一些单线程与多线程的基础 ...

  7. KMP算法解析(转自图灵社区)

    KMP算法是一个很精妙的字符串算法,个人认为这个算法十分符合编程美学:十分简洁,而又极难理解.笔者算法学的很烂,所以接触到这个算法的时候也是一头雾水,去网上看各种帖子,发现写着各种KMP算法详解的转载 ...

  8. CentOS5.4 搭建Hadoop2.5.2伪分布式环境

    简介: Hadoop是处理大数据的主要工具,其核心部分是HDFS.MapReduce.为了学习的方便,我在虚拟机上搭建了一个伪分布式环境,来进行开发学习. 一.安装前准备: 1)linux服务器:Vm ...

  9. sql server 脚本创建数据库和表

    USE [master] GO IF EXISTS(SELECT 1 FROM sysdatabases WHERE NAME=N'HkTemp') BEGIN DROP DATABASE HkTem ...

  10. iOS_TCP和UDP的详解

    TCP和UDP面试经常被问到,一些初学者也经常问我这种问题,由于TCP协议和UDP协议是基于三次“对话”,解释起来很费劲,所以在这里详细的描述一下自己对TCP协议和UDP协议的理解,如有不妥之处,望指 ...