`

Pig安装配置学习笔记

 
阅读更多

转载请标明出处SpringsSpace: http://springsfeng.iteye.com

 

1. Pig简介
   Pig是Yahoo捐献给apache的一个项目,它是SQL-like语言,是在MapReduce上构建的一种高级

   查询语言,

   把一些运算编译进MapReduce模型的Map和Reduce中,并且用户可以定义自己的功能。这是

   Yahoo开发的又一个克隆Google的项目:Sawzall。
2. Pig 安装
   (1) 确保JDK6已经安装,并且已经export JAVA_HOME;
   (2) 下载最新版pig:0.11.0;
   (3) 解压至/usr/custom/pig-0.11.0;
   (4) 配置环境变量:
   export PIG_HOME=/usr/custom/pig-0.11.0
   export PATH=$PIG_HOME/bin:$PATH

3. 启动
   Pig有两种模式:
   (1) Local Mode, 即本地模式,这种模式下Pig运行在一个JVM里,访问的是本地的文件系统,

   只适合于小规模数据集,一般是用来体验Pig。 而且,它并没有用到Hadoop的Local runner,

   Pig把查询转换为物理的Plan,然后自己去执行。在终端下输入:
   pig -x local
   就可以进入Local模式了。
   (2) Hadoop模式,这种模式下,Pig才真正的把查询转换为相应的MapReduce Jobs,并提交

   到Hadoop集群去运行,集群可以是真实的分布式也可以是伪分布式。要想Pig能认识Hadoop,

   你要告诉它Hadoop的版本以及一些关键daemon的信息(也就是Namenoder的Address和

   Port)。比如,下面这个可以允许Pig连接到任何Hadoop0.20.*上:
   export PIG_HADOOP_VERSION=20

   针对HADOOP2.0.2是:

   export PIG_HADOOP_VERSION=23

  
   接下来,还要指明集群的Namenode的所在。有两种方法,
   一种就是把你Hadoop的conf目录添加到Pig的Classpath上:
   export PIG_CLASSPATH=$HADOOP_HOME/etc/hadoop
   还有一种就是在Pig目录的conf文件夹(可能需要自己创建)里创建一个pig.properties文件,

   然后在里面添加集群的Namenode和Jobtracker的信息:
   fs.defaultFS=hdfs://localhost:9000
   mapred.job.tracker=localhost:900

   建议采用这种方式。

 

   说明:经测试, 在pig-0.11.0版本基于Hadoop-2.0.2-aplha版本时,不需要做上述设置,直

   接执行:

   pig -x mapreduce

   即进入伪分布式下。

   启动:在终端中执行命令:pig
   执行该命令时默认采用Hadoop模式,也可执行:pig -x mapreduce,该命令明确指明进入

   分布式模式下。
4. 使用示例
   (1) 上传文件
   [kevin@linux-fdc bin]$ hadoop fs -mkdir /log

   [kevin@linux-fdc bin]$ hadoop fs -copyFromLocal /usr/custom/pig-0.11.0/tutorial/data

   /excite-small.log /log/excite-small.log
   查看结果:      

   (2) 装载统计
   grunt> log = LOAD '/log/excite-small.log' AS (user:chararray, time:long, query:chararray);
  
grunt> lmt = LIMIT log 4;
  
grunt> DUMP lmt;
  
grunt> grpd = GROUP log BY user;
  
grunt> cntd = FOREACH grpd GENERATE group, COUNT(log);
  
grunt> STORE cntd INTO '/log-output';
  
   查看详细执行步骤:
   grunt> illustrate cntd;

5.异常解决: 针对pig-0.11.0, pig-0.10.1版本。

   直接下载pig-0.10.1.tar.gz和pig-0.11.0.tar.gz按照上述的配置在Hadoop2.0.2上运行时,

   执行DUMP 或STORE命令时将产生异常:  

    解决方法:下面的解决方法是基于pig-0.10.1版本为基础的,pig-0.11.0的解决方案类似。

    (1) cd /${PIG_HOME}

    (2) mv pig-0.10.1-withouthadoop.jar pig-0.10.1-withouthadoop.jar.bak

    (3) mv pig-0.10.1.jar pig-0.10.1.jar.bak

    (4) ant clean jar-withouthadoop -Dhadoopversion=23

    编译完成后将在${PIG_HOME}/build目录下生成:

    pig-0.10.1-SNAPSHOT-core.jar, pig-0.10.1-SNAPSHOT-withouthadoop.jar

    (5) 将上一步生成的两个文件Copy至${PIG_HOME}下,并进行改名:

    pig-0.10.1-SNAPSHOT-core.jar  --> pig-0.10.1.jar

    pig-0.10.1-SNAPSHOT-withouthadoop.jar -->  pig-0.10.1-withouthadoop.jar

    (6) 此时运行"DUMP lmt;" 是,将抛出异常:   
    
     这个问题主要时因为我的笔记本内存较低的原因, 执行: illustrate cntd;  可看见运行结果是正确的:     

  • 大小: 60.5 KB
  • 大小: 112.3 KB
  • 大小: 56.6 KB
  • 大小: 25.1 KB
  • 大小: 51.4 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics