原生Hadoop集群的搭建与配置

原生Hadoop集群的搭建与配置

前言

将近三个月没写点新东西了,上班果然让人懒得动弹……在这家公司实习干的事情很杂,前段时间被叫去了解了一下Hadoop,主要看了看哔站尚硅谷的Hadoop教程,整理出了一篇搭建的文档,今天稍微修改一下发出来。

教程网址:

尚硅谷丨大数据Hadoop 3.x(2021全新升级/部署+源码+实战)

尚硅谷Hadoop 2.x教程(hadoop框架精讲)

0.有关概念

官方文档地址:Apache-Hadoop

Hadoop是什么
  • Hadoop是一个由Apache基金会所开发的分布式系统基础架构
  • 主要解决海量数据的存储和海量数据的分析计算问题。
Hadoop的组成

0-1

  • HDFS:Hadoop Distributed File System,分布式文件系统
  • YARN:Yet Another Resource Negotiator,Hadoop 的资源管理器
  • MapReduce: 大规模并行数据处理的数据模型
HDFS的架构
  • NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、 文件权限),以及每个文件的块列表和块所在的DataNode等。 (相当于存储的是书本的目录)
  • DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。 (相当于存储的是书本的具体内容)
  • Secondary NameNode(2nn):每隔一段时间对NameNode元数据备份。 (对书本目录的备份)
YARN的架构
  • ResourceManager(RM):整个集群资源(内存、CPU等)的老大

  • NodeManager(NM):单个节点服务器资源老大

  • ApplicationMaster(AM):单个任务运行的老大

  • Container:容器,相当一台虚拟的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等(从真实的服务器中封装出来的)

0-2

MapReduce 的架构

MapReduce 将计算过程分为两个阶段:Map 和 Reduce

  • Map 阶段:并行处理输入数据
  • Reduce 阶段:对 Map 结果进行汇总

0-3

HDFS、YARN、MapReduce工作流程

0-4

Hadoop的运行模式
  • (独立)本地模式: 无需任何守护进程,所有的程序都运行在同一个JVM上执行。在独立模式下调试MR程序非常高效方便。所以一般该模式主要是在学习或者开发阶段调试使用 。
  • 伪分布式模式: Hadoop守护进程运行在本地机器上,以一台服务器作为一个集群。单机运行,但是具备Hadoop 集群的所有功能
  • 完全分布式模式:多台服务器各司其职,组成分布式环境,Hadoop守护进程运行在一个集群上

注:所谓分布式要启动守护进程 ,即:使用分布式hadoop时,要先启动一些准备程序进程,然后才能使用比如start-dfs.sh start-yarn.sh。而本地模式不需要启动这些守护进程 。

1.Hadoop的安装与配置

1.0.需要材料
  • 服务器:若干(最好三台以上)。本次用的是虚拟机,Linux版本为centos7

  • 安装包:Java安装包,最好为jdk1.8

    ​ Hadoop安装包 本次使用的版本为2.10.1

1.1.准备工作
1.1.0.如果是虚拟机中,需要关闭防火墙、配置静态IP,请自行配置
1.1.1.修改服务器主机名

在集群中,为了方便区分,应当给每一个主机分配一个主机名称。

  • 打开/etc/hostname文件
vim /etc/hostname
  • 在第一行输入主机名称后,直接保存即可

1.1.1-1

检验:输入hostname查看主机名称

hostname

1.1.1-2

1.1.2.配置服务器主机名称映射

现在要访问其他服务器,需要通过ip地址的方式。配置主机名称映射,可以直接通过主机名称来访问服务器。

  • 打开/etc/hosts文件
vim /etc/hosts
  • 在末尾追加集群内其他服务器的ip地址,主机名。直接保存即可。

1.1.2-1

1.1.3.配置服务器之间的ssh免密登录
  • 生成服务器的公钥与私钥
ssh-keygen -t rsa

输入命令后,连续按三次enter即可

1.1.3-1

检验:到root/.ssh中,可以查看到新生成的两个文件,其中id_rsa保存的是本机的私钥,id_rsa.pub保存的是本机的公钥

cd /root/.ssh

1.1.3-2

  • 配置ssh免密登录,需要让服务器获得被访问服务器的公钥

  • 将本服务器的公钥拷贝给集群内所有服务器(包括自己

ssh-copy-id node03

1.1.3-3

根据提示输入yes 和 node03的密码

检验:测试是否能成功连接

ssh node03

1.1.3-4

可以看到,已经可以连接到node03了

到node03中的/root/.ssh目录中看,生成了一个authorized_keys的文件,该文件保存了能无密码访问本机的服务器的公钥

1.1.3-5

1.1.4.编写集群分发脚本

在集群机器配置时,经常需要将一个文件或目录copy到同样的多台集群上,如果一个一个机器去复制,比较麻烦。

编写xsync同步脚本,只需要一条命令就可以实现这个目的。

注:xsync其实是对rsync脚本的二次封装,脚本内容可以根据自己需要进行修改。

步骤如下:

  • 检查一下是否安装rsync
rpm -q rsync
  • 如果没有安装rsync,先安装
yum install -y rsync
  • 进入到用户主目录的bin目录下
cd /bin
  • 创建一个xsync文件
vim xsync
  • 输入如下脚本(主机名、路径请自行修改)
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
 	echo Not Enough Arguement!
 	exit;
fi
#2. 遍历集群所有机器
for host in node02 node03 node04
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
  • 使脚本可用
chmod +x xsync
  • 用本脚本直接将脚本文件发送到其他服务器
xsync xsync

1.1.4-1

到另外两台节点的bin目录下查看,可以看到多了xsync脚本

1.1.4-2

注:此后我们修改环境变量、集群的配置文件时,编写好后直接使用该命令发送到其他服务器,就不需要一个个去修改了。

不使用集群分发脚本的话,以下步骤在要在每一台机器中重复执行

1.2.为服务器配置Java环境
1.2.1.将安装包上传到服务器

为了方便管理,本次在/opt/目录下新建一个software目录,一起上传到里面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值