关于Hadoop 虚拟机完全分布式的搭建

初学Hadoop会用到虚拟机VMware的搭建,这儿虚拟机的步骤就省略了,之后有时间就补上吧

虚拟机安装

VMware虚拟机的版本为14.1.3 build-9474260

Linux系统采用的是CentOs6 由于尝试了多个版本,现在看来只有6这个版本比较好用些

目录

1.客户机准备

1.1、准备3台客户机
1.2、安装JDK
1.3、配置环境变量
1.4、安装Hadoop
1.5、配置环境变量
1.6、配置集群
1.7、集群的单点启动
1.8、配置ssh
1.9、群起并测试集群

2.集群配置

2.1 配置集群
2.2 HDFS配置文件
2.3 YAEN配置文件
2.4 MapReduce配置文件

3.集群的单点启动

4.SSH免密登陆设置

5.群起集群

5.1 配置slaves
5.2 同步所有的节点
5.3群起集群

6.集群的停止方式

6.1.各个部件逐个启动/停止
6.2.各个模块分开启动停止

7.集群时间同步

7.1 检查ntp是否安装
7.2 修改ntp配置文件
7.3 修改/ntpd文件
7.4 重启ntpd服务
7.5 其他机器配置


 

下面就进行完全分布式运行模式的步骤:

1.客户机准备

1.1、准备3台客户机

由于我笔记本的内存有限,当单个虚拟机内存设置过大时,无法同时启动3台虚拟机,故此每台虚拟机的内存设置为1G。

3台客户机需要永久关闭防火墙、设置静态IP、设置主机名称(自己设置名字记好)、配置主机名称和ip地址映射

#1
vim /etc/udev/rules.d/70-persistent-net.rules
#删除旧的mac地址,复制新的mac地址,修改eth1改为eth0

#2
vim /etc/sysconfig/network-scripts/ifcfg-eth0
#将复制好的新的mac地址粘贴,并设置当前客户机的虚拟IP地址

#3
vim /etc/sysconfig/network
# 修改主机名称,自己命名,记住

#4
vim /etc/hosts
# 增加主机名和ip地址的映射,有几个加几个

#5 
chkconfig iptables off
#永久关闭防火墙

#6
reboot
#重启系统

1.2、安装JDK
1.3、配置环境变量
1.4、安装Hadoop
1.5、配置环境变量
1.6、配置集群
1.7、集群的单点启动
1.8、配置ssh
1.9、群起并测试集群

 

集群分发脚本xsync

实现数据在服务器与服务器之间的数据拷贝
#语法格式:  scp -r $pdir/$fname $user@hadoop$host:$pdir$fname

scp -r /opt/module root@hadoop102:/opt/module
#在hadoop101上,将module目录下的数据拷贝到hadoop102上去
#修改所有者的主
sudo chown atguigu:atguigu -r /opt/module

集群分发脚本

在/home/atguigu/目录下创建bin目录,并在bin目录下创建xsync脚本

mkdir bin
cd bin/
touch xsync
vi xsync

在该xsync中编(fu)写(zhi)如下代码:

#!/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 循环
#此处是从103开始遍历,到104,这个地方的主机名称自己把握
for((host=103; host<106; host++)); do
        echo ------------------- name$host --------------
        rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done

修改脚本xsync有执行权限

chmod 777 xsync

调用脚本

xsync /home/atguigu/bin

2.集群配置

集群配置是关乎到接下来能否成功启动集群。

主机名称
 

hadoop102

hadoop103

hadoop104

HDFS

 

NameNode

DataNode

 

DataNode

SecondaryNameNode

DataNode

YARN

 

NodeManager

ResourceManager

NodeManager

 

NodeManager

2.1 配置集群

core-site.xml

[atguigu@hadoop102 hadoop]$ vi core-site.xml

 打开文件,在文件中的指定位置插入

#在该文件中编写如下配置
<!-- 指定HDFS中NameNode的地址 -->
<property>
	  <name>fs.defaultFS</name>
      <value>hdfs://hadoop102:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
	  <name>hadoop.tmp.dir</name>
	  <value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>

2.2 HDFS配置文件

[atguigu@hadoop102 hadoop]$ vi hadoop-env.sh

export JAVA_HOME=/opt/module/jdk7.8.0_144
vi hdfs-site.xml

2.3 YAEN配置文件

yarn-env.sh

[atguigu@hadoop102 hadoop]$ vi yarn-env.sh

export JAVA_HOME=/opt/module/jdk7.8.0_144

 

[atguigu@hadoop102 hadoop]$ pwd
/opt/module/hadoop-2.7.2/etc/hadoop

[atguigu@hadoop102 hadoop]$ 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>hadoop103</value>
</property>

 

2.4 MapReduce配置文件

mapred-en.sh

vi mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144

#配置mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
[atguigu@hadoop102 hadoop]$ vi mapred-site.xml

 #在该文件中增加如下配置

<!-- 指定MR运行在Yarn上 -->
<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
</property>

注意:以上的配置文件只是在lyn103上配置完成,接下来我们还需要在lyn104、lyn105上进行同样的配置,

 

使用集群分发配置:

[atguigu@hadoop102 hadoop]$ xsync /opt/module/hadoop-2.7.2/

 一台一台的配置太浪费时间。若不设置免密登陆,这里每向一台主机分发一次都需要输入一次密码。

3.集群的单点启动

(1)如果是第一次启动,需要格式化NameNode

格式化 之前需要删除data和log内的文件。

[atguigu@lyn103 hadoop-2.7.2]$ rm -rf data/ logs/

格式化namenode 

hadoop namenode -format

(2)在lyn103上启动NameNode

hadoop-daemon.sh start

(3)在lyn103 lyn104 lyn105上启动DataNode
思考:若是节点增加到1000个,你要一个个的去启动吗?上班开始启动,启动完成,下班了!

4.SSH免密登陆设置

语法:ssh 另外一台电脑的IP地址,此时会让你输入目标电脑的密码,成功登陆后即可对文件进行操作,退出是exit

免密登陆原理:
 

[atguigu@lyn103 .ssh]$ pwd
/home/atguigu/.ssh
[atguigu@lyn103 .ssh]$ ssh-keygen -t rsa

三下回车,生成两个文件id_rsa(私钥)、id_rsa_pub(公钥)

将生成的公钥拷贝到目标机器上去,注:也需要拷贝一份给自己

[atguigu@lyn103 .ssh]$ ssh-copy-id lyn103
[atguigu@lyn103 .ssh]$ ssh-copy-id lyn104
[atguigu@lyn103 .ssh]$ ssh-copy-id lyn105

lyn103上有NameNode节点,它需要向其他的机器分发信息、通讯,故此需要无密的访问

lyn104上是ResourceManager,它需要控制其他节点上的NodeManager,故也需要配置ssh免密登陆,步骤同上

注意:

还需要在lyn103上采用root账号,配置一下无密登录到lyn103lyn104lyn105

还需要在lyn104上采用atguigu账号配置一下无密登录到lyn103lyn104lyn105服务器上。

5.群起集群

5.1 配置slaves

路径:/opt/module/hadoop-2.7.2/etc/hadoop/slaves

[atguigu@hadoop102 ~]$ cd /opt/module/hadoop-2.7.2/etc/hadoop/
[atguigu@hadoop102 hadoop]$ vi slaves 
localhost
hadoop102
hadoop103
hadoop104

 

注意:该文件内容,不允许有空格,也不允许有空行的出现

5.2 同步所有的节点

[atguigu@hadoop102 hadoop]$ xsync slaves

5.3群起集群

5.3.1启动HDFS,在hadoop102上启动

[atguigu@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh

 

5.3.2启动yarn

 

在hadoop103上启动

[atguigu@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh

 

6.集群的停止方式

6.1.各个部件逐个启动/停止

Hadoop

hadoop-daemon.sh start/stop namenode/  datanode/  secondarynamenode

Yarn

yarn-daemon.sh start/stop resourcemanager / nodemanager

6.2.各个模块分开启动停止

Hadoop

start-dfs.sh    stop-dfs.sh

Yarn

start-yarn.sh    stop-yarn.sh

 

7.集群时间同步

7.1 检查ntp是否安装

rpm -qa|grep ntp

7.2 修改ntp配置文件

vi /etc/ntp.conf

修改内容如下:

#a)修改1(授权192.168.1.0-192.168.1.255网段上的所有机器可以从这台机器上查询和同步时间)
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap为
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
		
#b)修改2(集群在局域网中,不使用其他互联网上的时间)
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst为
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst

c)添加3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)
server 127.127.1.0
fudge 127.127.1.0 stratum 10

7.3 修改/ntpd文件

vim /etc/sysconfig/ntpd

增加内容如下(让硬件时间与系统时间一起同步)

SYNC_HWCLOCK=yes

7.4 重启ntpd服务

[root@hadoop102 桌面]# service ntpd status
ntpd 已停
[root@hadoop102 桌面]# service ntpd start
正在启动 ntpd:                                            [确定]

7.5 其他机器配置

(root用户下)

(1)在其他机器配置10分钟与时间服务器同步一次

 crontab -e

编写定时任务如下:

*/10 * * * * /usr/sbin/ntpdate hadoop102

(2)修改任意机器时间

 date -s "2017-9-11 11:11:11"

(3)十分钟后查看机器是否与时间服务器同步

 date

说明:测试的时候可以将10分钟调整为1分钟,节省时间。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值