写点什么

This BigData,Hadoop 组成及生态

用户头像
Simon郎
关注
发布于: 2021 年 05 月 21 日
This BigData,Hadoop组成及生态

引言

随着科技的发展,我们在网上留下的数据越来越多,大到网上购物、商品交易,小到浏览网页、微信聊天、手机自动记录日常行程等,可以说,在如今的生活里,只要你还在,你就会每时每刻产生数据,但是这些数据能称为大数据么?不,这些还不能称为大数据。那么大数据数据到底是什么呢?

大数据概述

定义

百度百科的定义:大数据是指无法在一定时间范围内用常规的软件工具进行捕捉、管理和处理的大数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

可以总结出大数据的特点:

数据量大,需用采取某些工具才能采集,进而做分析计算。

举个例子来解释下:

Simon 是个成龙影片的爱好者,他在网站上搜集到了 100G 的成龙经典电影**(采集),为了收藏这些电影,他决定把这些电影都存储起起来(存储),有一天 Simon 突然想看成龙的主演的“十二生肖”,这部电影就在他存储的 100G 影片中,所以 Simon 按照上映年份(分析计算)**找出了这部电影并观看了它。

因此,我们可以把大数据的定义凝练如下:

大数据主要解决的是海量数据的采集存储分析计算问题

所谓大数据,数据的规模是怎么衡量呢?

数据单位

衡量数据的规模,需要先认识数据的单位。按照数据单位的从小到大划分,依次为:bit、Byte、KB、MB、GB、TBPBEB、ZB、YB、BB、NB、DB

单位之间的换算如下:

1 Byte =8 bit

1 KB = 1,024 Bytes = 8192 bit

1 MB = 1,024 KB = 1,048,576 Bytes

1 GB = 1,024 MB = 1,048,576 KB

1 TB = 1,024 GB = 1,048,576 MB

1 PB = 1,024 TB = 1,048,576 GB

对于我们来讲,接触最多的可能是 KB、MB、GB 等单位。

但是由于计算机计算性能的不同,如果放在上古时代的计算机,让它们处理 GB 级别的数据就已经算是极限了;对于现在内存普遍是 128G 的服务器,多台并行处理 EB 级别的数据也不在话下。

数据意义与价值

每个时代都有对数据的定义,关键的目标是要挖掘出数据背后的意义和价值

数据量那么大,格式又各不相同,我们处理数据的意义何在呢?

试想下,再大的数据也是由许许多多的小数据组成,大数据可以认为是数据的集合,我们可以从这些数据中推理出一个近似客观的规律,利用这个规律可以预测产生数据的本体下一次要发生的概率。如一个用户经常在某电影网站上观看成龙的电影,那么当该用户下一次访问电影网站时,将有关成龙的电影放在推荐列表中比较靠前的位置,因为我们通过用户的浏览的数据发现他很喜欢成龙的电影,并且相信相信该用户的兴趣短时内不会发生变化。

这是大数据在生活中的一个简单应用--挖掘用户的偏好,建立推荐模型

数据时代,我们的数据具有海量,多样性,实时性,不确定性等特点。那么,我们要存储,处理这些特点的海量数据,用什么样的方式或说什么样的平台比较适合呢,经过多年的技术发展和自然选择,Hadoop 分布式模型脱颖而出。

因此,学习大数据肯定绕不开Hadoop,但是对于接触大数据时间较短或者尚未接触过大数据的同学来说,如果问他们我们应该学习 Hadoop 的那些内容,分布式存储计算一定会说出来,但是仅仅这两个概念还是太笼统了,那么我们应该怎样把控 Hadoop 的学习呢,莫慌,且听Simon郎慢慢道来。

Hadoop 概述

Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构,它主要解决的是海量数据的存储和海量数据的分析计算问题,从广义上来说,Hadoop 通常是指 Hadoop 生态圈

我们先看 Hadoop 的组成结构,然后介绍 Hadoop 生态圈

Hadoop 组成

Hadoop 的组成结构在 1.x 2/3.x 有所不同,如下图所示

Hadoop 主要是由:就计算资源调度数据存储辅助工具组成。

  • 在 Hadoop1.x 时代,Hadoop 中的 MapReduce同时处理业务逻辑运算和资源调度,耦合性较大。

  • 在 Hadoop2/3.x 时代,增加了YarnYarn只负责资源的调度,MapReduce只负责运算

Note:资源调度指的是 CPU、内存、服务器计算的选择等

接下来,我们分别介绍:

  • 用于存储的 HDFS

  • 用于资源调度的 YARN

  • 用于计算的 MapReduce

HDFS 架构概述

Hadoop Distributed File System,简称 HDFS,是一个分布式文件系统 ,HDFS 的结构图如下:

HDFS 架构包含一个 NameNode、DataNode 和备用 SecondaryNode

  • NameNode(nn)

NameNode(nn)就是 Master,它是一个主管,管理者,它主要有以下功能:

①管理 HDFS 的名称空间

②配置副本策略(如数据配置几个副本)

③管理数据块(block)的映射信息

数据存在 Datanode 的哪些数据块中,分布式存储的

④处理客户端的请求

  • DataNode(dn)

DataNode 就是 Slave,NameNode 下达命令,DataNode 执行实际的操作。

①存储实际的数据块

②执行数据块的读/写操作

  • Secondary NameNode(2nn)

①辅助 NameNode,分担其工作量,比如定期合并 Fsimage 和 Edits,并推送给 NameNode

②在紧急情况下,可辅助恢复 NameNode。

NOTE:Secondary NameNode 并非 NameNode 的热备,即当 NameNode 挂掉的时候,它并不 能马上替换 NameNode 并提供服务。

YARN 架构概述

Yet Another Resource Negotiator 简称 YARN,它是 Hadoop 的资源管理器,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而 MapReduce 等运算程序则相当于运行于操作系统之上的应用程序。如下图所示:

YARN 主要由 ResourceManagerNodeManagerApplicationMasterContainer 等组件构成。

  • ResourceManager(RM):整个集群资源(内存、cpu 等)的老大

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

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

  • Container:容器,相当于一台独立的服务器,里面封装了任务运行所需的资源,如内存、CPU、磁盘、网络等。

NOTE:

ResourceManager 是一个 Master,在每一个子节点以下都有一个 NodeManager,由 RM 给 NM 分配资源。在每一个节点中还会有 ApplicationMaster(后面简称 AM)的东西。他会负责与 RM 通信以获取资源,还会与 NM 通信来启动或者是停止任务。

MapReduce 架构概述

MapReduce 是一个分布式运算程序的编程框架,是用户开发“基于 Hadoop 的数据分析应用”的核心框架。他的核心功能是将用户编写的业务逻辑代码自带默认组件整合成一个完整的分布式运算程序,并发运行在一个 Hadoop 集群上。

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

  • Map 阶段并行处理输入数据

  • Reduce 阶段对 Map 结果进行汇总

三者之间的关系

HDFS、YARN、MapReduce 三者之间的关系

  • 从 HDFS 中读取数据

  • Yarn 资源调度处理这些数据

  • MapReduce 收到 Yarn 的指令后开启相应的 MapTask 任务和 ReduceTask 任务

  • 处理后的数据被存储在 HDFS 中

你以为 Hadoop 结束了,NO! NO! NO! Hadoop 生态圈了解一波~

好吧,继续学!

Hadoop 生态圈

先看一张Hadoop生态体系的脑图。

妈耶,咋那么多内容啊,快把我干懵逼了。千万别懵,虽然看起来很多,但是可以用一句总结:Hadoop 是一个分布式计算开源框架,提供了一个分布式系统子项目(HDFS)和支持 MapReduce分布式计算软件架构。既然脑图的内容有点多,咱们就介绍几个在 Hadoop 生态圈中占有地位较高的几个组件,如果小伙伴对其它组件感兴趣,可以自行查阅。

  • Hive

Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,通过类 SQL 语句快速实现简单的 MapReduce 统计,不必开发专门的 MapReduce 应用,十分适合数据仓库的统计分析。

  • Hbase

Hbase 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用 Hbase 技术可在廉价 PC Server 上搭建起大规模结构化存储集群。

  • Sqoop

Sqoop 是一个用来将 Hadoop 和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(MySQL ,Oracle ,Postgres 等)中的数据导进到 Hadoop 的 HDFS 中,也可以将 HDFS 的数据导进到关系型数据库中

  • Zookeeper

Zookeeper 是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。

  • Ambari

Ambari 是一种基于 Web 的工具,支持 Hadoop 集群的供应、管理和监控。

  • Oozie

Oozie 是一个工作流引擎服务器, 用于管理和协调运行在 Hadoop 平台上(HDFS、Pig 和 MapReduce)的任务。

  • Hue

Hue 是一个基于 WEB 的监控和管理系统,实现对 HDFS,MapReduce/YARN, HBase, Hive, Pig 的 web 化操作和管理。

.........

Hadoop 生态体系先介绍这么多,对其它内容感兴趣的同学自行补充。

学习资源

为了方便大家学习大数据,我整理了一份大数据学习资源,包含了学习路线视频项目

私信我或者加我微信:langyakun9768

用户头像

Simon郎

关注

自学;制学;博学 2019.10.09 加入

公众号:小郎码知答

评论 (2 条评论)

发布
用户头像
哎呀o,不错哦
2021 年 05 月 22 日 11:47
回复
麦洛哥,一起学习呀
2021 年 05 月 24 日 10:36
回复
没有更多了
This BigData,Hadoop组成及生态