Pig 是一种探索大规模数据集的脚本语言。MapReducer的一个主要的缺点就是开发的周期太长了。我们要编写mapper和reducer,然后对代码进行编译打出jar包,提交到本地的JVM或者是hadoop的集群上,最后获取结果,这个周期是非常耗时的,即使使用Streaming(它是hadoop的一个工具,用来创建和运行一类特殊的map/reduce作业。所谓的特殊的map/reduce作业可以是可执行文件或脚本本件(python、PHP、c等)。Streaming使用“标准输入”和“标准输出”与我们编写的Map和Reduce进行数据的交换。由此可知,任何能够使用“标准输入”和“标准输出”的编程语言都可以用来编写MapReduce程序)能在这个过程中除去代码的编译和打包的步骤,但是这一个过程还是很耗时,Pig的强大之处就是他只要几行Pig Latin代码就能处理TB级别的数据。Pig提供了多个命令用于检查和处理程序中的数据结构,因此它能很好的支持我们写查询。Pig的一个很有用的特性就是它支持在输入数据中有代表性的一个小的数据集上试运行。所以。我们在处理大的数据集前可以用那一个小的数据集检查我们的程序是不是有错误的。
Pig为大型的数据集的处理提供了更高层次的抽象。MapReducer能够让我们自己定义连续执行的map和reduce函数,但是数据处理往往需要很多的MapReducer过程才能实现,所以将数据处理要求改写成MapReducer模式是很复杂的。和MapReducer相比,Pig提供了更加丰富的数据结构,一般都是多值和嵌套的数据结构。Pig还提供了一套更强大的数据交换操作,包括了MapReducer中被忽视的"join"操作
Pig 被设计为可以扩展的,处理路径上的每一个部分,载入,存储,过滤,分组,连接,都是可以定制的,这些操作都可以使用用户定义函数(user-defined function,UDF)进行修改,这些函数作用于Pig的嵌套数据模型。因此,它们可以在底层与Pig的操作集成,UDF的另外的一个好处是它们比MapReducer程序开发的库更易于重用。
但是。Pig并不适合处理所有的“数据处理”任务。和MapReducer一样,它是为数据批处理而设计的,如果想执行的查询只涉及一个大型数据集的一小部分数据,Pig的实现不是很好,因为它要扫描整个数据集或其中的很大一部分。
Pig包括两部分
1:用于描述数据流的语言,称为Pig Latin(拉丁猪,个人翻译)
2:用于运行PigLatin程序的执行环境。一个是本地的单JVM执行环境,一个就是在hadoop集群上的分布式执行环境。
Pig Latin程序是由一系列的"操作"(operation)或"变换"(transformation)组成。每个操作或变换对输入进行数据处理,然后产生输出的结果。这些操作整体上描述了一个数据流,Pig执行的环境把数据流翻译为可执行的内部表示,并运行它。在Pig的内部,这些变换和操作被转换成一系列的MapReducer,但是我们一般情况下并不知道这些转换是怎么进行的,我们的主要的精力就花在数据上,而不是执行的细节上面。
在有些情况下,Pig的表现不如MapReducer程序。总结为一句就是要么话花大量的时间来优化Java MapReducer程序,要么使用Pig Latin来编写查询确实能节约时间。
相关推荐
同时,这对于本地开发和测试Hadoop应用程序,尤其是那些利用Hadoop生态系统组件(如Hive、Pig、Spark等)的项目来说,是非常关键的步骤。 总的来说,`hadoop-common-2.7.3-bin-master`包含的`hadoop.dll`和`...
Hadoop 3.1.0是Hadoop的主要版本之一,带来了许多改进和新特性。它提升了系统的可扩展性、性能和稳定性,同时增加了对大文件支持、YARN资源调度器优化以及跨命名空间复制等功能。 `winutils.exe`是Hadoop在Windows...
【Hadoop Eclipse Plugin 1.1.2:开启Hadoop在Eclipse中的开发之旅】 Hadoop Eclipse Plugin 1.1.2 是一个专门为Eclipse IDE设计的插件,旨在简化Hadoop应用程序的开发过程。这个插件使得Java开发者能够在熟悉的...
Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce。本压缩包“hadoop-common-2.6.0-bin”是针对Windows平台的Hadoop 2.6.0版本的运行库...
- 多样化的数据处理工具:如Pig、Hive、Spark等,都是基于Hadoop Common构建的,提供了灵活的数据分析选项。 总结来说,Hadoop Common 2.6.0是Hadoop生态系统中的基石,为大数据处理提供了基础服务和工具,包括...
标题 "hadoop-3.3.1-aarch64.tar.gz" 暗示这是一个针对aarch64架构(ARM64)的Hadoop 3.3.1版本的压缩包,适合在运行M1芯片(苹果公司的ARM架构处理器)的Mac系统上使用。Hadoop是一个开源的分布式计算框架,它允许...
1. **项目模板**:插件提供预定义的Hadoop项目模板,帮助开发者快速创建MapReduce或Pig(Hadoop的数据流处理语言)项目。 2. **编辑器支持**:插件包含专门针对Hadoop作业配置文件(如job.xml)和MapReduce程序的...
- **Hadoop的核心功能**:Hadoop提供了一个稳定的基础架构,支持大规模数据的存储和分析。这一体系主要由两部分组成——Hadoop分布式文件系统(HDFS)和MapReduce。 - **HDFS**:负责数据的存储。 - **MapReduce**...
CDH是业界广泛采用的企业级Hadoop发行版,它不仅集成了Hadoop的核心组件,还包含了其他的开源大数据项目,如Hive、Pig、Spark、Impala等,提供了一整套大数据处理和分析解决方案。CDH 5.16.2是CDH系列的一个重要更新...
Hadoop是一款开源的分布式计算框架,由Apache基金会开发,它主要设计用于处理和存储海量数据。这个特定的压缩包文件 "centos6.5-hadoop-2.6.4.tar.gz" 是为在CentOS 6.5操作系统上安装Hadoop 2.6.4版本准备的。本文...
1. **Hadoop Distributed File System (HDFS)**:HDFS是Hadoop的核心组件之一,提供高吞吐量的数据访问。在Hadoop集群中,数据被分块存储在各个节点上,确保数据的冗余和容错性。 2. **MapReduce**:MapReduce是...
CDH是Cloudera提供的一个企业级Hadoop发行版,包含了Hadoop生态系统中的多个组件,如HBase、Hive、Pig、Spark等。CDH 5.14.0是其中的一个稳定版本,集成了当时最新的技术和安全改进,旨在为企业提供更好的性能、管理...
Hadoop不仅仅是一个简单的编程模型或工具,而是一整套解决方案,包括YARN(Yet Another Resource Negotiator)资源调度器,HBase分布式数据库,Hive数据仓库工具,Pig数据分析工具,以及Oozie工作流调度系统等。...
一、Hadoop简介 Hadoop是基于Google的MapReduce编程模型和GFS(Google File System)的开源实现。它的主要目标是提供一种可靠、可扩展的数据处理方式,尤其适合大规模数据集的并行处理。Hadoop由两个主要部分组成:...
Hadoop Common是Apache Hadoop项目的核心组件之一,它提供了Hadoop生态系统中所有其他模块所必需的基础设施和服务。在本文中,我们将深入探讨Hadoop Common 2.7.1版本,解析其重要特性、工作原理以及在实际应用中的...
3. **Hadoop 2.7兼容性**:Hadoop是大数据存储和处理的基础平台,Flink的Hadoop 2.7兼容性意味着它可以无缝集成到Hadoop生态系统中,利用HDFS进行数据存储,并能与其他Hadoop组件(如Hive、Pig等)协同工作。...
Hadoop最初是为Linux操作系统设计的,但在Windows系统上运行Hadoop需要一些额外的工具,其中`winutils.exe`是关键组件之一。这个压缩包可能包含了在Windows 10上配置和操作Hadoop所需的各种文件和配置。 `winutils....
本文将深入探讨Hadoop的核心组件,包括HDFS(Hadoop Distributed File System)和MapReduce,以及与之相关的生态系统。 首先,Hadoop的基石——HDFS,是一种分布式文件系统,旨在处理和存储大量数据。它的设计原则...
除了基本的MapReduce开发,Hadoop Eclipse Plugin还支持Hadoop其他组件的集成,如Pig、Hive等,可以进行多语言编程,如Python、Scala等。此外,通过插件的高级设置,可以调整Job的配置参数,优化作业性能。 总结,...