使用的是Centos6,VMware15java
sudo service iptables stop
sudo chkconfig iptables off
复制代码
vim /etc/sysconfig/network-scripts/ifcfg-eth0
内容改成以下:
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
NAME="eth0"
IPADDR=192.168.140.128(这个要根据本身的机器而定)
PREFIX=24
GATEWAY=192.168.140.2(这个要根据本身的机器而定)
DNS1=192.168.140.2(这个要根据本身的机器而定)
复制代码
执行 service network restart(若是报错重启虚拟机)node
vim /etc/sysconfig/network
改成:HOSTNAME=hadoop01
复制代码
vim /etc/hosts
内容改成:
192.168.140.128 hadoop01
192.168.140.129 hadoop02
192.168.140.130 hadoop03
复制代码
useradd hadoop
passwd hadoop
#sudo 权限
vim /etc/sudoers
在root ALL=(ALL) ALL
添加hadoop ALL=(ALL) NOPASSWD:ALL
保存时wq!强制保存
复制代码
mkdir /opt/module /opt/software
chown hadoop:hadoop/opt/module /opt/software
复制代码
到此一个符合咱们使用的虚拟机已经完成,既然我要分布式部署hadoop因此仍是准备3台为好。接下来关机克隆便可。linux
克隆后,将须要更改一下IP和hostname,参考步骤:***固定虚拟机IP***和***修改hostname***的步骤便可web
cd ~
vim 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((host=2; host<4; host++)); do
echo ------------------- hadoop0$host --------------
rsync -av $pdir/$fname $user@hadoop0$host:$pdir
done
##受权
chmod +x xsync
sudo cp xsync /bin
sudo xsync /bin/xsync
复制代码
ssh-keygen -t rsa #三次回车
复制代码
ssh-copy-id hadoop01 #输入一次密码
复制代码
ssh hadoop02
exit
ssh hadoop03
exit
复制代码
xsync /home/hadoop/.ssh
复制代码
tar -zxvf /opt/software/hadoop-2.7.2.tar.gz -C /opt/module/
tar -zxvf /opt/software/jdk-8u144-linux-x64.tar.gz -C /opt/module/
复制代码
sudo vim /etc/profile
#在文件末尾添加
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
复制代码
source /etc/profile
复制代码
sudo xsync /etc/profile
#还须要在hadoop02,hadoop03上执行source /etc/profile
复制代码
如下操做的hadoop相关的配置文件均在/opt/module/hadoop-2.7.2/etc/hadoop中vim
#在三个文件中添加
export JAVA_HOME=/opt/module/jdk1.8.0_144
复制代码
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
复制代码
<!-- 数据的副本数量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop03:50090</value>
</property>
复制代码
<!-- Site specific YARN configuration properties -->
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop02</value>
</property>
<!-- 日志汇集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
复制代码
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop03:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop03:19888</value>
</property>
复制代码
vim slaves
#内容添加
hadoop01
hadoop02
hadoop03
复制代码
xsync /opt/module/hadoop-2.7.2/etc
复制代码
#经过上面的配置能够知道hadoop01为nameNode
hdfs namenode -format
sbin/start-dfs.sh
复制代码
#若是是copy个人配置,则是在hadoop02上启动yarn
sbin/start-yarn.sh
复制代码
能够访问http://hadoop01:50070 验证 10. 关闭bash
在namenode上执行(hadoop01)
sbin/stop-dfs.sh
在yarn机器上执行(hadoop02)执行
sbin/stop-yarn.sh
复制代码