最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

[综合] 面向Hadoop框架的高级语言: Apache Pig

[复制链接]
跳转到指定楼层
楼主
发表于 2014-9-25 16:14:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Apache Pig是用来处理大规模数据的高级查询语言,配合hadoop使用,可以在处理海量数据时达到事半功倍的效果,比使用Java,C++等语言编写大规模数据处理程序的难度要小N倍,实现同样的效果的代码量也小N倍。Apache Pig为大数据集的处理提供了更高层次的抽象,为mapreduce算法(框架)实现了一套类SQL的数据处理脚本语言的shell脚本,在Pig中称之为Pig Latin,在这套脚本中我们可以对加载出来的数据进行排序、过滤、求和、分组(group by)、关联(Joining),Pig也可以由用户自定义一些函数对数据集进行操作,也就是传说中的UDF(user-defined functions)。
Pig有两种运行模式:Loca模式和MapReduce模式。当Pig在Local模式下运行时,Pig只访问本地一台主机;当Pig在MapReduce模式下运行时,它将访问一个Hadoop集群和HDFS的安装位置。这时,Pig将自动地对这个集群进行分配和回收。因为Pig系统可以自动对MapReduce程序进行优化,所以当用户使用Pig Latin语言进行编程的时候,不必关心程序运行的效率,Pig系统将会自动对程序进行优化,这样可以大了节省编程时间。Pig的Local模式和MapReduce模式都有三种运行方式,分别为:Grunt Shell方式、脚本文件方式和嵌入式程序方式。
Pig是一种编程语言,它简化了Hadoop常见的工作任务。Pig可加载数据、表达转换数据以及存储最终结果。Pig内置的操作使得半结构化数据变得有意义(如日志文件)。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换。
Pig在数据类型上的设计理念总结为一句口号:pig吃任何东西,输入数据可以支持任何格式,pig天生支持那些流行的格式,如制表符分隔的文本文件,用户也可以增加函数支持其他的数据格式文件,pig不需要元数据或者数据的schma,但如果有也可以利用。
Apache Pig基本架构
Pig的实现5个主要部分构成:
  • Pig自己实现的一套框架对输入、输出的人机交互部分的实现,就是Pig Latin 。
  • Zebra是Pig与HDFS/Hadoop的中间层、Zebra是MapReduce作业编写的客户端,Zerbra用结构化的语言实现了对hadoop物理存储元数据的管理也是对Hadoop的数据抽象层,Zebra中有2个核心的类 TableStore(写)/TableLoad(读)对Hadoop上的数据进行操作。
  • Pig中的Streaming主要分为4个组件: 1. Pig Latin 2. 逻辑层(Logical Layer) 3. 物理层(Physical Layer) 4. Streaming具体实现(Implementation),Streaming会创建一个Map/Reduce作业,并把它发送给合适的集群,同时监视这个作业的在集群环境中的整个执行过程。
  • MapReduce在每台机器上进行分布式计算的框架(算法)。
  • HDFS最终存储数据的部分。
与Hive对比
  • Language:在Hive中可以执行 “插入/删除”等操作,但是Pig中我没有发现有可以“插入”数据的方法。
  • Schemas:Hive中至少还有一个“表”的概念,但是Pig中我认为是基本没有表的概念,所谓的表建立在Pig Latin脚本中,对与Pig更不要提metadata了。
  • Partitions:Pig中没有表的概念,所以说到分区对于Pig来说基本免谈,如果跟Hive说“分区”(Partition)他还是能明白的。
  • Server:Hive可以依托于Thrift启动一个服务器,提供远程调用。Pig没有发现有这样的功能。
  • Shell:在Pig 你可以执行一些个 ls 、cat 这样很经典、很cool的命令,但是在使用Hive的时候我压根就没有想过有这样的需求。
  • Web Interface:Hive有,Pig无
  • JDBC/ODBC:Pig无,Hive有
Pig的应用场景
  • 数据查询只面向相关技术人员
  • 即时性的数据处理需求,这样可以通过pig很快写一个脚本开始运行处理,而不需要创建表等相关的事先准备工作。
Pig包括:
  • Pig Latin, 类SQL数据处理语言
  • 在Hadoop上运行的Pig Latin执行引擎,将pig脚本转换为map-reduce程序在hadoop集群运行
Pig的优点:
  • 编码简单
  • 对常见的操作充分优化
  • 可扩展。自定义UDF
Pig主要用户
  • Yahoo!: 90%以上的MapReduce作业是Pig生成的
  • Twitter: 80%以上的MapReduce作业是Pig生成的
  • Linkedin: 大部分的MapReduce作业是Pig生成的
  • 其他主要用户: Salesforce, Nokia, AOL, comScore
Pig的主要开发者
  • Hortonworks
  • Twitter
  • Yahoo!
  • Cloudera
Pig工具
  • Piggybank(Pig官方函数库)
  • Elephant bird: Twitter的Pig函数库
  • DataFu: Linkedin的Pig函数库
  • Ambros: Twitter的Pig作业监控系统
  • Mortardata: 基于云的Pig集群管理系统
Pig定位
Pig Latin语言和传统的数据库语言很相似,但是Pig Latin更侧重于数据查询。而不是对数据进行修改和删除等操作。pig语句通常按照如下的格式来编写。
  • 通过LOAD语句从文件系统读取数据
  • 通过一系列”转换”语句对数据进行处理
  • 通过一条STORE语句把处理结果输出到文件系统中,或者使用DUMP语句把处理结果输出到屏幕上。
LOAD和STORE语句有严格的语法规定。关键是灵活使用转换语句对数据进行处理。
Pig Latin的特性:
  • 易于编程。实现简单的和高度并行的数据分析任务非常容易。
  • 自动优化。任务编码的方式允许系统自动去优化执行过程,从而使用户能够专注于逻辑,而非效率。
  • 可扩展性,用户可以轻松编写自己的函数用于特殊用途的处理。
Pig Latin 程序有一系列的 operation 和 transformation 组成。每个操作或变换对输入进行数据处理,然后产生输出结果。这些操作整体上描述了一个数据流。Pig 内部,这些变换操作被转换成一系列的 MapReduce 作业。Pig 不适合所有的数据处理任务,和 MapReduce 一样,它是为数据批处理而设计的。如果只想查询大数据集中的一小部分数据,Pig 的实现不会很好,因为它要扫描整个数据集或绝大部分。
参考资料


楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-26 10:31

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表