在本教程中,我们将讨论 Pig & Hive
Pig简介
在Map Reduce框架,需要的程序将其转化为一系列 Map 和 Reduce阶段。 但是,这不是一种编程模型,它被数据分析所熟悉。因此,为了弥补这一差距,一个抽象概念叫 Pig 建立在 Hadoop 之上。
Pig是一种高级编程语言,分析大数据集非常有用。 Pig 是雅虎努力开发的结果
Pig 使人们能够更专注于分析大量数据集和花更少的时间来写map-reduce程序。
类似猪吃东西,Pig 编程语言的目的是可以在任何类型的数据工作。
Pig 由两部分组成:
-
Pig Latin,这是一种语言
-
运行环境,用于运行PigLatin程序
Pig Latin 程序由一系列操作或变换应用到输入数据,以产生输出。这些操作描述被翻译成可执行到数据流,由 Pig 环境执行。下面,这些转换的结果是一系列的 MapReduce 作业,程序员是不知道的。所以,在某种程度上,Pig 允许程序员关注数据,而不是执行过程。
Pig Latin 是一种相对硬挺的语言,它采用熟悉的关键字来处理数据,例如,Join, Group 和 Filter。
执行模式:
Pig 有两种执行模式:
-
本机模式:在此模式下,Pig 运行在单个JVM,并使用本地文件系统。这种模式只适合使用 Pig 小数据集合分析。
-
Map Reduce模式:在此模式下,写在 Pig Latin 的查询被翻译成MapReduce 作业,并 Hadoop 集群上运行(集群可能是伪或完全分布式的)。 MapReduce 模式完全分布式集群对大型数据集运行 Pig 很有用的。
HIVE 介绍
在某种程度上数据集收集的大小并在行业用于商业智能分析正在增长,它使传统的数据仓库解决方案更加昂贵。HADOOP与MapReduce框架,被用于大型数据集分析的替代解决方案。虽然,Hadoop 地庞大的数据集上工作证明是非常有用的,MapReduce框架是非常低级别并且它需要程序员编写自定义程序,这导致难以维护和重用。 Hive 就是为程序员设计的。
Hive 演变为基于Hadoop的Map-Reduce 框架之上的数据仓库解决方案。
Hive 提供了类似于SQL的声明性语言,叫作:HiveQL, 用于表达的查询。使用 Hive-SQL,用户能够非常容易地进行数据分析。
Hive 引擎编译这些查询到 map-reduce作业中并在 Hadoop 上执行。此外,自定义 map-reduce 脚本,也可以插入查询。Hive运行存储在表中,它由基本数据类型,如数组和映射集合的数据类型的数据。
配置单元带有一个命令行shell接口,可用于创建表并执行查询。
Hive 查询语言是类似于SQL,它支持子查询。通过Hive查询语言,可以使用 MapReduce 跨Hive 表连接。它有类似函数简单的SQL支持- CONCAT, SUBSTR, ROUND 等等, 聚合函数 - SUM, COUNT, MAX etc。它还支持GROUP BY和SORT BY子句。 另外,也可以在配置单元查询语言编写用户定义的功能。
MapReduce,Pig 和 Hive 的比较
Sqoop |
Flume |
HDFS |
Sqoop用于从结构化数据源,例如,RDBMS导入数据 |
Flume 用于移动批量流数据到HDFS |
HDFS使用 Hadoop 生态系统存储数据的分布式文件系统 |
Sqoop具有连接器的体系结构。连接器知道如何连接到相应的数据源并获取数据 |
Flume 有一个基于代理的架构。这里写入代码(这被称为“代理”),这需要处理取出数据 |
HDFS具有分布式体系结构,数据被分布在多个数据节点 |
HDFS 使用 Sqoop 将数据导出到目的地 |
通过零个或更多个通道将数据流给HDFS |
HDFS是用于将数据存储到最终目的地 |
Sqoop数据负载不事件驱动 |
Flume 数据负载可通过事件驱动 |
HDFS存储通过任何方式提供给它的数据 |
为了从结构化数据源导入数据,人们必须只使用Sqoop,因为它的连接器知道如何与结构化数据源进行交互并从中获取数据 |
为了加载流数据,如微博产生的推文。或者登录Web服务器的文件,Flume 应都可以使用。Flume 代理是专门为获取流数据而建立的。 |
HDFS拥有自己的内置shell命令将数据存储。HDFS不能用于导入结构化或流数据 |