这次准备多台虚拟机来安装分布式Hadoop. 官方文档:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/ClusterSetup.html
Hadoop的节点分为两大类:masters和slaves。
masters 必须是分开(exclusively)的两台机器:NameNode 和 ResourceManager,
slaves 包含了DataNode和NodeManager,文档上没有说一定必须互斥。
下面是YARN的架构图, YARN只是Hadoop体系的一部分,此图没有包含HDFS。
HDFS的信息参考:https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html
现在安装hadoop,做一些基本配置,由于前面已经自己编译了64 bit的Hadoop,现在可以拿来用了。
为了方便大家,我将编译好的放在了公开的gitlab项目上:https://gitlab.com/hadoop/learn
首先准备一个虚拟机Ubuntu 12.04.4 server, host name: hd1, IP: 192.168.1.71
然后参考Ubuntu 12.04 上使用Hadoop 2.2.0 一 用户权限设置
做相应的设置。不过不要下载hadoop的安装包,只要将编译好的64 bit的复制到/usr/local目录下即可,重命名为hadoop
然后参考Ubuntu 12.04 上使用Hadoop 2.2.0 二 配置single node server
设置好环境变量,修改/usr/local/hadoop/etc/hadoop/hadoop-env.sh文件后,退出后再用hduser登录。
有篇文章中提到要修改下面这个文件,但是我不确定,先放在这里记录,暂时不用修改,因为如果程序在hduser用户身份下运行,应该已经有正确的JAVA_HOME环境变量了。
Add JAVA_HOME to libexec/hadoop-config.sh at beginning of the file hduser@solaiv[~]#vi /opt/hadoop-2.2.0/libexec/hadoop-config.sh …. export JAVA_HOME=/usr/local/jdk1.6.0_18 ….
在/usr/local/hadoop/etc/hadoop/hadoop-env.sh文件中
推荐设定JAVA_HOME, 有这么句话:
# The only required environment variable is JAVA_HOME. All others are # optional. When running a distributed configuration it is best to # set JAVA_HOME in this file, so that it is correctly defined on # remote nodes. # The java implementation to use. export JAVA_HOME=${JAVA_HOME}由于我的环境变量已经正确设置,并且我可以保证每台虚拟机都一样,所以我认为这里无须改动。
mkdir $HADOOP_INSTALL/tmp