您可以使用log4j,这是hadoop使用的默认日志记录框架。因此,从您的MapReduce应用程序中,您可以执行以下操作:
import org.apache.log4j.Logger;// other imports omittedpublic class SampleMapper extends Mapper<LongWritable, Text, Text, Text> { private Logger logger = Logger.getLogger(SampleMapper.class); @Override protected void setup(Context context) { logger.info("Initializing NoSQL Connection.") try { // logic for connecting to NoSQL - ommitted } catch (Exception ex) { logger.error(ex.getMessage()); } } @Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { // mapper pre ommitted }}此示例代码将使用户log4j记录器将事件记录到继承的Mapper记录器中。所有日志事件都将记录到其各自的任务日志中。您可以从JobTracker(MRv1)/
ResourceManager(MRv2)网页访问任务日志。
如果使用的是 yarn ,则可以使用以下命令从命令行访问应用程序日志:
yarn logs -applicationId <application_id>
如果您使用的是 mapreduce v1
,则无法从命令行进行单点访问;因此,您必须登录到每个TaskTracker,并查看通常
/var/log/hadoop/userlogs/attempt_<job_id>/syslog在
${hadoop.log.dir}/userlogscontainslog4j输出中指定的配置路径。



