hadoop 启动时间写入文件

hadoop1.0.4;

昨天看了源码,说到可以使用log信息来打印出来JobTracker的启动时间,然后来解析这个Log文件,但是这里有个问题,就是log文件是在hadoop的主节点namenode的linux机器中的,不是在客户端,读取会有一定的问题,然后就又想到了还是写文件(hdfs文件系统)的方式。只要在JobTracker启动之后,然后再写入即可。

还是按源码来说(首先把原来修改的还原回来),看代码的302、303行:

result = new JobTracker(conf, identifier);
        result.taskScheduler.setTaskTrackerManager(result);
这里就是新建JobTracker的代码了,可以在这两行代码后面加上这样的代码:

result = new JobTracker(conf, identifier);
        result.taskScheduler.setTaskTrackerManager(result);
        /**
         * add by fansy at 2013/12/20
         */
        writeString(JOBTRACKER_STARTTIME,conf);
        LOG.info("***---JOBTRACKER_STARTTIME:"+JOBTRACKER_STARTTIME);
这样就可以写入了,同时保证不会是在safemode状态写入,这样就不会报错了。

额,还需要修改的代码为:

新增一个static 变量:

private static String JOBTRACKER_STARTTIME;
修改generateNewIdentifier代码:

 private static String generateNewIdentifier() {
	JOBTRACKER_STARTTIME=getDateFormat().format(new Date());
    return JOBTRACKER_STARTTIME;
  }
这样就可以了。

编译、替换、重新启动集群,可以看到hdfs文件系统上面的新文件:


集群启动的图片为:



额,同时可以下载hadoop-core-1.0.4.jar 文件,在http://download.csdn.net/detail/fansy1990/6745283可以看到;

需要读取这个文件,可以使用下面的方法:

public static String readString(Path path, Configuration conf) throws IOException {
		    FileSystem fs = FileSystem.get(path.toUri(), conf);
		    FSDataInputStream in = fs.open(path);
		    try {
		      return in.readUTF();
		    } finally {
		      Closeables.closeQuietly(in);
		    }
		  }

writeString 的代码:

private static void writeString(String value,JobConf conf) {
	  LOG.info("***********************************prepare to wirte to file with value:"+value);
	  Path path=new Path("/private/jobtracker/starttime");
	   FileSystem fs;
	   FSDataOutputStream out=null;
	    try {
	    	fs = FileSystem.get(path.toUri(),conf);
		    out = fs.create(path);
		    out.writeUTF(value);
	    } catch(Exception e){
	    	LOG.info("********************************:"+e.getMessage());
	    }finally {
	      Closeables.closeQuietly(out);
	    } 
  }


如果您觉得lz的blog或者资源还ok的话,可以选择给lz投一票,多谢。(投票地址:http://vote.blog.csdn.net/blogstaritem/blogstar2013/fansy1990 )



分享,成长,快乐

转载请注明blog地址:http://blog.csdn.net/fansy1990




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值