hadoop - 在 AWS EMR 上用 Lipstick 运行 Pig

标签 hadoop amazon-web-services apache-pig elastic-map-reduce netflix

我正在使用 script-runner.jar 运行 AWS EMR Pig 作业,如下所述:http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-hadoop-script.html

现在,我想连接 Netflix 的 Lipstick 来监控我的脚本。我设置了服务器,并在此处的 wiki 中:https://github.com/Netflix/Lipstick/wiki/Getting-Started我不太清楚如何执行最后一步:

hadoop jar lipstick-console-[version].jar -Dlipstick.server.url=http://$LIPSTICK_URL

我应该用这个替换 script-runner.jar 吗?

此外,在遵循 wiki 中的构建过程后,我最终得到了 3 个不同的控制台 jar:

lipstick-console-0.6-SNAPSHOT.jar
lipstick-console-0.6-SNAPSHOT-withHadoop.jar
lipstick-console-0.6-SNAPSHOT-withPig.jar

后两个jar的作用是什么?

更新:

我认为我正在取得进步,但它似乎仍然不起作用。

  1. 我按照说明设置了 pig.notification.listener 参数 here和口红服务器网址。在 EMR 中有不止一种方法可以做到这一点。由于我使用的是 ruby​​ API,因此我必须指定一个步骤

    hadoop_jar_step:
      jar: 's3://elasticmapreduce/libs/script-runner/script-runner.jar'
      properties: 
        - pig.notification.listener.arg: com.netflix.lipstick.listeners.LipstickPPNL
        - lipstick.server.url: http://pig_server_url 
    
  2. 接下来,我将 lipstick-console-0.6-SNAPSHOT.jar 添加到 hadoop 类路径中。为此,我必须创建一个引导操作,如下所示:

    bootstrap_actions:
      - name: copy_lipstick_jar
        script_bootstrap_action:
          path: #s3 path to bootstrap_lipstick.sh
    

    bootstrap_lipstick.sh 的内容在哪里

    #!/bin/bash                                                                                                                                                  
    hadoop fs -copyToLocal s3n://wp-data-west-2/load_code/java/lipstick-console-0.6-SNAPSHOT.jar /home/hadoop/lib/
    

引导操作将口红 jar 复制到集群节点,并且 /home/hadoop/lib/ 已经在 hadoop 类路径中(EMR 负责)。

它仍然不起作用,但我想我遗漏了一些非常小的东西......感谢任何想法。

谢谢!

最佳答案

目前,Lipstick 的主类是 Pig 主类的直接替代品。这是一种黑客攻击(远非理想),可以访问优化前后脚本的逻辑和物理计划,否则根本无法访问。因此,不幸的是,仅将 LipstickPPNL 类注册为 Pig 的 PPNL 是行不通的。您必须像运行 Pig 一样运行 Lipstick Main。

我没有尝试在 EMR 上运行口红,但看起来您需要使用自定义 jar 步骤,而不是脚本步骤。请在此处查看文档:http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-launch-custom-jar-cli.html

jar 名称将是 lipstick-console-0.6-SNAPSHOT-withHadoop.jar。它包含运行 Lipstick 所需的所有依赖项。此外,还需要设置 lipstick.server.url

或者,您可以查看 https://www.mortardata.com/它在 EMR 上运行并内置了口红集成功能。

关于hadoop - 在 AWS EMR 上用 Lipstick 运行 Pig,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26230891/

相关文章:

Java Appium 测试无法在 AWS Device Farm 上运行

amazon-web-services - Amazon CloudFront 中的无效文件请求如何计费?

hadoop - 如何使用apache Pig插入过滤数据的索引?

hadoop - 与Pig有效地合并2个排序的文件

hadoop - bash : syntax error near unexpected token `(' - PIG, CentOs

json - Hive 外部表排除违反数据类型的记录

hadoop - 如何在 Hue 中切换或更改用户

linux - 解决了bash:hdfs:找不到命令

hadoop - Google云存储-Tez输出文件

amazon-web-services - AWS Glue ETL 作业和 AWS EMR 有什么区别?