目录
2. 分别在四台机器上的 /etc/hosts 文件中添加如下内容
一、环境
四台 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
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:
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 文件,添加如下内容。
<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>
(2)编辑 ~/hadoop-2.7.2/etc/hadoop/hdfs-site.xml 文件,添加如下内容。
<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>
注意:dfs.namenode.servicerpc-address参数必须设置。
(3)编辑~/hadoop-2.7.2/etc/hadoop/yarn-site.xml文件,添加如下内容。
<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>
注意:yarn.nodemanager.resource.memory-mb 不能小于 1024。
(4)编辑 ~/hadoop-2.7.2/etc/hadoop/mapred-site.xml 文件,添加如下内容。
<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>
(5)编辑 ~/hadoop-2.7.2/etc/hadoop/slaves 文件,添加如下内容。
192.168.56.102
192.168.56.103
192.168.56.104
(6)编辑 ~/hadoop-2.7.2/etc/hadoop/hadoop-env.sh 文件,修改如下内容。
export JAVA_HOME=/home/grid/jdk1.7.0_75
(7)编辑 ~/hadoop-2.7.2/etc/hadoop/yarn-env.sh 文件,修改如下内容。
export JAVA_HOME=/home/grid/jdk1.7.0_75
(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 文件中添加如下环境变量。
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
五、初始化及运行
以下的操作均使用 grid 用户在 master 主机上执行。
hdfs namenode -format
结果如图1 所示:
图1
start-dfs.sh
结果如图2 所示:
start-yarn.sh
结果如图3 所示:
查看主节点 Java 进程,可以看到主节点上启动了 NameNode、SecondaryNameNode、ResourceManager 守护进程,如图4 所示:
图4
查看从节点 Java 进程,可以看到从节点上启动了 DataNode、NodeManager 守护进程,如图5 所示:
图5
通过 web 接口查看 NameNode,如图6 所示:
图6
参考:
https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/ClusterSetup.html