Hadoop运行模式(二)
完全分布式运行模式
一、准备3台虚拟机
1.从先前配置好的虚拟机(hadoop100)上克隆三台虚拟机(hadoop101,hadoop102,hadoop103);
2.设置三台主机:关闭防火墙,设置静态IP,修改主机名称。
二、安装JDK和Hadoop,配置环境变量
先在hadoop101安装配置,再分发到hadoop102,hadoop103;
1.安装JDK
(1).用Xftp工具将JDK导入到opt目录下面的software文件夹下面
(2).在Linux系统下的opt目录中查看软件包是否导入成功cd software/
ls
(3).卸载现有JDK
a.查询是否安装Java软件:rpm -qa | grep java
b.如果有,卸载rpm -qa | grep java | xargs sudo rpm -e --nodeps
(4).解压JDK到/opt/module目录下tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
2.安装Hadoop
(1).用Xftp工具将hadoop-2.7.2.tar.gz导入到opt目录下面的software文件夹
(2).进入到Hadoop安装包路径下cd /opt/software/
(3).解压安装文件到/opt/module下面tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/
(4).查看是否解压成功ls /opt/module/
hadoop-2.7.2
3.配置环境变量(JDK和Hadoop)
(1)先获取JDK和Hadoop路径
/opt/module/jdk1.8.0_144
/opt/module/hadoop-2.7.2
(2)打开/etc/profile文件sudo vim /etc/profile
在profile文件末尾添加JDK路径:
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
在profile文件末尾添加JDK路径:
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
(3)保存后退出
(4)让修改后的文件生效source /etc/profile
(5).测试是否安装成功java -version
java version “1.8.0_144”hadoop version
Hadoop 2.7.2
4.编写xsync集群分发脚本
(1).脚本说明:循环复制文件到所有节点的相同目录下
(2).脚本实现
a.在hadoop101虚拟机的 /home/hadoop100目录下创建bin目录,并在bin目录下xsync创建文件,文件内容如下:
mkdir bin
cd bin/
touch xsync
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=102; host<105; host++)); do
echo ------------------- hadoop$host --------------
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
b.修改脚本 xsync 具有执行权限chmod 777 xsync
c.调用脚本形式:xsync 文件名称xsync /home/hadoop100/bin
5.分发
(1)在hadoop101上,将hadoop101中/opt/module目录下的软件拷贝到hadoop102,hadoop103上。xsync /opt/module
注意:拷贝过来的/opt/module目录,别忘了在hadoop101、hadoop102、hadoop103、上修改所有文件的,所有者和所有者组。sudo chown hadoop100:hadoop100 -R /opt/module
(2)将hadoop101中/etc/profile文件拷贝到hadoop102、hadoop103的/etc/profile上。xsync /etc/profile
注意:拷贝过来的配置文件别忘了source一下/etc/profile。
三、配置集群
1. 集群部署规划
2. 配置集群
(1)核心配置文件
配置core-site.xmlvim core-site.xml
在该文件中编写如下配置
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop101:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
(2)HDFS配置文件
配置hadoop-env.shvi hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
配置hdfs-site.xmlvi hdfs-site.xml
在该文件中编写如下配置
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop103:50090</value>
</property>
(3)YARN配置文件
配置yarn-env.shvi yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
配置yarn-site.xmlvi 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>hadoop102</value>
</property>
(4)MapReduce配置文件
配置mapred-env.shvi mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
配置mapred-site.xmlcp mapred-site.xml.template mapred-site.xml
vi mapred-site.xml
在该文件中增加如下配置
<!-- 指定MR运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
3.在集群上分发配置好的Hadoop配置文件xsync /opt/module/hadoop-2.7.2/
4.查看文件分发情况cat /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml
四、配置ssh
1.无**配置
(1)进入/home/hadoop100/.ssh
(2)生成公钥和私钥:ssh-****** -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
(3)将公钥拷贝到要免密登录的目标机器上
ssh-copy-id hadoop101
ssh-copy-id hadoop102
ssh-copy-id hadoop103
注意:
还需要在hadoop101上采用root账号,配置一下无密登录到hadoop101、hadoop102、hadoop103;
还需要在hadoop102上采用hadoop100账号配置一下无密登录到hadoop101、hadoop102、hadoop103服务器上。
五、群起集群
1. 配置slaves
在/opt/module/hadoop-2.7.2/etc/hadoop/slaves下vi slaves
在该文件中增加如下内容:
hadoop101
hadoop102
hadoop103
注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
同步所有节点配置文件xsync slaves
2. 启动集群
(1)如果集群是第一次启动,需要格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)bin/hdfs namenode -format
(2)启动HDFSsbin/start-dfs.sh
(3)启动YARN(在hadoop102上启动)sbin/start-yarn.sh
注意:NameNode和ResourceManger如果不是同一台机器,不能在NameNode上启动 YARN,应该在ResouceManager所在的机器上启动YARN。