Day02 :Hadoop 2.x框架核心:集群环境搭建、HDFS文件系统和MapReduce计算框架

一、课程内容提纲
今天内容主要了解Hadoop 2.x框架核心:集群环境搭建、HDFS文件系统和MapReduce计算框架。

1、了解Hadoop 2.x框架发展史
2、Hadoop 2.x框架核心模块
3、构建分布式Hadoop 2.x集群构建
4、测试搭建环境
5、HDFS分布式文件系统基本知识
6、MapReduce计算框架计算模型思想

二、分布式与集群概念
大数据技术框架,基本上框架定义与概念,发现一个词: 分布式的、集群的 ,首先看看到底什么是分布式,什么是集群,有什么区别呢??

在这里插入图片描述

1、概念一:分布式(Distributed)
多台机器组成(多个服务器组建)
分布式:一个业务分拆多个子业务,部署在不同的服务器上

在这里插入图片描述
分布式表示每台服务器部署服务是不一样的,提供不同的服务功能,缓解以前集中式部署单机压力。

2、概念二:集群(Cluster)
多台机器组成(多个服务器组建)
集群:同一个业务,部署在多个服务器上集群表示的是多台机器完成相同任务的事情,比如网站访问。

在这里插入图片描述
集群表示的是多台机器完成相同任务的事情,比如网站访问。

三、Hadoop 大数据框架
大数据基础框架就是Hadoop框架,然而都知道从Google 论文发展而来。

1、Google 三大论文
三篇论文,构建大数据框架基础:

论文一:
GFS(Google FileSystem)
2003年Google发布分布式文件系统论文,使用C++语言编写框架
| Doug Cutting
NFS(Nutch FileSystem)
| 发布开源
HDFS

论文二:
MapReduce
2004年Google发布MapReduce并行计算框架,使用C++语言编写框架
| Doug Cutting
MapReduce

论文三:
BigTable(大表)
2005年Google发布BigTable分布式数据库 - Chubby
|
HBase - 涵盖Zookeeper

为什么Google需要这个三个框架呢?主要功能做什么的呢?为什么论文发布以后,编写框架呢???
在这里插入图片描述

由于Doug Cutting开发Nutch搜索引擎框架,面临海量数据存储和分析,Google发布论文以后,可以实现完成需求,使用Java语言实现三篇论文。

Hadoop框架一开始属于Nutch中一部分,其中HDFS称为NFS,MapReduce还是称为 MapReduce。

2008年1月,HADOOP成为Apache顶级项目(同年,cloudera公司成立),迎来了它的快速发展期。

2、Hadoop 发行版本
随着Hadoop框架出现,成为Apache顶级项目,有很多商业公司将其进行商业化,对其进行封装企业化操作,讲解开源处理,但是提供服务时是收费,至此有三家比较出名公司。

在这里插入图片描述

1、免费开源版【Apache】 拥有全世界的开源贡献者,代码更新迭代版本比较快版本的升级,版本的维护,版本的兼容性,版本的补丁都可能考虑不太周到,学习可以用,实际生产工作环境尽量不要使用
下载地址:
http://archive.apache.org/dist/
2、免费开源版【Cloudera】
cloudera主要是美国一家大数据公司在apache开源hadoop的版本上,通过自己公司内部的各种补丁,实现版本之间的稳定运行,大数据生态圈的各个版本的软件都提供了对应的版本,解决了版本的升级困难,版本兼容性等各种问题,生产环境强烈推荐使用
下载地址:
http://archive.cloudera.com/cdh5/cdh/5/
3、免费开源【HortonWorks】
雅虎主导Hadoop开发的副总裁,带领二十几个核心成员成立Hortonworks,核心产品软件HDP(ambari),HDF免费开源,并且提供一整套的web管理界面,供我们可以通过web界面管理我们的集群状态,web管理界面软件HDF网址(http://ambari.apache.org/)
下载地址:
https://hortonworks.com/

在实际项目中使用最多的就是CDH版本HADOOP,其次就是HDP版本HADOOP,Apache原生态开源版本几乎没有人使用,如果企业使用的话, 只能说明他们很Low,很不Professional。

3、HDFS 分布式文件系统
HDFS文件系统属于分布式架构,分为主节点Master和从节点Slaves。

1、主机点Master:NameNode
管理文件系统元数据(命名空间),比如文件名称,划分block,block存储位置等等
管理者
2、从节点Slaves:DataNodes
真正存储数据地方
小兵,干活的

在这里插入图片描述

HDFS文件系统存储数据如下图所示:

在这里插入图片描述

在实际项目中,安装部署HDFS文件系统时,NameNode和DataNode放在不同机器上运行。
4、MapReduce 并行计算框架
核心点: 分而治之 ,两个步骤:分Map、合Reduce。

1、Map Task
Map Task任务处理数据,处理的数据仅仅是一部分,数据量比较小
2、Reduce Task
将Map Task任务处理结果进行合并操作

在这里插入图片描述

上图中所有的MapTask任务(只要机器的资源充分情况下)可以同时并行运行,计算处理数据。

Hadoop框架诞生的时候,就是针对海量数据存储和分析:
1)、海量数据存储:HDFS,将数据划分为block,存储不同机器上
2)、海量数据分析:MapReduce,将数据划分很多部分,每个部分数据使用MapTask计算 分析,最终ReduceTask合并结果。

5、YARN 分布式集群资源调度系统
到Hadoop 2.x发布时,出现集群资源调度系统:YARN,管理集群资源,分配资源运行应用程序的。

分布式架构,分为主节点Master和从节点Slaves:
1、主机点Master:ResourceManager
管理整个集群资源,资源包含:内存Memory、CPU Core核数
分配资源给运行应用
2、从节点Slaves:NodeManagers
管理每个节点(机器)资源,资源包含:内存Memory、CPU Core核数
按照主节点ResourceManager指示,运行应用中Task任务。

在这里插入图片描述

所以说YARN框架管理整个集群资源,可以提供不同应用运行,YARN都会分配资源,比如说
运行MR应用、Spark应用和Flink应用。

接下来,YARN框架如下运行提交应用程序的呢??? 以运行MapReduce程序为例讲解,画图演示

在这里插入图片描述

其中注意两点:
1)、每个应用都有一个管理者:AppMaster
2)、无论是AppMaster还是Task都是运行在NodeManager中容器Contanier中,封装资源

四、搭建Hadoop 2.x 分布式集群

前面已经说明Hadoop 2.x框架包含三个模块:HDFS、YARN、MapReduce。

在这里插入图片描述

搭建分布式集群,具体步骤如下所示:
1、规划集群机器
2、集群基础环境准备
3、搭建Hadoop 2.x集群

1)、HDFS 集群
2)、YARN 集群
3)、配置MR运行模式 针对分布式集群安装部署来说,每台服务器安装软件版本和目录必须要一致,不能不同。

1、规划集群机器
使用三台虚拟机搭建集群,主机名称:node01、node02和node03

主机名称/组件 node01 node02 node03
HDFS 集群 NameNode
DataNode DataNode DataNode
YARN 集群 ResourceManager
NodeManager NodeManager NodeManager
MapReduce MRJobHistoryServer

将MapReduce应用程序运行到YARN集群上,当运行完成以后,需要监控应用运行状态,如果运行失败,需要查看失败原因(查看日志信息),所以需要启动MapReduce
历史服务器,专门用于查看运行完成应用。

2、集群基础环境准备

当规划海集群机器及服务安装位置以后,需要对集群环境进行初始化准备。

1、配置主机名称、IP地址及映射
已经完成(提供虚拟机)
hostname
ifconfig
/etc/hosts
2、配置主机SSH无密钥登录
已经完成(提供虚拟机)
ssh node01
ssh node02
ssh node03
3、关闭防火墙及禁用SELINUX
已经完成(提供虚拟机)
service iptables status
more /etc/sysconfig/selinux
4、安装JDK,此处使用JDK8
hadoop 框架使用Java编写的,运行服务都是JVM进程,所以需要按照JDK。

1.修改/etc/sysconfig/network,追加: 
echo "NETWORKING_IPV6=no" >>/etc/sysconfig/network 

2.修改/etc/hosts,把ipv6的那句本地主机名解析的也注释掉: 
#::1 localhost localhost6 localhost6.localdomain6 

3./etc/modprobe.d/dist.conf结尾添加: 
echo "alias net-pf-10 off" >>/etc/modprobe.d/dist.conf 
echo "alias ipv6 off" >>/etc/modprobe.d/dist.conf 
4、重启系统 reboot 

5、查看网卡 ip a

在实际项目中,将系统IPv6给以禁用。

在CentOS 6.x上安装JDK 1.8,具体操作步骤命令如下:

1)、查看是否已经安装JDK,如果安装就卸载 
	CentOS 6.x默认安装OpenJDK,所以需要卸载 
	rpm -qa|grep java 
================================ node01 上操作 	================================ 
2)、上传jdk软件至/export/softwares目录 
	使用rz上传 
3)、赋予执行权限 
	chmod u+x jdk-8u144-linux-x64.tar.gz 
4)、解压至/export/servers目录 
	tar -zxf jdk-8u144-linux-x64.tar.gz -C /export/servers/ 
5)、创建软连接(Window快捷方式) 
	cd /export/servers/jdk1.8.0_144/ 
	ln -s jdk1.8.0_144 jdk 
6)、配置环境变量 
	vim /etc/profile
	添加内容: 
	# JAVA HOME 
		export JAVA_HOME=/export/servers/jdk 
		export PATH=:$PATH:$JAVA_HOME/bin 
	使其生效: 
		source /etc/profile 
7)、验证 
java -version 
	java version "1.8.0_144" 
	Java(TM) SE Runtime Environment (build 1.8.0_144-b01) 
	Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
8)、分发JDK安装包至node02和node03 
	scp -r jdk1.8.0_144 root@node02:/export/servers/ 
	scp -r jdk1.8.0_144 root@node03:/export/servers/ 
	
	ln -s /export/servers /jdk1.8.0_144 /export/servers/jdk

	配置环境变量,类似node01
	

为什么创建软连接呢???

创建软连接好处在于后期方便升级软件的版本,最大好处,希望记住。

3、搭建Hadoop 2.x集群

参考教案即可。
教案:

编辑配置文件时,使用远程编辑工具:Notepad++,具体操作如下:
在这里插入图片描述在这里插入图片描述
创建连接,添加相关连接信息,如下图所示:

在这里插入图片描述
回顾总结配置哪些文件,通过思维导图展示:
在这里插入图片描述

为什么说【slaves】配置文件指定DataNode和NodeManager运行的机器呢??

分析问题: 一台机器核心资源就是:内存Memory、CPU Core核数及硬盘Disk,恰好DataNode存储数据需要Disk,NodeManager运行任务需要Memory和CPU Core核数,所以一台机器既可以是DataNode节点,又可以是NodeManager节点,充分利用资源进行存储和计算数据。

在这里插入图片描述
4、启动集群服务
先启动HDFS文件系统服务、再启动YARN服务,最后启动MRJobHistoryServer服务。
4.1、启动HDFS服务

第一步、由于第一次启动HDFS服务,所以需要对文件系统进行初始化(格式化操作)
在node01上,NameNode安装在此台机器
hdfsnamenode -format
当没有出现任何错误,说明初始化OK,否则查看异常信息,进行解决
第二步、启动NameNode服务
在node01上启动 hadoop-daemon.sh start namenode

在这里插入图片描述

第三步、启动DataNodes服务 在node01上启动 hadoop-daemons.sh start datanode

在这里插入图片描述

第四步、WEB UI访问 NameNode提供WEB UI界面,用于访问HDFs文件系统 http://node01:50070

在这里插入图片描述

4.2、启动YARN服务
启动YARN服务与启动HDFs服务类似,只不过不需要格式任何东西。

第一步、启动ResourceManager服务 在node01上启动,RM服务在node01上 yarn-daemon.sh start
resourcemanager
在这里插入图片描述

第二步、启动NodeManagers服务 在node01上启动

在这里插入图片描述

第三步、WEB UI访问 RM提供WEB UI界面,端口为8088 http://node01:8088

在这里插入图片描述
4.3、启动历史服务器
启动MapReduce 历史服务器,主要用于监控运行完成MapReduce程序,命令如下:

mr-jobhistory-daemon.sh start historyserver

在这里插入图片描述

提供WEB UI界面,端口号19888
地址为:http://node01:19888
在这里插入图片描述

5、测试验证集群

HDFS文件系统提供命令方式操作文件系统,命令基本上类似Linux系统命令,比如
创建目录:mkdir
读取文件:cat
删除文件:rm

首先测试HDFS文件系统,创建目录,上传数据集(滴滴出行订单数据):

# 创建目录 
hdfs dfs -mkdir -p /datas 
# 上传文件:将数据放到HDFS文件系统上 
hdfs dfs -put /export/data/dwv_order_make_haikou_2.txt /datas/

在这里插入图片描述

运行官方字段MapReduce程序:计算圆周率PI,运行到YARN集群上
yarn jar xx.jar 提交应用至集群
jar包位置:$HADOOP_HOME/share/hadoop/mapreduce /hadoop-mapreduce-examples-2.6.0-cdh5.14.0.jar

使用方式如下:

yarn jar /export/servers/hadoop/share/hadoop/mapreduce/hadoop-mapreduce- examples-2.6.0-cdh5.14.0.jar 
An example program must be given as the first argument. 
Valid program names are: 
	aggregatewordcount: An Aggregate based map/reduce program that counts the words in the input files. 
	aggregatewordhist: An Aggregate based map/reduce program that computes the histogram of the words in the input files. 
	bbp: A map/reduce program that uses Bailey-Borwein-Plouffe to compute exact digits of Pi. 
	dbcount: An example job that count the pageview counts from a database. 
	distbbp: A map/reduce program that uses a BBP-type formula to compute exact bits of Pi. 
	grep: A map/reduce program that counts the matches of a regex in the input. 
	join: A job that effects a join over sorted, equally partitioned datasets 
	multifilewc: A job that counts words from several files. 
	pentomino: A map/reduce tile laying program to find solutions to pentomino problems. 
	pi: A map/reduce program that estimates Pi using a quasi-Monte Carlo method. 
	randomtextwriter: A map/reduce program that writes 10GB of random textual data per node. 
	randomwriter: A map/reduce program that writes 10GB of random data per node. 
	secondarysort: An example defining a secondary sort to the reduce. 
	sort: A map/reduce program that sorts the data written by the random writer. 
	sudoku: A sudoku solver. 
	teragen: Generate data for the terasort terasort: Run the terasort
	teravalidate: Checking results of terasort 
	wordcount: A map/reduce program that counts the words in the input files. 
	wordmean: A map/reduce program that counts the average length of the words in the input files. 
	wordmedian: A map/reduce program that counts the median length of the words in the input files.
	wordstandarddeviation: A map/reduce program that counts the standard deviation of the length of the words in the input files. 

运行PI圆周率,指定参数【pi】

yarn jar /export/servers/hadoop/share/hadoop/mapreduce/hadoop-mapreduce- examples-2.6.0-cdh5.14.0.jar pi
Usage: org.apache.hadoop.examples.QuasiMonteCarlo <nMaps> <nSamples> 
Generic options supported are
-conf <configuration file> specify an application configuration file
-D <property=value> use value for given property
-fs <local|namenode:port> specify a namenode
-jt <local|resourcemanager:port> specify a ResourceManager
-files <comma separated list of files> specify comma separated files to be copied to the map reduce cluster
-libjars <comma separated list of jars> specify comma separated jar files to include in the classpath.
-archives <comma separated list of archives> specify comma separated archives to be unarchived on the compute machines. 

The general command line syntax is 
bin/hadoop command [genericOptions] [commandOptions]

上述提示表示,需要指定参数值:

yarn jar /export/servers/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.14.0.jar pi 2 100000

发现当给定pi圆周率后续参数值越大,计算圆周率Pi准确,使用蒙特卡罗估算方式计算圆周率。

在这里插入图片描述

注意针对当前hadoop 2.6版本来说,有一个异常,属于警告,实际运行时出现可以不管。
在这里插入图片描述

五、企业Hadoop 2.x集群高可用
由于HDFS和YARN分布式主从架构,当Client客户端请求服务时,首先找的时主节点(NameNode、ResourceManager),如果主节点挂掉,无法对外提供服务。

1)、HDFS分布式文件系统来说
用户读写HDFS上数据,找的时NameNode(告知Client文件在哪里),如果NameNode机器宕机,不能继续读写数据,停止服务。
2)、YARN分布式集群资源管理系统来说
用户提交应用给ResourceManager,由RM生成应用管理者和分配资源,如果RM机器宕机,无法继续接受提交应用,计算数据。

方案:可以启动两个主机点,一个是Active(活动,对外提供服务),一个是Standby(时刻备份)。

第一、HDFS高可用
NameNode(Active)、NameNode(Standby),借助于ZK Cluster集群实现自动故障转移
在这里插入图片描述

2、YARN高可用 与HDFS高可用类似,两个RM,一个是Active,一个Standby,使用ZK集群进行自动故障转移
在这里插入图片描述

在实际项目中,无论是测试环境、还是生产环境,HDFS和YARN都应该配置高可用,尤其是HDFS集群。

注:此文章参考陈凯老师讲解

展开阅读全文

Windows版YOLOv4目标检测实战:训练自己的数据集

04-26
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值