关闭防火墙和SELinux
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
sed -i 's/^SELINUX=.*$/SELINUX=disabled/g' /etc/selinux/config
修改/etc/hosts 文件,加入引入其他服务器主机
10.10.10.62    testdb62 
10.10.10.136   testdb136
10.10.10.63    testdb63
集群部署规划
testdb62   NameNode(HDFS)  DataNode(HDFS)   NodeManager(YARN)
testdb136  DataNode(HDFS)  ResourceManager(YARN)  NodeManager(YARN)  
testdb63   SecondaryNameNode(HDFS)  DataNode(HDFS)  NodeManager(HDFS)
创建 hadoop 用户
useradd hadoop
修改hadoop 用户密码
passwd hadoop
给hadoop sudo权限
vi /etc/sudoers
hadoop ALL=(root) NOPASSWD:ALL
为hadoop用户配置ssh免密登录
ssh-keygen
cd ~/.ssh
cat id_rsa.pub > authorized_keys 
chmod 600 *
cd ~/
scp -r .ssh testdb136:~/
scp -r .ssh testdb63:~/
最后每个节点都要验证
ssh testdb62 date
ssh testdb136 date
ssh testdb63 date
创建目录
mkdir /opt/hadoop
mkdir /data/hadoop/data/tmp  -p
查询是否安装jdk
rpm -qa | grep jdk
如果安装的版本低于1.7,卸载该JDK
rpm -e 软件包
查看JDK安装路径
which java
安装jdk
这里使用的是rpm 包的安装方式,所以,JAVA_HOME是在 /usr/java/jdk1.8.0_65 
打开/etc/profile文件,在profile文件末尾添加jdk路径
vi /etc/profile  
#JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_65
export PATH=$PATH:$JAVA_HOME/bin
解压安装文件到 /opt/hadoop 下面
tar -zxvf hadoop-2.7.2.tar.gz -C /opt/hadoop/
修改权限
chown  -R  hadoop:hadoop  /opt/hadoop
chown  -R  hadoop:hadoop  /data/hadoop 
打开/etc/profile文件,在profile文件末尾添加hadoop路径
vi /etc/profile   
##HADOOP_HOME
export HADOOP_HOME=/opt/hadoop/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
让修改后的文件生效
source /etc/profile
测试是否安装成功
hadoop version
创建集群同步命令脚本
vi /opt/hadoop/hadoop-2.7.2/bin/xsync
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for i in  {testdb62,testdb136,testdb63} 
do
    echo ------------------- $i --------------
    rsync -rvl $pdir/$fname $user@$i:$pdir
done
给脚本执行权限
chmod 755  /opt/hadoop/hadoop-2.7.2/bin/xsync
创建集群分发命令脚本
vi /opt/hadoop/hadoop-2.7.2/bin/xcall
#!/bin/bash
pcount=$#
if((pcount==0));then
        echo no args;
        exit;
fi
for i in  {testdb62,testdb136,testdb63}
do
    echo ----------hostName $i---------
    ssh $i $@
done
给脚本执行权限
chmod 755  /opt/hadoop/hadoop-2.7.2/bin/xcall
配置文件所在的目录: /opt/hadoop/hadoop-2.7.2/etc/hadoop
配置core-site.xml
vi core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://testdb62:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/data/hadoop/data/tmp</value>
</property>
配置hadoop-env.sh
vi hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_65
配置hdfs-site.xml
vi hdfs-site.xml
<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>testdb63:50090</value>
</property>
配置yarn-env.sh
vi yarn-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_65
配置yarn-site.xml
vi yarn-site.xml
<!-- reducer获取数据的方式 -->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>testdb136</value>
</property>
配置mapred-env.sh
vi mapred-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_65
配置mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
<!-- 指定mr运行在yarn上 -->
<property>      
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
配置slaves  
vi  slaves
在该文件中增加如下内容:
testdb62
testdb136
testdb63
在集群上分发配置好的Hadoop配置文件
xsync  core-site.xml  
xsync  hadoop-env.sh  
xsync  hdfs-site.xml   
xsync  yarn-env.sh  
xsync  yarn-site.xml  
xsync  mapred-env.sh  
xsync  mapred-site.xml  
xsync  slaves
 
 
启动集群
如果集群是第一次启动,需要格式化NameNode
hdfs namenode -format
启动HDFS
start-dfs.sh
jps
4166 NameNode
4482 Jps
4263 DataNode
jps
3218 DataNode
3288 Jps
jps
3221 DataNode
3283 SecondaryNameNode
3364 Jps
启动YARN
start-yarn.sh
注意:NameNode和ResourceManger如果不是同一台机器,不能在NameNode上启动 YARN,应该在ResouceManager所在的机器上启动YARN。
web端查看SecondaryNameNode,浏览器中输入:http://10.10.10.63:50090/status.html
集群基本测试
上传小文件
hadoop fs -mkdir -p /user/hadoop_test/input
hadoop fs -put rsync-test-scp.log  /user/hadoop_test/input
上传大文件
hadoop fs -put /home/hadoop/hadoop-2.7.2.tar.gz  /user/hadoop_test/input
 
下载
hadoop fs -get /user/hadoop_test/input/hadoop-2.7.2.tar.gz ./
集群启动/停止方式总结
各个服务组件逐一启动/停止
分别启动/停止HDFS组件
hadoop-daemon.sh  start / stop  namenode / datanode / secondarynamenode
启动/停止YARN
yarn-daemon.sh  start / stop  resourcemanager / nodemanager
各个模块分开启动/停止(配置ssh是前提)常用
整体启动/停止HDFS
start-dfs.sh   /  stop-dfs.sh
整体启动/停止YARN
start-yarn.sh  /  stop-yarn.sh