绪论
1.Hadoop组成
-
Hadoop组成
- hadoop1.0组成MapReduce+HDFS+Common
- Hadoop3.0组成MapReduce+Yarn+HDFS+Common
-
1.1HDFS架构概述
- NameNode:存储文件的元数据,文件名、目录、以及属性等。以下简称(NN)
- 在集群中nn只有一个节点,所以nn是很重要的。如果nn的丢失会造成数据的无法找到指定的
- 文件。
- DataNode:在本地文件系统的存储位置,在集群的每台服务器上都有,备份数据。每台服务器上存储的数据
- 资源都是一样的,虽然磁盘空间的损耗很大但是,极大的保证了数据的安全性。
- SecondaryNameNode(2nn):作为nn的助手,每隔一段时间就会对nn进行备份。
-
1.2.YARN 概述
- YARN用于资源的调度,主要资源:内存和CPU。
-
ResourceManger:主要作用
-
1.处理客户端请求
-
2.监控NodeManger
-
3.负责CPU和内存的调度
-
4.分配部分资源给appmstr用于任务的启动。
NodeManger的主要作用:
1.负责资源的调度
2.处理来自RM的指令
3.处理来自AppMastr的指令
AppMastr是在有任务的时候就有。主要作用在于启动任务,向RM发出请求,要求资源调度。
如果nm资源调配不够,RM来分配资源。
-
1.3MapReduce概述
- Map负责资源的阶段并行对数据进行处理。
- Reduce阶段对处理的map数据进行汇总。
-
1.3大数据生态
2.Hadoop开发环境搭建
- 2.1模板虚拟机准备
-
1)准备一台模板虚拟机hadoop100,虚拟机配置要求如下: 注:本文Linux系统环境全部以CentOS-7.5-x86-1804为例明
模板虚拟机:内存4G,硬盘50G,安装必要环境。 - 模板机安装过程如下:
- 安装centos7.5安装过程选择最小化安装。最小化安装性能好,但很多软件没有所以需要联网从yum网上下载部分依赖。
- 下图是安装完成好最小安装的界面。(备注如不会安装Centos7.5.详情可以查看我的上一个博客里面有详细介绍)
- 输入root账户以及密码登录服务器。
登录后执行下列命令从yum网站下载依赖。
下载之前先检查服务器能否正常上网。
[root@hadoop100 ~]# yum install -y epel-release
[root@hadoop100 ~]# yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl-static tree iotop git
2)关闭防火墙,关闭防火墙开机自启
[root@hadoop100 ~]#systemctl stop firewalld
[root@hadoop100 ~]#systemctl disable firewalld
3)创建atguigu用户,并修改atguigu用户的密码
[root@hadoop100 ~]# useradd atguigu
[root@hadoop100 ~]# passwd atguigu
4)配置atguigu用户具有root权限,方便后期加sudo执行root权限的命令
[root@hadoop100 ~]# vim /etc/sudoers 修改/etc/sudoers文件或者命令visudo,找到下面一行(91行),在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
atguigu ALL=(ALL) NOPASSWD:ALL
-
5)在/opt目录下创建文件夹,并修改所属主和所属组
(1)在/opt目录下创建module、software文件夹
[root@hadoop100 ~]# mkdir /opt/module
[root@hadoop100 ~]# mkdir /opt/software
(2)修改module、software文件夹的所有者和所属组均为atguigu用户
[root@hadoop100 ~]# chown atguigu:atguigu /opt/module
[root@hadoop100 ~]# chown atguigu:atguigu /opt/software
(3)查看module、software文件夹的所有者和所属组
[root@hadoop100 ~]# cd /opt/
[root@hadoop100 opt]# ll
总用量 12
drwxr-xr-x. 2 atguigu atguigu 4096 5月 28 17:18 module
drwxr-xr-x. 2 root root 4096 9月 7 2017 rh
drwxr-xr-x. 2 atguigu atguigu 4096 5月 28 17:18 software
-
6)卸载虚拟机自带的open JDK
-
[root@hadoop100 ~]# rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
-
由于第一次装所以不存在虚拟机自带jdk。
- 2.2克隆虚拟机
1)利用模板机hadoop100,克隆三台虚拟机:hadoop102 hadoop103 hadoop104。
2)修改克隆机IP,以下以hadoop102举例说明
(1)修改克隆虚拟机的静态IP
[root@hadoop100 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
改成
DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
NAME="ens33"
IPADDR=192.168.1.102
PREFIX=24
GATEWAY=192.168.1.2
DNS1=192.168.1.2
(2)查看Linux虚拟机的虚拟网络编辑器,编辑->虚拟网络编辑器->VMnet8
(3)查看Windows系统适配器VMware Network Adapter VMnet8的IP地址
(4)保证Linux系统ifcfg-ens33文件中IP地址、虚拟网络编辑器地址和Windows系统VM8网络IP地址相同。
(2.4)修改hosts文件。vim /etc/hosts
上面都是以Hadoop102为列。另外Hadoop103,Hadoop104也需要配置IP地址和主机名hostname。
目的在于通过配置ip和hostname文件。让ip和主机名捆绑起来,通过主机名就能访问ip.ip对于相关的服务器。
这也是为啥把IP设置为静态IP的原因。
- 2.3在Hadoop上安装JDK和Hadoop上安装hadoop
- 在三台服务器完成IP以及主机名完成之后就可以在Hadoop102上开始安装jdk了。通过FinalShell工具把jdk-8u144-linux-x6
- 4和hadoop-3.1.3.tar.gz上传到Hadoop102的 /opt/software目录下。
2.4解压:解压jdk到 /opt/module/。tar -zxvf jdk-8u144-linux-x64 -C /opt/module。
解压hadoop到 /opt/module/ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module。
- 2.5配置环境变量
在hadoop102上配置jdk和hadoop环境变量:
[atguigu@hadoop102]$cd /etc/profile.d/
[atguigu@hadoop102]$touch my_env.sh
[atguigu@hadoop102]$sudo 755 my_env.sh
[atguigu@hadoop102]$ vim my_env.sh
#!/biin/bash
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk-8u144-linux-x64/bin
export PATH=$PATH:$JAVA_HOME/bin
#HADOOP_HOME
export HADOOP_HOME=/opt/mdule/hadoop-3.1.3/
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
测试是否成功:
重新断开ssh连接。或者执行命令。[atguigu@hadoop102 hadoop-3.1.3]$ source /etc/profile
[atguigu@hadoop102] echo $PATH
- 2.6Hadoop结构目录介绍
重要目录
(1)bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
(2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
(3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
(4)sbin目录:存放启动或停止Hadoop相关服务的脚本
(5)share目录:存放Hadoop的依赖jar包、文档、和官方案例
3.Hadoop运行模式
- 3.1本地模式
- 所谓本地模式就是在本地磁盘上存,本地磁盘上算。没有运用到HDFS存和MapReduce算。默认安装好的服务器就是本地模式。
- 3.2伪分布式
- 假装分布式模式。
- 3.3完全分布式模式(重点)
-
1)准备3台客户机(关闭防火墙、静态ip、主机名称)
2)安装JDK
3)配置环境变量
4)安装Hadoop
5)配置环境变量
6)配置集群
7)单点启动
8)配置ssh
9)群起并测试集群
-
4.配置Hadoop
- 4.1虚拟机准备
-
详见前面两章。
- 4.2编写集群分发脚本
- 4.2.1scp和xsync以及xsync三种方法文件传输方法
-
1)scp(secure copy)安全拷贝
(1)scp定义:
scp可以实现服务器与服务器之间的数据拷贝。(from server1 to server2)
(2)基本语法
scp -r $pdir/$fname $user@hadoop$host:$pdir/$fname
命令 递归 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
-
把hadoop102的jdk和hadoop拷贝到hadoop103.
-
命令:
-
scp -r /opt/module/jdk-8u144-linux-x64/bin atguigu@hadoop103:/opt/module/
在hadoop103上从hadoop102传输hadoop-3.1.3到hadoop103。
[atguigu@hadoop103 module] scp -r /opt/module/hadoop-3.1.3 atguigu@hadoop102 /opt/module/
(c)在hadoop103上操作,将hadoop102中/opt/module目录下所有目录拷贝到hadoop104上。
[atguigu@hadoop103 opt]$ scp -r atguigu@hadoop102:/opt/module/* atguigu@hadoop104:/opt/module
2.) 分发脚本实现服务器文件的同步。
[atguigu@hadoop102 ~]$ cd /home/atguigu
[atguigu@hadoop102 home]$ mkdir bin
[atguigu@hadoop102 bin] $touch xsync
[atguigu@hadoop102 bin]$ chmod 755 xsync
[atguigu@hadoop102]$ vim xsync
把xsync复制到 根目录的/bin目录下。
[atguigu@hadoop102 bin] $cp xsync /bin/c
测试脚本:
把xsync分发给每台服务器。
[atguigu@hadoop102 ~] $ xsync bin/
查看其它hadoop103,hadoop104都有xsync脚本。
- 4.3SSH免密登录
- 由于每次传输文件都需要数密码都很麻烦,使用配置集群之间的免密登录。
- 免密登录原理:
- 服务器A想要登录服务器B那么先把服务器A的公钥发送给服务器B,当A服务器向B服务器发送登录请求时服务器B把授权的公钥发送回服务A。服务器A把服务器B的密码打包发送给服务器B就可以登录服务器B了。
- 过程采用的是非对称加密算法:通过非对称加密算法的核心要求需要是就算别存在第三方截获公钥也不能推算出私钥。
- 但是可能存在第三方攻击。可能在服务器A向服务器B发送请求时服务器C截获了其请求,给服务器A发送了虚假的公钥,这就要求咱们能够辨认发送过来的公钥是否是授权的公钥。
命令如下:
[atguigu@hadoop102 ~]$ssh-keygen -t rsa
连续按三次回车。生成公钥和私钥对。
生成的公钥和私钥会存在/home/atguigu/.ssh/
然后把公钥发送给hadoop102
[atguigu@hadoop102 ~]$ssh-copy-id hadoop102
利用xsyn 把公钥和私钥发送给其他服务器。
[atguigu@hadoop102 ~]$xsyn .ssh/
测试免密登录:
剩余集群搭建请看下期更新。
谢谢观看。