大数据实战——hadoop集群崩溃与故障的初始化恢复

Posted 北溟溟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据实战——hadoop集群崩溃与故障的初始化恢复相关的知识,希望对你有一定的参考价值。

前言

在hadoop的使用过程中,由于操作不善,导致集群数据丢失、宕机无法重启等等,这个时候我们如何将我们的hadoop集群恢复到初始化状态呢,本节内容就是针对hadoop集群由于误操作,或者数据丢失等等,我们想将错误数据清理,使hadoop集群恢复到初始化状态。以下是具体的操作过程。

正文

 ①检查hadoop集群状态,如果集群中存在hadoop的服务进程,将hadoop的所有服务组件都关闭

命令:myhadoop.sh status

②关闭hadoop集群服务组件

命令:myhadoop.sh stop

 ③清理hadoop集群安装目录下的data和logs目录

rm -rf /opt/module/hadoop-3.1.3/data

rm -rf /opt/module/hadoop-3.1.3/logs

④在hadoop101节点执行hdfs namenode -format命令,格式化namenode节点

命令:hdfs namenode -format

⑤重启hadoop集群组件服务

命令:myhadoop.sh start

⑥查看hadoop集群组件服务状态,组件都以启动完毕

命令:myhadoop.sh status

⑦访问hadoop的web客户端测试集群是否启动成功

结语

关于将hadoop集群恢复到初始化状态的内容到这里就结束了,其核心就是我们需要将旧的数据目录和日志目录删除,重新格式化我们的namenode节点,生成新的数据存储目录和日志目录,重新启动hadoop服务,这样一个初始化的hadoop环境就恢复好了。这样我们下期见。。。。。。

大数据实战——hadoop集群实现免密登录和文件互传

前言

本节内容我们主要介绍一下hadoop集群服务器之间实现免密登录和文件互传的功能,这样更加方便我们使用hadoop服务器实现服务器之间的相互登录和文件的相互传输。集群之间的访问不在需要授权就可以实现相互访问。

正文

  • SSH免密登录

①分别在hadoop101、hadoop102、hadoop103的home目录下执行ssh命令

#生成ssh连接的公私钥
ssh-keygen -t rsa

 

②将hadoop101的免密公钥拷贝到自身服务器和hadoop02与hadoop103的服务器上,实现hadoop101免密登录自身服务器hadoop102与hadoop103服务器

命令:

#将公钥拷贝到hadoop101机器上
ssh-copy-id hadoop101
#将公钥拷贝到hadoop102机器上
ssh-copy-id hadoop102
#将公钥拷贝到hadoop103机器上
ssh-copy-id hadoop103

③同上操作,在hadoop102也执行此项操作

④同上操作,在hadoop103上执行此项操作

⑤测试免密登录,hadoop集群之间实现互相访问

  • 服务器之间文件互传

①使用scp实现文件互传

#scp命令语法 
scp -r $dir/$filename $user@$host:$dir/$filename
# -r 递归 
# $dir 要拷贝的文件路径
# $filename 拷贝文件的名称 
# $user 目的地用户
# $host 主机地址
# $dir  目的地路径
# $filename 目的地文件名称

 

② 使用rsync 远程同步工具实现文件共享

- rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

- rsync 和 scp 区别:用 rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更 新。scp 是把所有文件都复制过去。

#rsync 实现服务器之间文件共享
rsync -av $dir/$fname $user@$host:$dir/$fname
#rsync 命令 
#-av 选项参数:归档拷贝,显示复制过程 
#$dir 要拷贝的文件路径
#$fname 拷贝的文件名称 
#$user 目的地用户
#$host 目的地主机
#$dir 目的地路径
#$fname 目的地文件名称

 

③使用自定义脚本hsync 集群分发文件

- 查看可执行的脚本目录echo $PATH

- 在/root/bin目录下创建可执行文件脚本hsync,并授予可执行权限

- 使用vi编辑器写入以下脚本

#!/bin/bash
#1. 判断参数个数,此处的传参为文件名称或者目录名称
if [ $# -lt 1 ]
then
 echo Not Enough Arguement!
 exit;
fi


#2. 遍历集群所有机器
for host in hadoop101 hadoop102 hadoop103
 do
 echo ==================== $host ====================
 #3. 遍历所有目录,挨个发送
 for file in $@
	 do
	 #4. 判断文件是否存在
	 if [ -e $file ]
	 then
		 #5. 获取父目录
		 pdir=$(cd -P $(dirname $file); pwd)
		 #6. 获取当前文件的名称
		 fname=$(basename $file)
		 ssh $host "mkdir -p $pdir"
		 rsync -av $pdir/$fname $host:$pdir
	 else
		echo $file does not exists!
	 fi
 done
done

- 测试分发脚本

hsync /root/bin/hsync 

 

结语

至此,关于hadoop集群之间实现免密登录和文件互传的内容到这里就结束了,我们下期见。。。。。。

以上是关于大数据实战——hadoop集群崩溃与故障的初始化恢复的主要内容,如果未能解决你的问题,请参考以下文章

大数据实战之Centos搭建完全分布式Hadoop集群

大数据实战——hadoop集群组件启动及服务组件配置修改

大数据实战——hadoop集群实现免密登录和文件互传

大数据实战——hadoop的模板虚拟机搭建

flink hadoop 从0~1分布式计算与大数据项目实战zookeeper内部原理流程简介以及java curator client操作集群注册,读取

大数据实战之Hadoop常用命令及API应用