您的位置:首页 > 运维架构

Hadoop-2.7.3完全分布式环境搭建及环境部署脚本编写

2017-03-04 00:20 633 查看

完全分布式搭建

注:hadoop启动之后生成的文件均保存在了临时目录/tmp下,因此每次重新启动之前就需要格式化一回;可在配置文件里配置,这里并没有配置,在后续的文章里会进行介绍

在虚拟机中选择创建5台Ubuntu来进行完全分布式环境的搭建,使用工具SecureCRT 7.3,具体如何配置每台机器的IP地址,并实现联网,参考我的前序文章:VMware虚拟网络配置及原理;环境变量的设置也请参考我的前序文章:Hadoop-2.7.3环境搭建之伪分布式模式

每台机器的hosts文件(在/etc/hosts目录下):

192.168.26.100      master
192.168.26.101      slave1
192.168.26.102      slave2
192.168.26.103      slave3
192.168.26.104      slave4


总体搭建思路

master作为NameNode与ResourceManager

slave1、slave2、slave3均作为DataNode与NodeManager

slave4作为SecondaryNameNode

在master节点上实现对slave1-slave4节点的控制,因此配置SSH

思路

1.在五台机器上均安装SSH,并生成各自的私钥、公钥对

$>sudo apt-get install ssh
$>ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa


2.配置SSH

将master节点上的公钥分别传给slave1-slave4,实现master节点上可以登录slave1-slave4这四个节点并对他们进行操作

原理:master将消息用私钥进行加密,传给slave1-slave4这四台机器,由于这四台机器拥有master节点的公钥,因此可以用master的公钥对传来的消息进行识别并解密,一旦匹配,就实现登陆

操作:分别在slave1-slave4的机器上执行操作:

$>nc -l 8888 > ~/.ssh/id_rsa.pub.master


在master节点上执行操作:

$>nc slave-x 8888 < ~/.ssh/id_rsa.pub


注:slave-x分别代表slave1-slave4,需要分开执行四组即可实现

在master节点上查看效果

$>ssh slave3 ifconfig


示例截图:



编写脚本文件实现在master节点上对其余四个从节点的控制

1.分发文件脚本

功能:分发/soft里的安装软件

分发环境变量配置文件/etc/environment

分发完全分布式配置文件

$>su root
$>cd /usr/local/bin
$>touch xsync
$>chmod a+x xsync


文件内容:

#!/bin/bash
pcount=$#
if(( pcount<1 )) ; then
echo no args;
exit;
fi
#获得文件名
p1=$1;
fname=`basename $p1`
#获得上级目录的绝对路径     -P获取物理路径
pdir=`cd -P $(dirname $p1) ; pwd`
#获取当前用户名
cuser=`whoami`
#循环
for (( host=101 ;host<105;host=host+1 )) ; do
echo ------------slave$host-----------------
rsync -rvl $pdir/$fname $cuser@slave$host:$pdir
done


2.在五台机器上执行相同命令的脚本

功能:在master节点上使用jps命令查看所有节点的情况

同时删除或是创建相同文件

$>su root
$>cd /usr/local/bin
$>touch xcall
$>chmod a+x xcall


文件内容:

#!/bin/bash
pcount=$#
if(( pcount<1 )) ; then
echo no args;
exit;
fi
echo     ----------master----------------
$@
for (( host=101 ;host<105;host=host+1 )) ; do
echo ------------slave$host-----------------
ssh slave$host $@
done


配置文件的修改

进入/hadoop/etc/hadoop目录下:

1.core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master/</value>
</property>
</configuration>


2.hdfs-site.xml

<configuration>
<property>
<name>fs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
</configuration>


3.mapred-site.xml

因为没有mapred-site.xml这个文件,因此执行命令:

$>cp mapred-site.xml.template mapred-site.xml


<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
**d.yarn-site.xml**
<?xml version="1.0" ?>
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>


4.slaves

slave1
slave2
slave3


向各节点分发配置文件

$>cd /soft/hadoop/etc/hadoop
$>xsync core-site.xml
$>xsync hdfs-site.xml
$>xsync mapred-site.xml
$>xsync yarn-site.xml
$>xsync slaves


格式化

$>hadoop namenode -format


启动hadoop集群

$>start-all.sh


查看情况

$>xcall jps


成功截图:



通过浏览器进行浏览:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: