您的位置:首页 > 运维架构 > Apache

Hadoop学习笔记4: 【org.apache.hadoop.util】包文件解析

2014-04-30 00:00 483 查看
Hadoop 【org.apache.hadoop.util】包文件说明

1.Daemon 【类】

public class Daemon extends Thread
{
{
   注意:这里有一行静态代码,总是设置线程为守护线程。
}

  成员变量:
  Runnable runnable = null;
  
  函数变量:

public Daemon()
{
   什么都不做
}

public Daemon(Runnable runnable)
{
   将runnable传给父类Thread;
   将本地runnable指向参数runnable.
   设置线程名字为runnable.toString()
}

public Runnable getRunnable()
{
获取本地的runnable 变量。
}
}

2

2 LogFormatter【类】
日志类不建议过多关注,非系统核心功能。
public class LogFormatter extends Formatter
{
  成员变量:
private static final String FORMAT = "yyMMdd HHmmss";
private static final String NEWLINE
  = 	System.getProperty("line.separator");
private final Date date = new Date();
private final SimpleDateFormat formatter
     = new SimpleDateFormat(FORMAT);
private static boolean loggedSevere= false;
private static boolean showTime = true;
private static boolean showThreadIDs = false;

函数变量:
public static Logger getLogger(String name)
{
  通过工厂模式获得一个日志记录对象。
}

public static void showTime(boolean showTime)
{
1 本函数为静态函数
    2 设置LogFormatter类的静态变量showTime.
}

public static void setShowThreadIDs(boolean showThreadIDs)
{
1 本函数为静态函数
2 设置LogFormatter类的静态变量showThreadIDs
}

public static boolean hasLoggedSevere()
{
1 本函数为静态函数
2 返回静态变量loggedSevere
}
  

  public synchronized String format(LogRecord record)
  {
  1 普通方法,意味着要生成一个对象才能调用。
  2 返回的字符串根据以下规则生成:
    2.1)需要显示时间,则显示当前时间。
    2.2)需要显示线程ID,则显示线程ID。
    2.3)如果是严重的消息,就显示严重并设置全局静态变量loggedSevere为true.
    2.4) 显示record对应的消息。
    2.5)如果record.getThrown()存在,则继续打印这个对象的相应消息。
  
  }
  
Public static PrintStream getLogStream
  (final Logger logger,final Level level)
  {
  返回一个自定义的PrintStream.
  细节不用去深究,日志类,不涉及系统核心功能。
  }
}

3 PrintJarMainClass 【类】
public class PrintJarMainClass
{
  函数成员:
  public static void main(String[] args)
  {
  打印一个Jar包的主类名字。很简单。
  }
}

4 Progress【类】
public class Progress
{
  成员变量:
private String status = "";
private float progress;
private int currentPhase;
private ArrayList phases = new ArrayList();
private Progress parent;
private float progressPerPhase;

函数变量:
public Progress()
{
   什么都不做。
}

public Progress addPhase()
{
   1-先生成一个Progress节点。
   2 加入到phases列表中,并设置新节点的parent为当前this.
    这样构成了父子关系映射。
   3 由于phases列表更新了,所以相应重新设置progressPerPhase,实际上也就		是如果一个子节点完成了,相应的进度增加多少。
    	比如 如果有10个子节点,则每个节点完成则进度增加10%
           如果有 5个子节点,则每个节点完成则进度增加20%
   4 最终返回新生成的节点。
}

public Progress addPhase(String status)
{
1 新增一个计算子节点。
   2设置这个新节点的status变量。
   最终返回新增子节点。
}

public void setStatus(String status)
{
设置本地status变量的setter方法。
}

public void set(float progress)
{
  设置当前节点的进度progress的setter 方法。
}

public void startNextPhase()
{
   currentPhase增加1,很简单。
}

public Progress phase()
{
返回当前正在运行的子节点对象。
}

public void complete()
{
通常是子节点调用。
   1 设置当前进度为1,表示自己已经完成了任务。
   2 如果自己还有父节点的话,则告知父节点请将父节点的currentPhase自	增1.
   
   相当于说”hey,man, 我已经完成了,你可以去让下一个节点工作了。”

}

private float getInternal()
{
   返回当前节点的总的进度。
   注意:一个树的组织的进度算法是如何计算的,就跟生活中的算法一样的。
}

public float get()
{
计算当前节点所在的root树的全局进度。
}

private void toString(StringBuffer buffer)
{
打印出从一个字符串,形式如:
“a>b>c”
其中a是当前节点的status名称,
b是a节点中当前运行未完成子节点的名称
c是b节点中当前运行未完成子节点的名称
}

  public String toString()
  {
      打印出从一个字符串,形式如:
    “a>b>c”
    其中a是当前节点的status名称,
        b是a节点中当前运行未完成子节点的名称
        c是b节点中当前运行未完成子节点的名称
  
  }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Hadoop