根据Hadoop文档的描述“The Hadoop daemons are NameNode/DataNode and JobTracker/TaskTracker.”可以看出Hadoop核心守护程序就是由NameNode/DataNode 和JobTracker/TaskTracker这几个角色构成。
Hadoop的DFS需要确立NameNode与DataNode角色,一般NameNode会部署到一台单独的服务器上而不与DataNode共同同一机器。另外Map/Reduce服务也需要确立JobTracker和TaskTracker的角色,一般JobTracker与NameNode共用一台机器作为master,而TaskTracker与DataNode同属于slave。至于NameNode/DataNode和JobTracker/TaskTracker的概念这里就不多讲了,需要了解的可以参看相关文档。
在这里我们使用111作为NameNode与JobTracker,其它两台机器作为DataNode和TaskTracker,具体的配置如下:
环境的配置
在$HADOOP_HOME/conf/hadoop-env.sh中定义了Hadoop启动时需要的环境变量设置,其中我们至少需要配置JAVA_HOME(Jdk的路径)变量;另外我们一般还需要更改HADOOP_LOG_DIR(Hadoop的日志路径)这个变量,默认的设置是“export HADOOP_LOG_DIR=${HADOOP_HOME}/logs”,一般需要将其配置到一个磁盘空间比较大的目录下。
Hadoop核心程序配置
Hadoop 包括一组默认配置文件($HADOOP_HOME/src目录下的core/core-default.xml, hdfs/hdfs-default.xml 和mapred/mapred-default.xml),大家可以先好好看看并理解默认配置文件中的那些属性。虽然默认配置文件能让Hadoop核心程序顺利启动,但对于开发人员来说一般需要自己的来设置一些常规配置以满足开发和业务的需求,所以我们需要对默认配置文件的值进行覆盖,具体方法如下。
$HADOOP_HOME/conf/core-site.xml是Hadoop的核心配置文件,对应并覆盖core-default.xml中的配置项。我们一般在这个文件中增加如下配置:
Core-site.xml
<configuration> <property> <!-- 用于dfs命令模块中指定默认的文件系统协议 --> <name>fs.default.name</name> <value>hdfs://192.168.1.111:9000</value> </property> </configuration>