一、环境
四台 VirtualBox上的Linux虚机,每台硬盘20G,内存768M。
IP与主机名:
192.168.56.101
master
192.168.56.102
slave1
192.168.56.103
slave2
192.168.56.104
slave3
主机规划:
192.168.56.101做master,运行NameNode和ResourceManager进程。其它三台主机做slave,运行DataNode和NodeManager进程。
操作系统:CentOS release 6.4 (Final)
java版本:jdk1.7.0_75
hadoop版本:hadoop-2.7.2
二、安装前准备
1. 分别在四台机器上建立grid用户
useradd -d /home/grid -m grid
usermod -G root grid
2. 分别在四台机器上的/etc/hosts文件中添加如下内容
192.168.56.101 master
192.168.56.102 slave1
192.168.56.103 slave2
192.168.56.104 slave3
以下的操作均使用grid用户执行。
3. 分别在四台机器上安装java(安装包下载已经到grid用户主目录):
cd ~
tar -zxvf jdk-7u75-linux-x64.tar.gz
4. 配置免密码ssh(这里配置了任意两台机器都免密码)
(1)分别在四台机器上生成密钥对:
cd ~
ssh-keygen -t rsa
然后一路回车
(2)在master上执行:
cd ~/.ssh/
ssh-copy-id 192.168.56.101
scp /home/grid/.ssh/authorized_keys 192.168.56.102:/home/grid/.ssh/
(3)在slave1上执行:
cd ~/.ssh/
ssh-copy-id 192.168.56.102
scp /home/grid/.ssh/authorized_keys 192.168.56.103:/home/grid/.ssh/
(4)在slave2上执行:
cd ~/.ssh/
ssh-copy-id 192.168.56.103
scp /home/grid/.ssh/authorized_keys 192.168.56.104:/home/grid/.ssh/
(5)在slave3上执行:
cd ~/.ssh/
ssh-copy-id 192.168.56.104
scp /home/grid/.ssh/authorized_keys 192.168.56.101:/home/grid/.ssh/
scp /home/grid/.ssh/authorized_keys 192.168.56.102:/home/grid/.ssh/
scp /home/grid/.ssh/authorized_keys 192.168.56.103:/home/grid/.ssh/
至此,免密码ssh配置完成。
三、安装配置hadoop
以下的操作均使用grid用户在master主机上执行。
1. 安装hadoop(安装包下载已经到grid用户主目录):
cd ~
tar -zxvf hadoop-2.7.2.tar.gz
2. 建立目录
cd ~/hadoop-2.7.2
mkdir tmp
mkdir hdfs
mkdir hdfs/data
mkdir hdfs/name
3. 修改配置文件
(1)编辑~/hadoop-2.7.2/etc/hadoop/core-site.xml文件,添加如下内容,如图1所示。
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.56.101:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/grid/hadoop-2.7.2/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
</configuration>
图1
(2)编辑~/hadoop-2.7.2/etc/hadoop/hdfs-site.xml文件,添加如下内容,如图2所示。
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/grid/hadoop-2.7.2/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/grid/hadoop-2.7.2/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.56.101:9001</value>
</property>
<property>
<name>dfs.namenode.servicerpc-address</name>
<value>192.168.56.101:10000</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
图2
注意:dfs.namenode.servicerpc-address参数必须设置。
(3)编辑~/hadoop-2.7.2/etc/hadoop/yarn-site.xml文件,添加如下内容,如图3所示。
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.56.101:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.56.101:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.56.101:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>192.168.56.101:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.56.101:8088</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>1024</value>
</property>
</configuration>
图3
注意:yarn.nodemanager.resource.memory-mb不能小于1024。
(4)编辑~/hadoop-2.7.2/etc/hadoop/mapred-site.xml文件,添加如下内容,如图4所示。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.56.101:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.56.101:19888</value>
</property>
</configuration>
图4
(5)编辑~/hadoop-2.7.2/etc/hadoop/slaves文件,添加如下内容,如图5所示。
192.168.56.102
192.168.56.103
192.168.56.104
图5
(6)编辑~/hadoop-2.7.2/etc/hadoop/hadoop-env.sh文件,修改如下内容,如图6所示。
export JAVA_HOME=/home/grid/jdk1.7.0_75
图6
(7)编辑~/hadoop-2.7.2/etc/hadoop/yarn-env.sh文件,修改如下内容,如图7所示。
export JAVA_HOME=/home/grid/jdk1.7.0_75
图7
(8)将hadhoop主目录复制到各个从服务器上
scp -r ./hadoop-2.7.2 192.168.56.102:/home/grid/
scp -r ./hadoop-2.7.2 192.168.56.103:/home/grid/
scp -r ./hadoop-2.7.2 192.168.56.104:/home/grid/
四、安装后配置
使用root用户分别在四台机器上的/etc/profile文件中添加如下环境变量,如图8所示。
export JAVA_HOME=/home/grid/jdk1.7.0_75
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/home/grid/hadoop-2.7.2
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/lib
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native
图8
五、初始化及运行
以下的操作均使用grid用户在master主机上执行。
hdfs namenode -format
结果如图9所示
图9
start-dfs.sh
结果如图10所示
图10
start-yarn.sh
结果如图11所示
图11
查看主节点Java进程,可以看到主节点上启动了NameNode、SecondaryNameNode、ResourceManager守护进程,如图12所示
图12
查看从节点Java进程,可以看到从节点上启动了DataNode、NodeManager守护进程,如图13所示
图13
通过web接口查看NameNode,如图14所示
图14
参考:https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/ClusterSetup.html