一、环境介绍
本篇博客介绍手工安装Apache Hadoop的过程,建立VMware上建立三台Linux虚拟机,每台硬盘20G,内存1G。
1. 环境版本
操作系统:CentOS 6.7
Java版本:jdk-7u79-linux-x64.tar
Hadoop版本:hadoop-2.7.5
2. 主机规划
192.168.56.101 master
192.168.56.102 slave1
192.168.56.103 slave2
master上运行NameNode和ResourceManager进程。其他两台做slave,运行DataNode和NodeManager进程。
二、安装前准备
默认已经安装了三台Linux虚拟机。第1、2步使用root用户执行,3、4步使用grid用户执行。
1. 分别在三台机器上建立grid用户
#创建grid用户,指定主目录
useradd -d /home/grid -m grid
#把grid用户加入root组
usermod -a -G root grid
#修改grid用户密码
passwd grid
2. 分别修改三台机器的hosts文件,用作域名解析
vi /etc/hosts
#添加如下内容
192.168.56.101 master
192.168.56.102 slave1
192.168.56.103 slave2
3. 分别在三台机器上安装Java(默认Java安装包已上传到grid用户的/home/grid下)
(1)解压安装包
#切换到grid主目录
cd /home/grid
#解压
tar -zxvf jdk-7u79-linux-x64.tar.gz
(2)配置java环境变量
vi /home/grid/.bash_profile
#添加如下内容:
export JAVA_HOME=/usr/java/jdk1.7.0_79/
export PATH=$JAVA_HOME/bin:$PATH
(3)生效配置的环境变量
. .bash_profile
(4)测试配置是否成功
java -version
#出现如下内容,说明配置成功
java version "1.7.0_79"
OpenJDK Runtime Environment (rhel-2.5.5.4.el6-x86_64 u79-b14)
OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)
4. 配置互信(SSH免密登陆)
(1)三台机器均执行
# 进入grid用户主目录
cd /home/grid
# 生成密钥对,一路按回车
ssh-keygen -t rsa
(2)在master上执行
# 进入.ssh
cd .ssh
# 把本机的公钥追加到自身的~/.ssh/authorized_keys文件中
ssh-copy-id 192.168.56.101
# 将authorized_keys文件复制到第二台机器上
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
# 此时authorized_keys文件中已包含所有三台主机的公钥,将它复制其他两台机器
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/
(5)验证
#如无需密码成功登陆其他机器,则说明配置完成,下面演示登陆master
ssh master
至此,免密登陆配置完成!
三、安装配置Hadoop
以下均使用grid用户,在master主机上完成
1. 安装包上传到目录/home/grid下,上传过程略
#切换到grid用户主目录
cd /home/grid
#解压安装包
tar -zxvf hadoop-2.7.5.tar.gz
2. 建立目录
cd ~/hadoop-2.7.5
mkdir tmp
mkdir hdfs
mkdir hdfs/data
mkdir hdfs/name
3. 设置环境变量
vi ~/.bash_profile
#添加如下内容
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.5
export PATH=$PATH:$HADOOP_HOME/bin
4. 生效环境变量
. ~/.bash_profile
5. 修改配置文件
以下要添加的内容,均添加在文件中的
(1)Hadoop全局配置文件core-site.xml
vi ~/hadoop-2.7.5/etc/hadoop/core-site.xml
#添加如下内容
fs.defaultFS
hdfs://192.168.56.101:9000
hadoop.tmp.dir
file:/home/grid/hadoop-2.7.5/tmp
io.file.buffer.size
131072
(2)HDFS配置文件hdfs-site.xml
vi ~/hadoop-2.7.5/etc/hadoop/hdfs-site.xml
#添加如下内容
dfs.namenode.name.dir
file:/home/grid/hadoop-2.7.5/hdfs/name
dfs.datanode.data.dir
file:/home/grid/hadoop-2.7.5/hdfs/data
dfs.replication
2
dfs.namenode.secondary.http-address
192.168.56.101:9001
dfs.namenode.servicerpc-address
192.168.56.101:10000
dfs.webhdfs.enabled
true
(3)YARN配置文件yarn-site.xml
vi ~/hadoop-2.7.5/etc/hadoop/yarn-site.xml
#添加如下内容
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux_services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.address
192.168.56.101:8032
yarn.resourcemanager.scheduler.address
192.168.56.101:8030
yarn.resourcemanager.resource-tracker.address
192.168.56.101:8031
yarn.resourcemanager.admin.address
192.168.56.101:8033
yarn.resourcemanager.webapp.address
192.168.56.101:8088
yarn.nodemanager.resource.memory-mb
1024
(4)MapReduce配置文件mapred-site.xml
#需要修改文件名称
cd ~/hadoop-2.7.5/etc/hadoop/
mv mapred-site.xml.template mapred-site.xml
#修改文件
vi ~/hadoop-2.7.5/etc/hadoop/mapred-site.xml
#添加如下内容
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
192.168.56.101:10020
mapreduce.jobhistory.webapp.address
192.168.56.101:19888
(5)配置slaves文件
vi ~/hadoop-2.7.5/etc/hadoop/slaves
#添加如下内容
192.168.56.102
192.168.56.103
(6)配置hadoop-env.sh文件
vi ~/hadoop-2.7.5/etc/hadoop/hadoop-env.sh
#添加如下内容
export JAVA_HOME=/home/grid/jdk1.7.0_79/
(7)配置yarn-env.sh文件
vi ~/hadoop-2.7.5/etc/hadoop/yarn-env.sh
#添加如下内容
export JAVA_HOME=/home/grid/jdk1.7.0_79/
(8)将Hadoop主目录复制到其他两台机器
scp -r ./hadoop-2.7.5 192.168.56.102:/home/grid/
scp -r ./hadoop-2.7.5 192.168.56.103:/home/grid/
6. 使用root用户分别在三台机器上修改/etc/profile,设置环境变量
vi /etc/profile
#添加如下内容
export JAVA_HOME=/home/grid/jdk1.7.0_79
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.5
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
#生效环境变量
. /etc/profile
7. 初始化及运行Hadoop
以下均使用grid用户在master机器上执行。
(1)初始化
hdfs namenode -format
#当出现如下信息时,表示初始化成功
18/01/02 21:56:06 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = master/192.168.56.101
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 2.7.5
...
...
18/01/02 21:56:27 INFO common.Storage: Storage directory /home/grid/hadoop-2.7.5/hdfs/name has been successfully formatted.
18/01/02 21:56:27 INFO namenode.FSImageFormatProtobuf: Saving image file /home/grid/hadoop-2.7.5/hdfs/name/current/fsimage.ckpt_0000000000000000000 using no compression
18/01/02 21:56:28 INFO namenode.FSImageFormatProtobuf: Image file /home/grid/hadoop-2.7.5/hdfs/name/current/fsimage.ckpt_0000000000000000000 of size 321 bytes saved in 0 seconds.
18/01/02 21:56:28 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
18/01/02 21:56:28 INFO util.ExitUtil: Exiting with status 0
18/01/02 21:56:28 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at master/192.168.56.101
************************************************************/
(2)启动Hadoop
A.启动命令
cd /home/grid/hadoop-2.7.5
sbin/start-all.sh
#关闭命令为stop-all.sh
B.验证
在各个机器上执行jps命令,当有以下进程时说明启动成功。
#master机器SecondaryNameNode、ResourceManager、NameNode三个进程
8637 Jps
8219 SecondaryNameNode
8373 ResourceManager
8005 NameNode
#slave机器DataNode、NodeManager两个进程
4438 DataNode
4645 Jps
4545 NodeManager
下次启动Hadoop时,无需初始化,只需执行启动命令。实际上Hadoop系统建议启动命令分两步,先执行start-dfs.sh,在执行start-yarn.sh启动YARN。
至此,Apache Hadoop安装配置完成!