Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 确保Hadoop EMR上的日志_Python_Hadoop_Amazon Web Services_Amazon Emr_Emr - Fatal编程技术网

Python 确保Hadoop EMR上的日志

Python 确保Hadoop EMR上的日志,python,hadoop,amazon-web-services,amazon-emr,emr,Python,Hadoop,Amazon Web Services,Amazon Emr,Emr,我在AmazonEMR上有一个长时间运行的Hadoop流媒体作业(15个节点,>1.5小时)。作业在大约75%的完成率时失败。我正在为mapper和reducer使用Python 我进行了以下优化: sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0) sys.stderr = os.fdopen(sys.stderr.fileno(), 'w', 0) logging.getLogger().setLevel(logging.INFO) 在

我在AmazonEMR上有一个长时间运行的Hadoop流媒体作业(15个节点,>1.5小时)。作业在大约75%的完成率时失败。我正在为mapper和reducer使用Python

我进行了以下优化:

sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
sys.stderr = os.fdopen(sys.stderr.fileno(), 'w', 0)

logging.getLogger().setLevel(logging.INFO)
在使用
日志记录
模块发出日志条目之后,我还添加了以下内容:

    sys.stderr.flush()
    time.sleep(30)
    sys.exit(3)
尝试捕获错误但无效:Hadoop日志文件不显示我的错误:(


如何让Hadoop记录我的消息而不删除任何消息???

我不是100%了解python解决方案,但我知道在使用EMR命令行界面时,必须在Amazon S3中指定日志URI

比如说

./elastic-mapreduce --create --other-options --log-uri s3n://emr.test/logs
这是在集群启动时指定的

/jobflowid
   /daemons
   /jobs
   /nodes
   /steps
   /task-attempts

在/steps下,每个作业都有一个文件夹,在该文件夹下,作业的stderr、stdout和控制器输出都写在这里。

我对python解决方案不是100%了解,但我知道在使用EMR命令行界面时,必须在AmazonS3中指定日志URI

比如说

./elastic-mapreduce --create --other-options --log-uri s3n://emr.test/logs
这是在集群启动时指定的

/jobflowid
   /daemons
   /jobs
   /nodes
   /steps
   /task-attempts

在/steps下,每个作业都有一个文件夹,在/steps下,作业的stderr、stdout和控制器输出都写在这里。

是的,您可以在S3上指定一个日志文件夹,但问题是我没有获得所有日志消息。是的,您可以在S3上指定一个日志文件夹,但问题是我没有获得所有日志消息。