Hive-简介入门

Hive简介

Hive最初是Facebook为了满足对海量社交网络数据的管理和机器学习的需求而产生和发展的。互联网现在进入了大数据时代,大数据是现在互联网的趋势,而hadoop就是大数据时代里的核心技术,但是hadoop的mapreduce操作专业性太强,所以facebook在这些基础上开发了hive框架,毕竟世界上会sql的人比会java的人多的多,hive可以说是学习hadoop相关技术的一个突破口。那么,hive是什么呢?

一、概述

Hive是建立在 Hadoop 上的数据仓库基础构架。

它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。

Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。可以将SQL 查询转换为MapReduce 的job 在Hadoop集群上执行。

简单的说:hive是基于hadoop的数据仓库。那么为什么说hive是基于Hadoop的呢?

之所以说hive是构建在Hadoop之上的数据仓库,简单的说是因为:

  1. 数据存储在hdfs上
  2. 数据计算用mapreduce

二、Hive常见的应用场景

1、日志分析:大部分互联网公司使用hive进行日志分析,包括百度、淘宝等。

  • 统计网站一个时间段内的pv、uv
  • 多维度数据分析

2、海量结构化数据离线分析

三、Hive的特点(优缺点)

1、hive的优点

1)、简单容易上手:提供了类SQL查询语言HQL

2)、可扩展:为超大数据集设计了计算/扩展能力(MR作为计算引擎,HDFS作为存储系统)

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

3)、提供统一的元数据管理

4)、延展性:Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数

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

2、hive的缺点(局限性)

1)、hive的HQL表达能力有限

  • 迭代式算法无法表达,比如pagerank
  • 数据挖掘方面,比如kmeans

2)、hive的效率比较低

  • hive自动生成的mapreduce作业,通常情况下不够智能化
  • hive调优比较困难,粒度较粗
  • hive可控性差

四、Hive和数据库的异同

由于Hive采用了SQL的查询语言HQL,因此很容易将Hive理解为数据库。其实从结构上来看,Hive和数据库除了拥有类似的查询语言,再无类似之处。数据库可以用在Online的应用中,但是Hive是为数据仓库而设计的,清楚这一点,有助于从应用角度理解Hive的特性。

Hive和数据库的比较如下表:

img

MapReduce 开发人员可以把自己写的 Mapper 和 Reducer 作为插件支持 Hive 做更复杂的数据分析。 它与关系型数据库的 SQL 略有不同,但支持了绝大多数的语句(如 DDL、DML)以及常见的聚合函数、连接查询、条件查询等操作。

Hive 不适合用于联机(online) 事务处理,也不提供实时查询功能。它最适合应用在基于大量不可变数据的批处理作业。Hive的特点是可
伸缩(在Hadoop 的集群上动态的添加设备),可扩展、容错、输入格式的松散耦合。Hive 的入口是DRIVER ,执行的SQL
语句首先提交到 DRIVER 驱动,然后调用 COMPILER 解释驱动, 最终解释成 MapReduce 任务执行,最后将结果返回。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/535742.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hive-原理解析

一、Hive 架构 下面是Hive的架构图。 Hive的体系结构可以分为以下几部分 1、用户接口:CLI(hive shell);JDBC(java访问Hive);WEBUI(浏览器访问Hive) 2、元数据&#x…

linux命令之history命令

在Linux系统上输入命令并按下Enter后,这个命令就会存放在命令记录表 ( ~/.bash_history )中,预定的记录为1000条,这些都定义在环境变量中。列出所有的历史记录:#history 只列出最近10条记录:#history 10 (注,history和…

Hive-配置安装

一、HDFS安装 1、解压到指定位置tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /usr/local/apps/ 2、改名mv apache-hive-3.1.2-bin/ hive-3.1.2 3、在conf目录下添加Hadoop安装路径mv hive-env.sh.template hive-env.sh # 配置HADOOP_HOME路径 export HADOOP_HOME/opt/module/…

linux文件系统概念目录结构

文件系统概念一. 文件与目录的定义1. 文件系统:它是磁盘上有特定格式的一片区域,操作系统通过文件系统可以方便地查寻和访问其中所包含的磁盘块;2. 文件:文件系统中存储数据的一个命名的对象。3. 目录:其中包含许多文件…

JDK源码解析之 java.lang.Class

Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识。 这项信息纪录了每个对象所属的类。虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类。Class类封装一个对象和接口运行时的状态&#xff…

Linux Vi常用技巧

VI常用技巧VI命令可以说是Unix/Linux世界里最常用的编辑文件的命令了,但是因为它的命令集众多,很多人都不习惯使用它,其实您只需要掌握基本命令,然后加以灵活运用,就会发现它的优势,并会逐渐喜欢使用这种方…

JDK源码解析之 java.lang.ClassLoader

Class代表它的作用对象是类&#xff0c;Loader代表它的功能是加载&#xff0c;那么ClassLoader就是把一个以.class结尾的文件以JVM能识别的存储形式加载到内存中。 一、核心方法 1、loadClass方法 protected Class<?> loadClass(String name, boolean resolve) throws…

Linux Vi的使用

一、插入文本┌──┬────────────┐│命令│描述 │├──┼────────────┤│i │在当前字符前插入文本 │├──┼────────────┤│I │在行首插入文本 │├──┼────────────┤│a │在当前字符后添加文本 │├──┼──…

Hive-beeline服务

Hive客户端工具后续使用了Beeline 替代HiveCLI &#xff0c;并且后续版本也会废弃掉HiveCLI 客户端工具,Beeline是 Hive 0.11版本引入的新命令行客户端工具,它是基于SQLLine CLI的JDBC客户端。 Beeline支持嵌入模式(embedded mode)和远程模式(remote mode)。在嵌入式模式下&am…

用户账号管理基本概念

什么是用户账号管理用户账号一般包括普通用户账号、管理账号和系统账号。为了鉴别用户身份以及加强系统安全&#xff0c;系统为每个使用它的人分配了一个账号&#xff0c;这就是普通用户账号。每个人拥有一个独立的普通用户账号&#xff0c;每个账号有不同的用户名和密码。用户…

JDK源码解析之 Java.lang.Compiler

Compiler类提供支持Java到本机代码编译器和相关服务。在设计上&#xff0c;它作为一个占位符在JIT编译器实现。 一、源码部分 public final class Compiler {private Compiler() {} // dont make instancesprivate static native void initialize();private st…

shell的基本概念

Shell就像一个壳层&#xff0c;这个壳层介于用户和操作系统之间&#xff0c;负责将用户的命令解释为操作系统可以接收的低级语言&#xff0c;并将操作系统响应的信息以用户可以了解的方式来显示。 从用户登陆到注销期间&#xff0c;用户输入的每个命令都会经过解译及…

JDK源码解析之 java.lang.System

一个和系统环境进行交互的类. System不允许被实例化, 而且是一个final类 一、不能实例化 private System() { }二、成员变量 public final static InputStream in null; //这是“标准”输入流。 public final static PrintStream out null; //这是“标准”输出流。 public …

详解MySQL中DROP,TRUNCATE 和DELETE的区别

注意:这里说的delete是指不带where子句的delete语句 相同点: truncate和不带where子句的delete, 以及drop都会删除表内的数据 不同点: 1. truncate和 delete只删除数据不删除表的结构(定义) drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index…

JDK源码解析之 Java.lang.Package

如果我们在Class对象上调用getPackage方法&#xff0c;就可以得到描述该类所在包的Package对象(Package类是在java.lang中定义的)。我们也可以用包名通过调用静态方法getPackage或者调用静态方法getPackages(该方法返回由系统中所有已知包构成的数组)来获得Package对象。getNam…

Mysql中limit的用法详解

在我们使用查询语句的时候&#xff0c;经常要返回前几条或者中间某几行数据&#xff0c;这个时候怎么办呢&#xff1f;不用担心&#xff0c;mysql已经为我们提供了这样一个功能。SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于强制 SE…

Docker入门-简介

独具魅力的Docker作为一门新技术&#xff0c;它的出现有可能引起其所在领域大范围的波动甚至是重新洗牌。根据业内专业人士的看法&#xff0c;不论如何&#xff0c;Docker的出现&#xff0c;已经成为云服务市场中一枚极具意义的战略性棋子。从2013年开始在国内发力&#xff0c;…

Mysql中limit的优化

在一些情况中&#xff0c;当你使用LIMIT row_count而不使用HAVING时&#xff0c;MySQL将以不同方式处理查询。 如果你用LIMIT只选择一些行&#xff0c;当MySQL选择做完整的表扫描时&#xff0c;它将在一些情况下使用索引。 如果你使用LIMIT row_count与ORD…

Docker入门-架构

Docker 包括三个基本概念: 镜像&#xff08;Image&#xff09;&#xff1a;Docker 镜像&#xff08;Image&#xff09;&#xff0c;就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。容器&#xff08;Cont…

MYSQL出错代码列表大全(中文)

mysql出错了,以前往往靠猜.现在有了这张表,一查就出来了. 1005&#xff1a;创建表失败1006&#xff1a;创建数据库失败1007&#xff1a;数据库已存在&#xff0c;创建数据库失败1008&#xff1a;数据库不存在&#xff0c;删除数据库失败1009&#xff1a;不能删除数据库文件导致…