【发布时间】:2014-01-05 23:25:55
【问题描述】:
我刚刚写了我的第一个猪脚本,它似乎没有任何进展。一些背景资料:
我在 CentOS 6.4 虚拟机上运行 CDH4.5,全部从 Cloudera 的 yum 存储库安装。它被配置为全部以伪分布式模式运行。一切都作为服务运行并且似乎配置正确(感谢上帝!)
这是我的猪脚本:
A = LOAD '/user/msknapp/county_insurance_pp.txt' AS (fips:int,st:chararray,stfips:int,name:chararray,a:int,b:int,c:int,d:int,e:int,f:int,g:int);
DUMP A;
输入文件取自 data.gov,它是一些保险数据。我对其进行了预处理,这里有一些有用的信息:
[msknapp@localhost data]$ cat county_insurance_pp.txt | grep BUTLER
1013 AL 1 BUTLER 54480 129 3287 57895
19023 IA 19 BUTLER 27291 29659 3386 25150 85486
20015 KS 20 BUTLER 233855 10028 456 29278 5759 279376
21031 KY 21 BUTLER 4164 453 4617
29023 MO 29 BUTLER 48240 5217 738 2042 25081 81317
31023 NE 31 BUTLER 4406 153 609 5168
39017 OH 39 BUTLER 856205 103041 3854 38648 203328 19832 1224910
42019 PA 42 BUTLER 1072941 19131 190 60648 68692 50230 1271832
[msknapp@localhost data]$ hadoop fs -cat /user/msknapp/county_insurance_pp.txt | head
1001 AL 1 AUTAUGA 215624 37156 46 130 53237 140420 446614
1003 AL 1 BALDWIN 1060297 95925 3284 31096 99241 200581 1490424
1005 AL 1 BARBOUR 37893 132 246 811 39082
1007 AL 1 BIBB 3127 70 241 34403 37841
1009 AL 1 BLOUNT 32311 135 11884 19392 4200 67922
1011 AL 1 BULLOCK 4301 336 274 186 5098
1013 AL 1 BUTLER 54480 129 3287 57895
1015 AL 1 CALHOUN 469959 92702 5373 2130 17069 532033 1119265
1017 AL 1 CHAMBERS 37238 3189 292 1953 42672
1019 AL 1 CHEROKEE 37984 190 117 1081 1277 40649
cat: Unable to write to output stream.
当我在命令行上运行 pig 脚本时,我得到一大堆日志语句,看起来它正在运行,但是一旦启动,无论我等待多长时间,它都不会取得任何进展。这是最后几行:
2014-01-05 15:10:41,113 [JobControl] INFO org.apache.hadoop.mapreduce.JobSubmitter - Submitting tokens for job: job_1388936205793_0006
2014-01-05 15:10:41,511 [JobControl] INFO org.apache.hadoop.yarn.client.YarnClientImpl - Submitted application application_1388936205793_0006 to ResourceManager at /0.0.0.0:8032
2014-01-05 15:10:41,564 [JobControl] INFO org.apache.hadoop.mapreduce.Job - The url to track the job: http://localhost:8088/proxy/application_1388936205793_0006/
2014-01-05 15:10:41,653 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 0% complete
我修改了 pig 脚本以指向我的本地文件系统文件,并在本地模式下运行 pig 脚本,工作在几秒钟内成功完成。该文件的本地副本与 hdfs 的副本相同。我认为由于某种原因 pig 无法与我的 HDFS 建立稳固的连接。
有人能告诉我我做错了什么吗?
【问题讨论】:
-
可以在监控页面查看作业吗?那里可能有一些线索。页面网址在您的日志中,例如
2014-01-05 15:10:41,564 [JobControl] INFO org.apache.hadoop.mapreduce.Job - The url to track the job: http://localhost:8088/proxy/application_1388936205793_0006/ -
当我转到该页面时,它显示“请求的应用程序似乎尚未运行,并且尚未设置跟踪 URL。”不管我等多久,它仍然这么说。
-
这意味着 Pig 无法提交 MapReduce 作业。你能检查一下猪的日志吗?
-
猪日志不存在。我使用 cloudera 的 RPM 安装了 pig,没有专门用于 pig 的日志目录。控制台输出显示它正在将错误消息记录到 /home/msknapp/data/pig_1288978317277.log,并且该文件不存在。过去当我遇到错误时,会创建该日志文件,但现在没有创建它。我检查了大约六个不同的 hadoop 日志,没有看到任何错误。
-
这可能是我本地文件系统的权限问题吗?我知道 pig 为 M/R 制作了一个定制的罐子,但我不知道它试图将它存储在哪里。它肯定不在我运行应用程序的目录中,日志说它构建了 Job3010454826775377909.jar,但我找不到它。也许该文件是使用错误的权限创建的,或者放在我的用户无法写入的目录中。你知道猪试图把那个罐子写到哪里吗?以及它分配给它的权限是什么?
标签: hadoop apache-pig