Hadoop基础教程-第11章 Hive:SQL on Hadoop(11.1 Hive 介绍)(草稿)

第11章 Hive:SQL on Hadoop

11.1 Hive 介绍

11.1.1 为什么需要Hive?

Hadoop的出现,正如当年Java语言的出现,得到了极大的关注和广泛应用。Hadoop及其生态圈提供了一个成熟高效的处理大数据的解决方案。然而,一个问题出现:开发人员如何从现有的基于关系数据库的数据架构转移到Hadoop上呢?对于熟悉SQL技术的人员,编写专业的MapReduce程序并非易事。实际上,对于一个简单的问题,在原有关系数据库基础上只需一个简单的SQL语句即可解决,而转移到Hadoop上后需要编写复杂的MapReduce程序。Hive的出现就是来解决这个问题,Hive让那些精通SQL而Java技术相对薄弱的数据分析师能够利用Hadoop进行各种数据分析。

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。 在Hadoop生态圈中还有一个Pig组件,作用与Hive类似,但是Pig提供的不是SQL接口,而是一种叫做Pig Latin的语言接口,增加了学习成本。所以Pig没有Hive这么流行了。

在实际开发中,80%的操作都不会直接由MapReduce程序完成,而是由Hive来完成。所以说Hive实践性、使用频率非常高,不需要高深的理论,只需熟悉SQL即可。掌握Hive对于使用Hadoop来说至关重要。

11.1.2 Hive架构

简单地说,Hive底层存储使用了HDFS,查询语句转变为MapReduce作业。

与Hadoop的HDFS和MapReduce计算框架不同,Hive并不是分布式架构,它独立于集群之外,可以看做一个Hadoop的客户端。我们可以通过CLI(命令行接口)、Web GUI(Web接口)以及Thrift Server提供的JDBC或ODBC方式访问Hive,其中最常用的是命令行接口。 用户通过以上方式向Hive提交查询命令,命令进入Driver模块后进行解释和编译,SQL优化,然后生成执行计划,执行计划将查询分解为若干个MapReduce作业。

11.1.3 Hive特点

Hive 已是目前业界最为通用、廉价的构建大数据时代数据仓库的解决方案。 (1) Hive 最大的特点是 Hive 通过类 SQL 来分析大数据,而避免了写 MapReduce Java 程序来分析 数据,这样使得分析数据更容易。 (2) 数据是存储在 HDFS 上的,Hive 本身并不提供数据的存储功能 (3) Hive 是将数据映射成数据库和一张张的表,库和表的元数据信息一般存在关系型数据库上 (比如 MySQL)。 (4) 数据存储方面:他能够存储很大的数据集,并且对数据完整性、格式要求并不严格。 (5) 数据处理方面:不适用于实时计算和响应,使用于离线分析。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java进阶干货

微服务架构组件分析

服务描述:服务调用首先解决的问题就是服务如何对外描述。 常用的服务描述方式包括 RESTful API、XML 配置以及 IDL 文件三种。

621
来自专栏腾讯大数据的专栏

分布式系统场景注入测试

前言 大数据浪潮下,海量数据处理能力的提升是推动大数据不断前行的基础,海量数据处理的分布式系统应运而生,hdfs、hadoop、spark、storm、MQ等...

2258
来自专栏腾讯BBTeam团队的专栏

服务端频率控制的几种实现方式

对于某一个接口I,请求频率阈值T,假设请求均匀分散到N台服务器上,每台服务器上接口I的频率阈值就是T/N,这样每台机器通过检查接口I的本地请求频率就可以做频率控...

2450
来自专栏IT大咖说

MySQL高可用架构案例篇:UCloud最佳实践

1383
来自专栏JAVA高级架构

微服务架构组件分析

服务描述:服务调用首先解决的问题就是服务如何对外描述。 常用的服务描述方式包括 RESTful API、XML 配置以及 IDL 文件三种。

804
来自专栏后端技术探索

Nginx如何实现高性能和可扩展性

Owen Garrett是Nginx公司的产品总监,他在Nginx的官方博客上发表了一篇博文,说明了是哪些设计决策使得NGINX产品具备一流的性能和扩展能力。

551
来自专栏美团技术团队

【技术博客】Cache应用中的服务过载案例研究

简单地说,过载是外部请求对系统的访问量突然激增,造成请求堆积,服务不可用,最终导致系统崩溃。本文主要分析引入Cache可能造成的服务过载,并讨论相关的预防、恢复...

3005
来自专栏社区的朋友们

TAF 必修课(四):过载保护

经过实习过程中,leader和导师在思维逻辑上的指导,自己再有意识的加以训练,我觉得非常受益。就如这部分的理解,目前就加深了很多。所以说,思维决定行为、行为决定...

5380
来自专栏java达人

KAFKA分布式消息系统

Kafka[1]是linkedin用于日志处理的分布式消息队列,linkedin的日志数据容量大,但对可靠性要求不高,其日志数据主要包括用户行为(登录、浏览、点...

2176
来自专栏IT技术精选文摘

Kafka剖析系列之背景及架构介绍

Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如Cloud...

1925

扫码关注云+社区