【问题标题】:Pig Not Making Any Progress猪没有任何进展
【发布时间】: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


【解决方案1】:

不妨试试:

    A = LOAD '/user/msknapp/county_insurance_pp.txt' USING PigStorage('\t') 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;

【讨论】:

    猜你喜欢
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 2014-12-19
    • 2012-02-19
    • 1970-01-01
    相关资源
    最近更新 更多