Hive编程指南:基础知识

一、Hive基础
Hive最适合于数据仓库应用程序,使用该应用程序进行相关的静态数据分析,不需要快速响应给出结果,而且数据本身不会频繁变化

Hive不是一个完整的数据库,hive不支持记录级别的更新、插入或者删除操作。Hadoop是一个面向批处理的系统,而 MapReduce任务(job)的启动过程需要消耗较长的时间,所以hive查询延时比较严重。hive不支持事务

二、MapReduce介绍
MapReduce是一种计算模型,该模型可将大型数据处理任务分解成很多单个的、可以在服务器集群中并行执行的任务。这些任务的计算结果可以合并在一起来计算最终的结果。

两个基本的数据转换操作:Map操作会将集合中的元素从一种形式转换成另一种形式。在这种情况下,输入的键-值对会被转换成零到多个键值对输出。其中,输入和输出的键必须完全不同,而输入和输出的值则可能完全不同。

reduce过程的目的是将值的集合转换成一个值(例如对一组数值求和或求平均值),或者转换成另一个集合。

Hadoop分布式文件系统,每个数据块默认为冗余3份,这样可以保证不会因单个硬盘或服务器的损坏导致数据丢失,数据块的大小通常是64MB或其若干倍,这样可以保证以最少的磁盘寻址次数来进行写入和读取,从而最大化提高读写性能。

三、Hive 与Hadoop的交互
Hive所有的命令和查询都会进入到Driver(驱动模块),通过该模块对输入进行解析编译,对需求的计算进行优化,然后按照指定的步骤执行(通常是启动多个MapReduce任务(job)来执行)。当需要启动job时,hive本身是不会生成Java MapReduce算法程序的。Hive通过一个表示job执行计划的XML文件驱动执行内置的、原生的Mapper和Reducer模块

hive最适合于数据仓库程序,对于数据仓库程序不需要实时响应查询,不需要记录级别的插入、更新和删除。

四、Pig
Pig被描述成一种数据流语言,而不是一种查询语言。在pig中,用户需要写一系列的声明语句来定义某些关系和其他一些关系之间的联系,这里每个新的关系都会执行新的数据转换过程,常用于ETL过程的一部分,也就是将外部数据装载到集群中,然后转换成期望的数据格式

五、Hbase
Hbase是一个分布式的、可伸缩的数据存储,其支持行级别的数据更新、快速查询和行级事务(但不支持多行事务)。
Hbase支持的一个重要特性就是列存储,其中的列可以组成列族。这就使得当查询场景涉及的列只是所有列的一个子集时,读写速度会快得多,因为不需要读取所有的行然后丢弃大部分的列,而是只需读取需要的列。
可以像键-值存储一样来使用HBase,其每一行都使用了一个唯一键来提供非常快的速度读写这一行的列或者列族,还可以按照时间戳来保留不同版本的值,并可以回退到某个版本
Hbase使用HDFS来持久化存储数据

你可能感兴趣的:(Hive编程指南:基础知识)