您的位置:首页 > 大数据 > Hadoop

hadoop完全分布式的搭建

2020-07-13 05:53 239 查看

完全分布式就是克隆三台虚拟机,用来近似模拟生产环境下各进程的分布与机器运行情况。

集群部署规划:

准备:

三台可以联网的虚拟机(ping www.baidu.com 可以通),为了便于阅读以下内容,
约定主机名分别是hadoop102、hadoop103、hadoop104

编写集群分发脚本xsync

scp:
secure copy 服务器间数据的安全拷贝
示例:scp -r /opt/module/*  root@hadoop102:/opt/module
rsync:
rsync远程同步工具,主要用于备份和镜像。
具有速度快、避免复制相同内容和支持符号链接的优点
rsync和scp区别:
用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。
scp是把所有文件都复制过去。
参考脚本如下:(将文件分别分发到103与104上)
#!/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=103; host<105; host++)); do
echo --------------------- hadoop$host ----------------
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done

SSH无密登录配置

生成一对秘钥:ssh-keygen -t rsa
公钥的分发:ssh-copy-id hadoop103
注意自身也要保证可以无密登录
最后登录试一下,如下图所示:(如在hadoop102,可以ssh hadoop103)

配置集群

(1) 核心配置文件
vim core-site.xml
<!-- 指定HDFS中NameNode的地址,102节点 -->
<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) hdfs配置文件
vim hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_171
vim hdfs-site.xml
<!-- 文件副本数,3份 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>

<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:50090</value>
</property>
vim slaves
<!-- 指定集群节点的域名 -->
hadoop102
hadoop103
hadoop104
(3) yarn配置文件
vim yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_171
vim 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>
(4) mapreduce配置文件
vim mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_171
vim mapred-site.xml
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

在集群上分发配置好的Hadoop配置文件

分发后最好自己检查下是否分发成功。
比如slaves文件开始写的local本地,看是否改成

hadoop102
hadoop103
hadoop104

启动集群

如果集群是第一次启动,需要格式化NameNode(注意删除data/ logs/两个文件夹)
[root@hadoop102 hadoop-2.7.2]$ bin/hdfs namenode -format
启动hdfs: sbin/start-dfs.sh
注意:之前配置文件已经设定好,只能在hadoop102上运行此命令
与yarn类似,yarn设定在hadoop103上,启动yarn的命令只能在103运行

启动yarn:sbin/start-yarn.sh

注意:NameNode和ResourceManger如果不是同一台机器,
不能在NameNode	上启动 yarn,
应该在ResouceManager所在的机器上启动yarn。

对于集群的启动与停止,常用群起脚本

配置时间同步实操:

  1. 时间服务器配置(必须root用户)
    (1)检查ntp是否安装
    [root@hadoop102 桌面]# rpm -qa|grep ntp
    ntp-4.2.6p5-10.el6.centos.x86_64
    fontpackages-filesystem-1.41-1.1.el6.noarch
    ntpdate-4.2.6p5-10.el6.centos.x86_64
    (2)修改ntp配置文件
    [root@hadoop102 桌面]# vi /etc/ntp.conf
    修改内容如下
    a)修改1(授权192.168.1.0网段上的所有机器可以从这台机器上查询和同步时间)
    #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
    (3)修改/etc/sysconfig/ntpd 文件
    [root@hadoop102 桌面]# vim /etc/sysconfig/ntpd
    增加内容如下(让硬件时间与系统时间一起同步)
    SYNC_HWCLOCK=yes
    (4)重新启动ntpd
    [root@hadoop102 桌面]# service ntpd status
    ntpd 已停
    [root@hadoop102 桌面]# service ntpd start
    正在启动 ntpd: [确定]
    (5)执行:
    [root@hadoop102 桌面]# chkconfig ntpd on
  2. 其他机器配置(必须root用户)
    (1)在其他机器配置2分钟与时间服务器同步一次
    [root@hadoop103 hadoop-2.7.2]# crontab -e
    编写脚本(每两分钟与hadoop102同步一次时间)
    */2 * * * * /usr/sbin/ntpdate hadoop102
    (2)修改任意机器时间
    [root@hadoop103 hadoop]# date -s “2017-9-11 11:11:11”
    (3)2分钟后查看机器是否与时间服务器同步
    [root@hadoop103 hadoop]# date
    小技巧:可以使用命令一键全发,免得切换耽误时间
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: