hadoop使用(六)

第1章 引言

1.1 编写目的

介绍pig,一个不得不说的hadoop的扩展。

1.2 什么是pig

Pig是一个基于Hadoop的大规模数据分析平台,它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。Pig为复杂的海量数据并行计算提供了一个简单的操作和编程接口。

1.3 pig的特点

1、专注于于大量数据集分析(ad-hoc analysis , ad-hoc 代表:a solution that has been custom designed for a specific problem );
2、运行在集群的计算架构上,Yahoo Pig 提供了多层抽象,简化并行计算让普通用户使用;这些抽象完成自动把用户请求queries翻译成有效的并行评估计划,然后在物理集群上执行这些计划;
3、提供类似 SQL 的操作语法;
4、开放源代码;

1.4 pig的主要用户

1、yahoo

2、twitter

1.5 关于pig和hive

对于开发人员,直接使用Java APIs可能是乏味或容易出错的,同时也限制了Java程序员在Hadoop上编程的运用灵活性。于是Hadoop提供了两个解决方案,使得Hadoop编程变得更加容易。

•Pig是一种编程语言,它简化了Hadoop常见的工作任务。Pig可加载数据、表达转换数据以及存储最终结果。Pig内置的操作使得半结构化数据变得有意义(如日志文件)。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换。

•Hive在Hadoop中扮演数据仓库的角色。Hive添加数据的结构在HDFS(hive superimposes structure on data in HDFS),并允许使用类似于SQL语法进行数据查询。与Pig一样,Hive的核心功能是可扩展的。

Pig和Hive总是令人困惑的。Hive更适合于数据仓库的任务,Hive主要用于静态的结构以及需要经常分析的工作。Hive与SQL相似促使 其成为Hadoop与其他BI工具结合的理想交集。Pig赋予开发人员在大数据集领域更多的灵活性,并允许开发简洁的脚本用于转换数据流以便嵌入到较大的 应用程序。Pig相比Hive相对轻量,它主要的优势是相比于直接使用Hadoop Java APIs可大幅削减代码量。正因为如此,Pig仍然是吸引大量的软件开发人员。

第2章 安装pig

2.1 下载pig

下载pig的最新版本:

http://www.apache.org/dyn/closer.cgi/pig

我下载的是pig-0.10.0.tar.gz

2.2 安装pig

解压缩

tar zxvf pig-0.10.0.tar.gz

进入目录

cd pig-0.10.0

注意,pig是hadoop的工具,所以不需要修改原hadoop的配置。

将pig加入到环境变量中:

输入

cd ~

进入到用户主目录

vi .bashrc

最下边加入环境变量的配置

保存然后执行

. .bashrc

输入 pig -help进行测试,如果设置成功,则出现如下界面


如果想获取pig的源码,可以使用svn下载

http://svn.apache.org/repos/asf/pig/trunk

2.3 配置hadoop

进入目录$PIG_HOME/conf

修改配置文件,在pig.properties中加入

fs.default.name=hdfs://localhost:9000

mapred.job.tracker=localhost:9001

指向本地伪分布式的hdfs和mapreduce

在本地运行pig

pig -x local

得到如下界面


和hadoop一起运行

直接输入pig或者pig -x mapreduce

有可能出现下面的错误

Cannot find hadoop configurations in classpath (neither hadoop-site.xml nor core-site.xml was found in the classpath).

需要配置~/.bashrc或者/etc/profile,建议配置.bashrc文件,加入

export HADOOP_HOME=/home/hadoop/hadoop-1.0.3

export PIG_CLASSPATH=$HADOOP_HOME/conf

配置完成后可正常进入

第3章 grunt shell

3.1 基本命令

Quit 退出grunt

kill hadoopID 终止正在运行的hadoop进程

set debug on 打开debug级别

使用命令包括:

help,quit,kill jobid,set debug [on|off],set job.name ‘jobname’

文件命令包括:

cat,cd,copyFromLocal,copyToLocal,cp,ls,mkdir,mv,pwd,rm,rmf,exec,run

3.2 查询测试

到安装目录下找到/tutorial/data/excite-sall.log文件,数据分为3列,按制表符分隔,第一列为用户ID,第二列为Unix时间戳,第三列为查询记录。

输入如下语句:

grunt> log = LOAD 'tutorial/data/excite-small.log' AS (user,time,query);

将数据装载到一个称为log的别名中。

查询返回4个元组并显示:

grunt> lmt = LIMIT log 4;

grunt> DUMP lmt;

得到结果:


PIG中的读写操作:

LOAD

从文件装载数据到一个关系

LIMIT

限制元组个数为n

DUMP

显示一个关系的内容,主要用于调试

STORE

将一个关系中的数据存储到一个目录中

输入执行:

grunt> log = LOAD '/home/lgstar888/hadoop/pig-0.10.0/tutorial/data/excite-small.log' AS (user:chararray,time:long,query:chararray);

grunt> grpd = GROUP log BY user;

grunt> cntd = FOREACH grpd GENERATE group,COUNT(log);

grunt> STORE cntd INTO 'output';

用于统计每个用户查询发起的个数

使用grunt> DESCRIBE log;

查看schema

log: {user: chararray,time: long,query: chararray}

pig中的诊断运算符:

DESCRIBE alias;

显示一个关系的schema

EXPLAIN

显示用于计算一个关系的执行计划

ILLUSTRATE alias

逐步显示数据如何被转换

AVG

求平均值

CONCAT

连接两个字符串

COUNT

计算一个包中的元组个数

DIFF

比较一个元组中的两个字段

MAX

计算在一个单列包中的最大值

MIN

计算在一个单列包中的最小值

SIZE

计算元素的个数

SUM

计算在一个单列包中的数值的总和

IsEmpty

检查一个包是否为空

更多的相关的使用与配置已整理到

http://code.google.com/p/mycloub/

时间: 2025-01-21 09:57:28

hadoop使用(六)的相关文章

hadoop教程(六) 2.x的mapreduce过程图解

从业界使用分布式系统的变化趋势和 hadoop 框架的长远发展来看,MapReduce 的 JobTracker/TaskTracker 机制需要大规模的调整来修复它在可扩展性,内存消耗,线程模型,可靠性和性能上的缺陷.在过去的几年中,hadoop 开发团队做了一些 bug 的修复,但是最近这些修复的成本越来越高,这表明对原框架做出改变的难度越来越大. 为从根本上解决旧 MapReduce 框架的性能瓶颈,促进 Hadoop 框架的更长远发展,从 0.23.0 版本开始,Hadoop 的 Map

Ubuntu14.04下安装Hadoop2.5.1 (单机模式)

一.在Ubuntu下创建hadoop组和hadoop用户 1.创建hadoop用户组 sudo addgroup hadoop 2.创建hadoop用户 sudo adduser -ingroup hadoop hadoop 回车后会提示输入新的UNIX密码,这是新建用户hadoop的密码,输入回车即可.如果不输入密码,回车后会重新提示输入密码,即密码不能为空.最后确认信息是否正确,如果没问题,输入 Y,回车即可. 3.为hadoop用户添加权限 输入: sudo gedit /etc/sudo

Hadoop必将风靡2012年的六个理由

毫无疑问,Hadoop已经赢得了大量投资者和IT媒体的青睐,但却很少看到任何的实际产出.即将过去的2011是风暴来袭前的准备阶段,为很多新公司新用户建立了一个海量数据的分析平台.就连微软这样的互联网巨头都已放弃其他平台而选择Hadoop,看来Hadoop风暴来袭已指日可待. 2012年,Hadoop必将风靡世界.以下是六个具体的理由: 1.投资者看好Hadoop 目前,投资者十分看好Hadoop,并开始纷纷投资相关技术.从分布式层面上来说,Hadoop开源软件整体方案供应商Cloudera已获得

如何成功跻身Hadoop人才的六条秘诀

文章讲的是如何成功跻身Hadoop人才的六条秘诀,过去几年以来,市场对大数据相关技能的需求可谓迅猛增长,位于旧金山湾区的Riviera Partners公司技术招聘负责人Matt Andrieux指出."我们的客户名单中大多数是初创公司,他们正在积极寻找各类有能力帮助他们以多种方式发挥数据价值.提升业务基准水平的工程技术人才,"Andrieux在邮件采访的回复中写道."很多公司都会以自身业务为出发点对相关数据进行收集与分析,任何行业都能够借此获得收益." Andri

荐六十款针对Hadoop和大数据顶级开源工具

说到处理大数据的工具,普通的开源解决方案(尤其是Apache Hadoop)堪称中流砥柱.弗雷斯特调研公司的分析师Mike Gualtieri最近预测,在接下来几年,"100%的大公司"会采用Hadoop.Market Research的一份报告预测,到2011年,Hadoop市场会以58%的年复合增长率(CAGR)高速增长:到2020年,市场产值会超过10亿美元.IBM更是非常看好开源大数据工具,派出了3500名研究人员开发Apache Spark,这个工具是Hadoop生态系统的一

hadoop详解(六) HDFS数据完整性

数据完整性 IO操作过程中难免会出现数据丢失或脏数据,数据传输得量越大出错得几率越高.校验 错误最常用得办法就是传输前计算一个校验和,传输后计算一个校验和,两个校验和如果不相同就说明数据存 在错误,比较常用得错误校验码是CRC32. hdfs数据完整性 hdfs写入的时候计算出校验和, 然后每次读的时候再计算校验和.要注意的一点是,hdfs每固定长度就会计算一次校验和,这个值由 io.bytes.per.checksum指定,默认是512字节.因为CRC32是32位即4个字节,这样校验和占用的空

大数据虚拟化零起点(六) 使用CLI创建Apache Hadoop集群

在大数据虚拟化基础运维第五步创建Hadoop集群开始之前,我想先说明,这里我不通过BDE提供的可视化界面来创建集群.原因是,我们之前部署好的vApp包括BDE管理服务器,是通过虚机的方式在运行.此时,它还没能跟vSphereWeb Client进行绑定,从而暂时无法交付可视化管理界面.在之后的博客文章里,我将介绍如何交付可视化界面. 但大家不要担心,BDE管理服务器自身已经提供了完备的对外服务接口(RestAPI),用户只需通过命令行(CLI)的方法操控它,就能开始对Hadoop集群进行快速部署

六个超大规模Hadoop部署案例

据估计,到2015年,全世界一半以上的数据将涉及Hadoop--围绕这个开源平台的生态系统日益庞大,这有力地印证了这个惊人的数字. 然而,有些人表示,虽然Hadoop是眼下热闹非凡的大数据领域最热话题,但它肯定不是可以解决数据中心和数据管理方面所有难题的灵丹妙药.考虑到这一点,我们暂且不想猜测这个平台未来会如何,也不想猜测彻底改变各种数据密集型解决方案的开源技术未来会如何,而是关注让Hadoop越来越火的实际应用案例. 毫无疑问,现在有几个出众的例子,表明Hadoop及相关开源技术(Hive和H

不看不知道:六个超大规模Hadoop部署案例

虽然Hadoop是眼下热闹非凡的大数据领域最热话题,但它肯定不是可以解决数据中心和数据管理方面所有难题的灵丹妙药.考虑到这一点,我们暂且不想猜测这个平台未来会如何,也不想猜测各种数据密集型解决方案的开源技术未来会如何,而是关注让Hadoop越来越火的实际应用案例. 案例之一:eBay的Hadoop环境 eBay分析平台开发小组的Anil Madan讨论了这家拍卖行业的巨擘在如何充分发挥Hadoop平台的强大功能,充分利用每天潮水般涌入的8TB至10TB数据. 虽然eBay只是几年前才开始向生产型