Apache Pig体系结构和执行模式

1.目的

在本章中,我们将介绍Apache Pig体系结构。 它实际上是基于Hadoop之上开发的。 此外,我们将看到Apache Hive和Pig Latin数据模型的各种组件。 Apache Pig提供了高级语言。 也会学习运行这个组件的两种模式。

2. Apache Pig体系结构简介

使用Pig分析Hadoop中的数据的语言称为Pig Latin。 它是一种高级数据处理语言。 提供了广泛的数据类型和操作符来执行数据操作。

如果用Pig执行任务,程序员需要使用Pig Latin语言编写Pig脚本。 用支持的任何执行机制执行脚本,例如(Grunt Shell,UDFs,Embedded)。 这些脚本在执行后会经历一系列转换。 然后,Pig产生所需的输出。

Apache Pig将这些脚本转换为许多MapReduce作业。 因此,它使开发人员的工作变得容易。

Apache PIg的组成部分

1542444605679083.png

Components of Apache Pig

Apache Pig架构中有各种组件,使其执行速度更快,如下所述:

分析器 – Parser

所有的Pig脚本都由解析器处理。 解析器基本上检查脚本的语法,是否进行类型检查和其他语法检查等。 之后,Parser的输出将是一个DAG(有向无环图 directed acyclic graph),它代表Pig Latin语句以及逻辑运算符。

脚本的逻辑运算符表示为节点,数据流在DAG中表示为边(逻辑计划 logical plan

优化 – Optimizer

逻辑计划(DAG)被传递给 Optimizer,它进一步进行逻辑优化,如projection和 push down。

编译器 – Compiler

编译器将优化的逻辑计划编译成一系列MapReduce作业。

执行引擎 – Execution Engine

所有MapReduce作业都按排序顺序提交给Hadoop。 最终,它在Hadoop上执行这些MapReduce作业并产生期望的结果。

4.  Pig Latin数据模型

Pig Latin数据模型支持嵌套。 此外,它允许复杂的非原子数据类型,如Map和tuple元组。 下面来详细讨论这个数据模型:

Atom

Atom被定义为Pig Latin中的任何类型的单值 。 基本上,我们可以将它用作字符串和数字, 如int,long,float,double,char数组和字节数组。

例如 – 'Shubham'或'25'

Tuple 元组

元组是由一组有序的字段组成的记录。但是,这些字段可以是任何类型的。另外,元组类似于RDBMS表中的一行。

例如 – (Shubham,25)

Bag

一组无序的元组就是我们所说的Bag。更具体地说,Bag是元组的集合(非唯一)。而且,每个元组可以有任意数量的字段(具有灵活的模式)。一般来说,我们用'{}'代表一个包。

例如 – {(Shubham,25),(Pulkit,35)}

另外,当一个Bag是一个内嵌在另一个Bag 中,就是 inter bag 。

示例 – {Shubham,25,{9826022258,Shubham@gmail.com,}}

Map

一组键值对就是我们所说的Map(或数据Map)。基本上,Key需要是char类型的数组,并且是唯一的。此外,值可能是任何类型。用'[]'来表示Map。

例如 – [名字#Shubham,25岁]

Relation

一组tuple组成的bag就是我们所说的关系。在Pig Latin中,这种关系是无序的。并且,不能保证元组以任何特定的顺序来处理。

5.工作执行流程

开发人员创建脚本, 当开发者提交Pig Script时,它会与Pig Latin Compiler进行交互。 编译器然后分解任务并运行一系列MR作业。 同时,Pig编译器从HDFS中检索数据。 运行MR作业后,输出文件再次进入HDFS。

Pig执行模式

通常情况下,可以在两种执行模式下运行Pig。 模式取决于Pig脚本将要运行的位置。 这也取决于数据所在的位置。 可以将数据存储在单个机器或分布式环境中,如集群。 运行Pig程序在非交互式shell或脚本模式 时, 用户必须创建一个文件,加载代码并执行脚本。 

Pig本地模式

在这种模式下,Pig在单个JVM上执行并访问文件系统。 这种模式更适合处理小数据集。 并行mapper的执行是不可能的。

用户可以提供-x local来进入Pig本地执行模式。 在这种模式下,Pig总是在加载数据时查找本地文件系统路径。

Pig MR 模式

在这种模式下,用户拥有适当的Hadoop集群设置和安装。 默认情况下,Apache Pig以MR模式安装。 Pig还将查询转换为Map reduce作业并在Hadoop集群上运行。 因此,此模式作为MapReduce运行在分布式群集上。

像LOAD,STORE这样的语句从HDFS文件系统读取数据并显示输出。 

存储结果

在MR作业处理过程中生成中间数据。 Pig将这些数据存储在HDFS存储的非永久位置。 

可以使用DUMP将最终结果输出到输出屏幕。 输出结果使用STORE运算符存储。

6,结论

通过提供并行机制并跨集群运行作业,Pig被广泛使用。 Pig Latin为开发人员提供了一个获取分布式数据处理结果的优化技术。

而且,特定的过滤,分组和迭代语法降低了Mapreduce代码的复杂性,使Mapreduce以有效的方式运行。

Apache Pig体系结构和执行模式

发表评论

邮箱地址不会被公开。 必填项已用*标注

四十 八 + = 五十

滚动到顶部