Hive学习-基础知识

第1章 基础知识

1.1 Hadoop 和 MapReduce 综述

MapReduce 来自于两个基本的数据转换操作:map过程和reduce过程。一个map操作会将集合中的元素从行索引的形式转换成kv对。输入的键是行索引,输出的键是字段名。
在MapReduce计算框架中,某个键的所有键-值对都会分发到同一个reduce操作中。也就是这个键和这个键所对应的所有值都会传递给同一个Reducer。reduce过程的目的是将值的集合转换成一个值(例如对一组数值求和或求平均值),或者转换成另一个集合。这个Reducer最终会产生一个键-值对。
Hadoop将job分解成多个独立的map和reduce任务来执行,会对这些task进行调度并为其分配合适的资源,决定将某个task分配到集群中哪个位置,它会监控每一个task以确保其成功完成,并重启一些失败的task。
Hadoop分布式文件系统(HDFS)管理着集群中的数据。每个数据块(block)都会被冗余多份(默认冗余3份),确保不会因为单个硬盘或服务器损坏导致数据丢失。

1.2 Hadoop生态系统中的Hive

事实上,许多这些底层细节实际上进行的是从一个任务(job)到下个任务(job)的重复性工作。例如,将Maper 和Reducer一同写入某些数据操作构造这样的底层的繁重的工作,通过过滤得到所需数据的操作,以及执行类似SQL中数据集键的连接(JOIN)操作等。
这也就是引入Hive的原因。Hive不仅提供了一个熟悉的SQL的用户所熟悉的编程模型,还消除了大量的通用代码。

1.2.1 Pig

Pig被描述成一种数据流语言,而不是查询语言。在Pig中,用户需要写一系列的声明语句来定义某些关系和其他一些关系之间的联系,这里每个新的关系都会执行新的数据转换过程。Pig会查找这些声明,然后创建一系列有次序的MapReduce的任务(job),来对这些数据进行转换,直到产生符合用户预期的计算方式所得到的最终结果。
Pig常用于ETL(数据抽取、数据转换、数据装载)过程的一部分,也就是将外部数据装载到Hadoop集群中,然后转换成所期望的数据格式。

1.2.2 HBase

如果用户需要Hive无法提供的数据库特性(如行级别的更新,快速的查询响应时间,以及支持事务)就需要使用HBase。
HBase是一个分布式的、可伸缩的数据存储,其支持行级别的数据更新、快速查询和行级事务。HBase 支持的一个重要特性就是列存储,其中的列可以组织成列族。这就使得当查询场景涉及的列只是所有列的一个子集时,读写速度会快得多。

1.2.3 Cascading、Crunch及其他

猜你喜欢

转载自blog.csdn.net/weixin_43387060/article/details/86650534