Amazon EMR + mrjob:bootstrap 错误,"bootstrap action 1 returned a non-zero return code"

Amazon EMR + mrjob: bootstrap error, "bootstrap action 1 returned a non-zero return code"

我正在尝试 运行 使用 ec2 实例在 Amazon 的 EMR 上创建 mrjob。它一直在工作,直到我意识到我正在使用 python 包(机械化、BeautifulSoup、boto)。所以,我添加到我的 mrjob.conf 文件中,但现在我不断收到此错误:

No handlers could be found for logger "mrjob.emr"
Traceback (most recent call last):
  File "run_job.py", line 102, in <module>
    run()
  File "run_job.py", line 76, in run
    runner.run()
  File "C:\Program Files (x86)\Python278\lib\site-packages\mrjob\runner.py", line 464, in run
    self._run()
  File "C:\Program Files (x86)\Python278\lib\site-packages\mrjob\emr.py", line 821, in _run
    self._wait_for_job_to_complete()
  File "C:\Program Files (x86)\Python278\lib\site-packages\mrjob\emr.py", line 1689, in _wait_for_jo
b_to_complete
    raise Exception(msg)
Exception: Job on job flow j-CZDG75Z1X58 failed with status FAILED: On the master instance (i-0ef8bb
cc), bootstrap action 1 returned a non-zero return code

我已经无计可施了,我已经尝试解决这个问题很长一段时间了,但似乎无法解决。这是配置文件:

runners:
  emr:
    bootstrap_mrjob: True
    ami_version: 2.4.11

    bootstrap:
        - sudo apt-get install -y python-pip
        - sudo pip install mechanize
        - sudo pip install bs4
        - sudo pip install mrjob
        - sudo pip install boto

    aws_access_key_id: xxxx
    aws_region: xxxx
    aws_secret_access_key: xxxx
    num_ec2_core_instances: 1
    ec2_core_instance_type: m1.small
    iam_instance_profile: xxxx

终于想通了!

在 mrjob.conf 中,我将 bootstrap: 及其所有元素更改为

bootstrap_cmds:
    - sudo easy_install pip
    - sudo easy_install mechanize
    - sudo easy_install boto
    - sudo easy_install BeautifulSoup4

原来 mjrob 几乎总是自动将它自己的包安装到 ec2 实例。所以我根本不需要在 bootstrap 中包含它。

现在它运行起来就像一个魅力! :)