Pig安装及测试

时间:2020-12-12 17:26:59
参考 http://pig.apache.org/docs/r0.16.0/start.html http://blog.csdn.net/inkfish/article/details/5205999 http://news.tuxi.com.cn/news/122/1225068.html http://www.infoq.com/cn/articles/apache-tez-saha-murthy
一、安装 #只需在主节点上 1.解压授权 sudo cp pig-0.16.0.tar.gz /usr/local cd /usr/local sudo tar xzf pig-0.16.0.tar.gz mv pig-0.16.0 pig sudo chown -R h:hadoop_group pig
2.配环境变量 sudo gedit ~/.bashrc ############################# export PIG_HOME=/usr/local/pig export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$HIVE_HOME/bin:$ANT_HOME/bin:$PIG_HOME/bin ############################# source  ~/.bashrc
3.测试安装成功 pig --help  打印出正确的东西
二、四种运行模式 1.本地模式    #本地也可以tez 2.MapReduce模式:需要能访问一个Hadoop集群,并且需要装上HDFS。 #tez模式:Tez能够合并多个阶段的过程,直接无须落地,就能进行下一阶段的任务处理  #内存大时能让小猪飞起来
三、调用方式 Grunt shell方式:通过交互的方式,输入命令执行任务; Pig script方式:通过script脚本的方式来运行任务; 嵌入式方式:嵌入java源代码中,通过java调用来运行任务。
四、示例 1.grunt shell #local mode 查看所有用户id号 $mkdir pigtest $cp /etc/passwd ~/pigtest/ $cd ~/pigtest $pig -x local grunt> A = load 'passwd' using PigStorage(':');                #注意:等号前后都有空格,语句必须以分号结束。运行时可能出一堆INFO,INFO和WARN不要紧,只要不是ERROR grunt>  B = foreach A generate $0 as id; grunt> dump B;         #输出B。运行时会出一堆INFO。在末尾可以看到那些id <Hadoop>Pig安装及测试
<Hadoop>Pig安装及测试 grunt> quit; #退出
2.grunt shell#mapreduce mode start-all.sh   #启动hdfs和yarn服务 pig -x mapreduce 继续上一个例子的操作,在dump的时候是要报错的。因为hdfs中没有配置。这个在官方started中有说明。 配置 hdfs位置 sudo gedit ~/.bashrc #################也可以不这样指定,而通过pig/conf中的配置 export PIG_CLASSPATH=$HADOOP_HOME/etc/hadoop ################# source ~/.bashrc $pig     #此时,输入 pig 而完整打入就可以进入mapreduce模式。处在pigtest目录下 #重新输入上一个示例 报错 ERROR 2118: Input path does not exist: hdfs://master/user/h/passwd    #注:h是我的用户名 只是因为hdfs中并没有passwd这个文件 重开一个终端 hadoop fs -mkdir /user hadoop fs -mkdir /user/h hadoop fs -put /etc/passwd /user/h/ #回到grunt终端,上滚到dump B; 回车 报错 INFO:Application state is completed. FinalApplicationStatus=SUCCEEDED. Redirecting to job history server 这是因为在start-all.sh的时候只启动了hdfs和yarn服务而并没启动 hadoop 的history server 进程 重开一个终端,启动这个进程  $   mr-jobhistory-daemon.sh start historyserver   #此时用jps可以看到这个进程了 回到grunt终端,上滚到dump B; 回车 等待15秒后,mapreduce过程完毕,输出和上一个例子一致的结果。

3.使用tez模式加速#未成功 参见  http://doc.okbase.net/qindongliang1922/archive/157359.html 附上guice3.0文件    <Hadoop>Pig安装及测试 配置tez cd  /usr/local/pig/lib/h2 hadoop fs -mkdir /user/tez hadoop fs -put ./* /user/tez gedit /usr/local/hadoop/etc/hadoop/tez-site.xml ################################################指定在hdfs中的路径,也可以把这个xml放在其他路径,但是需要在环境变量  PIG_CLASSPATH 中添加 <configuration>     <property>         <name>tez.lib.uris</name>        <value>/user/tez</value>     </property> </configuration> ################################################# 使用 pig -x tez 遇到问题 Unable to open iterator for alias Final_Events. Backend error : Vertex failed
见此贴 https://issues.apache.org/jira/browse/PIG-4843    和   http://qiita.com/kimutansk/items/35371169e3d7c5022959 #我未能解决,因为反正是要做spark,就不解决tez的问题了,而且tez引擎不够稳定。tez同样适用于hadoop和hive,若要安装tez,请前往 http://tez.apache.org/install.html http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.0.0.2/bk_installing_manually_book/content/rpm-chap-tez-1.html

4.嵌入java运行 嵌入式方式与运行于运行普通java类方式没有任何不同,如:     java -cp .:/opt/hadoop/pig/pig-0.5.0-core.jar Idmapreduce     java -cp .:/opt/hadoop/pig/pig-0.5.0-core.jar Idlocal
5.写成(Batch Mode)脚本作为文件参数传入运行 $gedit test.pig ########################## A = load 'passwd' using PigStorage(':');  -- load the passwd file B = foreach A generate $0 as id;  -- extract the user IDs store B into 'id.out';  -- write the results to a folder name id.out ##########################
$pig -x mapreduce test.pig
$hadoop fs -cat /user/h/id.out/*