Hadoop完全分布式部署过程

完全分布式

在这里插入图片描述

集群分发脚本 xsync

即循环复制文件到所有节点的同步目录下,使用命令为

## 与scp相似
rsync -rvl 目录 远程目录

脚本内容如下:

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if ((pcount==0)); then
    echo no args;
    exit;
fi

#2 获取文件名称
p1=$1
## basename 获取相对路径或者绝对路径的文件的文件名
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
## dirname 获取路径的目录名称
## cd -P 进入到真是目录,如果是软链接则进入到软链接真实的目录下
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
## whoami 获取当前用户名称
user=`whoami`

#5 循环
for((host=113; host<116; host++)); do
    echo ------------------- hadoop$host --------------
    rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done

集群配置

部署规划

hadoop113hadoop114hadoop115
HDFSNameNode、DataNodeDataNodeSecondaryNameNode、DataNode
YARNNodeManagerResourceManger、NodeManagerNodeManager

环境变量文件hadoop-env.sh、yarn-env.sh、mapred-env.sh等需要配置JAVA_HOME

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

core-site.xml

<!-- 指定 HDFS 中 NameNode 的地址 -->
<!-- 默认值为file:/// 为本地模式,也就是说不配置的话默认使用本地文件系统 -->
<!-- 配置了hdfs:// 之后本地模式则不能使用了 -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop113:9000</value>
</property>

<!-- 指定 Hadoop 运行时产生文件的存储目录 -->
<!-- 默认存储到/tmp/hadoop-${user.name}中 -->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>

hdfs-site.xml

<!-- 指定 HDFS 副本的数量,副本的概念是在x台服务器上存储了相同的数据,容错 -->
<!-- 伪分布式设置为1,默认为3 -->
<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>

<!-- 指定 Hadoop 辅助名称节点主机配置 -->
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop115:50090</value>
</property>

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>hadoop114</value>
</property>

mapred-site.xml(没有的话,将mapred-site.xml.template重命名即可)

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

每个服务器上进行相关,可以使用xsync来进行分发。

集群启动

首次启动的时候记得去格式化NameNode,记得将相关进程以及文件夹删除。

hadoop namenode -format

为了解决一个一个节点启动导致时间的浪费,那么需要进行群起集群。

ssh无密码登录配置

免密登录原理

在这里插入图片描述

# 在113和114上配置,以为NameNode和ResourceManger需要用到
## 生成公钥和私钥
ssh-keygen -t rsa
## 然后直接三下回车即生成

## 分别将公钥拷贝到113、114、115上
ssh-copy-id hadoop113
ssh-copy-id hadoop114
ssh-copy-id hadoop115

## 同时需要为113配置root免密访问

在这里插入图片描述

群起集群
## 配置slaves
vim /opt/module/hadoop-2.7.2/etc/hadoop/slaves

## 加入所有的DataNode节点的地址以下内容,切记不要加多余的空格和换行符,否则会出现预期之外的错误
hadoop113
hadoop114
hadoop115

## 下发到各个服务器
xsync /opt/module/hadoop-2.7.2/etc/hadoop/slaves

启动集群HDFS的所有节点,注意这里必须以bd用户进行启动,如果是root用户的或其他节点会启动不成功。

sbin/start-dfs.sh

查看打印的日志可知与我们预期的HDFS的节点启动相同,也可以通过jps在各个服务器进行查看。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8jMbdPcZ-1622795604270)(/home/lxj/.config/Typora/typora-user-images/1622789272103.png)]

启动集群Yarn的所有节点,注意必须在ResourceManger所在服务器进行启动。

sbin/start-yarn.sh
文件的存储路径

上传到hdfs的文件是存在各个DataNode上的,并且可以在上面配置的存储目录中找到。对于大文件,如果它的大小大于块的大小(默认128MB),它会被分隔开存在多个块当中,这个分割就是单纯的将文件流按照大小进行分割,找到该文件的存储地址的话,将分隔开的文件按顺序拼接起来的话,能够还原该大文件。

以hadoop113为例的话,文件保存的实际路径是/opt/module/hadoop-2.7.2/data/tmp/dfs/data/current/BP-1284647261-10.10.10.113-1622790151545/current/finalized

集群停止

## 单节点
### HDFS
hadoop-daemon.sh start/stop namenode/datanode/secondarynamenode

### YARN
yarn-daemon.sh start/stop resourcemanager/nodemanager

## 集群
### HDFS
start-dfs.sh / stop-dfs.sh

### YARN
start-yarn.sh / stop-yarn.sh

Crontab定时任务调度

## servic命令
service crond restart/start/stop

## 编辑crontab定时任务
crontab -e

## 查看crontab任务
crontab -l

## 删除当前用户所有的crontab任务
crontab -r

在这里插入图片描述
在这里插入图片描述

集群时间同步——集群一定要配置的

时间同步的方式:找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时
的同步,比如,每隔十分钟,同步一次时间。

在这里插入图片描述

时间服务器配置(以root用户来配置)

以hadoop113作为ntp服务器。

1、检查ntp是否安装

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

## 如果没有安装的话,使用以下命令安装
yum install ntp

2、修改ntp配置文件

vim /etc/ntp.conf

内容如下:

## 修改/新增授权 10.10.10.1-10.10.10.255 网段上的所有机器可以从这台机器上查询和同步时间
restrict 10.10.10.0 mask 255.255.255.0 nomodify notrap

## 注释集群在局域网中,不使用其他互联网上的时间
# 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 127.127.1.0
fudge 127.127.1.0 stratum 10

3、修改/etc/sysconfig/ntpd 文件

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

4、重启ntpd服务

service ntpd restart

5、设置开机自启动

chkconfig ntpd on
其他机器配置(以root用户来配置)

设置定时同步任务

## crontab定时任务调度
crontab -e

## 内容如下,每10分钟向hadoop113同步一次时间
*/10 * * * * /usr/sbin/ntpdate hadoop113

然后测试一下,测试方法可以是修改服务器的时间,然后等待查看时间是否同步成功了

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值