文章列表
在Hadoop的命令行脚本($HADOOP_HOME/bin/hadoop)里可以找到一些环境变量,在某些情况下可以灵活使用。JAVA_HOME,HADOOP_CLASSPATH,HADOOP_HEAPSIZE等变量的意义比较明确,就不细说了。
HADOOP_CONF_DIR
指定Hadoop配置文件目录,默认是${HADOOP_HOME}/conf。当某台客户端机器是多人共用时,大家可能使用同一个Hadoop安装包,但每个人却都都有各自的配置,所以需要各自指定自己的配置文件目录:
export HADOOP_CONF_DIR=$HOME/hadoop_conf
这个环境变量在测试脚本里 ...
我们都知道Hadoop在内部各个节点通信的时候, 必须保证两者版本是一致的(0.19是这样, 0.20以上的不知道). 也就是说JobTracker和TaskTracker必须使用相同的编译版本, 如果不一致, 可能会出现如下错误:
2010-06-07 23:24:10,863 ERROR org.apache.hadoop.mapred.TaskTracker: Shutting down. Incompatible buildVersion.
JobTracker's: 0.19.1-tmp from 79483 by dangyuan on Mon Jan 25 10:49:47 CS ...
Hadoop里有一个很常用的工具叫Counter, 主要用来记录Hadoop job的运行状态: HDFS读写的字节数, 本地文件读写, map/reduce 输入输出记录数等等. 用户也可以自己定义counter.
1. 用命令行工具获取job的counter信息:
hadoop job -counter job_201006072115_0001 org\.apache\.hadoop\.mapred\.JobInProgress\$Counter TOTAL_LAUNCHED_MAPS
2. 待续待续...
Hadoop服务端所有的客户请求(除了HTTP接口)都使用RPC框架的Server来实现.
RPC Server处理请求的是Handler线程, 对每一个请求(Call对象, 包含了客户来源IP,端口等信息)的处理过程中包含如下代码
CurCall.set(call);
其中CurCall是一个ThreadLocal对象. 在处理的过程中如果要获得客户的IP, 可以调用如下方法, RPC Server已经实现了该方法:
public static InetAddress getRemoteIp() {
Call call = CurCall.get();
if ( ...