Hadoop3教程(一):Hadoop的定义、组成及全生态概览

文章目录

  • (1)定义
    • 1.1 发展历史
    • 1.2 三大发行版本
    • 1.3 Hadoop的优势
    • 1.4 Hadoop的组成
  • (13)HDFS概述
  • (14)Yarn架构
  • (15)MapReduce概述
  • (16) HDFS、YARN、MapReduce三者关系
  • (17)大数据技术生态体系
  • 参考文献

(1)定义

Hadoop是一个由Apache基金会开发的一个分布式系统基础架构

分布式,指多台机器共同来完成一项任务。

用途:解决海量数据的存储和分析计算问题

广义上来讲,Hadoop通常是指一个更广泛的概念:Hadoop生态圈。包含了很多基于Hadoop架构衍生发展出来的其他的东西,如HBASE等

1.1 发展历史

创始人Doug Cutting,他最初的目的是为了实现与Google类似的全文搜索功能,于是他在Lucene框架的基础上进行优化升级,查询引擎和索引引擎。

2001年底,Lucene框架称为Apache基金会的一个子项目。

对于海量数据的场景,Lucene同样遇到了跟Google一样的困难:海量数据存储难、海量的检索速度慢。

Doug 模仿Google,提出了一个微型版Nutch来解决这个问题。他基于谷歌提出的三篇论文,分别提出了HDFS、MR、HBase,因为可以认为Google是Hadoop的思想之源。

2006.03,MR和Nutch Distributed File System(NDFS)分别被纳入到了Hadoop项目中,Hadoop正式诞生。

Hadoop这个名字和logo来源于Doug儿子的玩具大象。

1.2 三大发行版本

Hadoop有三大发型版本:Apache、Cloudera、Hortonworks。

Apache版本,最原始且最基础的版本,非常适用于入门学习,开源,2006年正式提出。

Cloudera版本,在原始版本基础上集成了大量的大数据框架,2008年推出,对应商用产品CDH。

Hortonworks版本,也封装了自己的一套,2011年推出,对应产品HDP。

目前,Hortonworks已经被Cloudera公司收购,推出新的品牌CDP。

后两个版本都是商业收费的。

Cloudera,08年成立,是最早将Hadoop商用的公司,为合作伙伴提供商业解决方案。09年,Hadoop的创始人cutting也加入了该公司。

Hortonworks,2011年成立,主体是雅虎

在这里插入图片描述

1.3 Hadoop的优势

  1. 高可靠性。每份数据都会分布式维护多个副本,即使某台存储服务器出问题,也不会导致数据的丢失。
  2. 高扩展性。可以动态扩展计算节点以支持更庞大的计算需求,而不需要影响现有任务。
  3. 高效性。在MR的指导思想下,Hadoop是并行工作的。以加快任务处理速度。
  4. 高容错性。能够自动的将失败的任务重新分配。比如说某个子任务崩了,这时候会自动将这一计算任务迁移到其他节点重新计算,不影响整体计算。

1.4 Hadoop的组成

Hadoop1.x的组成:

  • common(辅助工具)
  • HDFS(数据存储)
  • MapReduce(计算 + 资源调度):还负责调度计算内存资源等功能。

MR耦合性较大。

在这里插入图片描述

Hadoop2.x的组成:

  • common(辅助工具)
  • HDFS(数据存储)
  • Yarn(资源调度)
  • MapReduce(计算)

可以看到,资源调度和计算已经分离了。

Hadoop3.x跟2.x相比,在组成上没有区别。

在这里插入图片描述

(13)HDFS概述

Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。

负责海量数据的存储。

NameNode:存储文件的元数据,如文件名、文件目录结构、文件属性、每个文件的块列表以及每个块所在的DataNode,简称叫做nn;

DataNode:是具体存储数据的位置,也负责块数据的校验和。

2NN:辅助NameNode的工作。每隔一段时间对NameNode元数据备份。

(14)Yarn架构

Yet Another Resource Negotiator,简称YARN,是一种资源协调者,是Hadoop的资源管理器。

YARN的两个核心组成组件:

  • Resource Manager:整个集群的资源的管理者,管理着一个及以上数量的NodeManager;
  • NodeManager:单节点资源的管理者,可能是管理着单台服务器的资源。

NodeManager中,单个任务会被放在一个container中来执行,待执行完成后,就直接释放掉整个container。

客户端提交job到ResourceManager,由ResourceManager负责协调指挥NodeManager们的工作。

客户端可以有多个;集群上可以运行多个ApplicationMaster;每个NodeManager可以有多个Container。

一个contrainer容器分配的内存,是1G~8G,最少一个CPU。

(15)MapReduce概述

负责计算。

将计算过程分成两部分:

  • Map:将大任务分割成一个个小任务,以作并行处理;
  • Reduce:将一个个小任务的运行结果合并作为大任务的运行结果,即对Map的结果进行汇总。

举例说明:

假设我有一万篇笔记,我想找到其中一篇,

如果我自己找的话,需要一个人看完这1w篇笔记;

但是我可以找100个人帮我一起找,把这1w篇笔记分成100组,给那100个人,然后每个人看100篇文档。(这就是Map的过程)

最后每个人再把查的结果反馈给我,我做下汇总,就可以知道我想要找的那篇在哪儿了。这个过程就是Reduce。

在这里插入图片描述

(16) HDFS、YARN、MapReduce三者关系

在这里插入图片描述

觉得需要注意的一点是,client提交任务到YARN的ResourceManager之后,ResourceManager会在任一节点启动一个Container,运行一个App Mstr,这个App Mstr比较重要。

接下来的流程,按我的理解是这样的:

首先App Mstr会计算当前任务运行所需的资源等,并向ResourceManager发出资源申请,告诉它,我需要xx个节点来运行我的任务;

其次当ResourceManager按照App Mstr的要求,为它分配了xx个节点之后,App Mstr会在这些节点上分别启动MapTask进行计算。

最后会在某个节点上启动一个ReduceTask,来汇总各个MapTask的结果。

再最后,ReduceTask的执行结果,可能会写入HDFS的DataNode,做持久化保存。

(17)大数据技术生态体系

在这里插入图片描述

上图举例了一个经典的大数据技术生态体系,从图上来看,

数据来源层,分这么三大类:

  • 结构化数据,如数据库,有行+有列;
  • 半结构化数据,如文件日志,有行+分隔符间隔的列;
  • 非结构化数据,如视频和ppt等。

数据传输层,即分别使用什么方式,来采集不同来源的数据:

  • 结构化数据 -> Sqoop数据传递;
  • 半结构化数据 -> Flume日志收集;
  • 非结构化数据 -> Kafka消息队列(处理结构化和半结构化其实都可以)

数据存储层

  • Sqoop数据传递 + Flume日志收集 -> HDFS文件存储;
  • Flume日志收集 -> HBase非关系型数据库
  • Kafka消息队列,自带文件存储。

资源管理层

  • YARN

数据计算层

  • MapReduce离线计算 -> hive数据查询;
  • Spark Core 内存计算 -> Spark Mlib数据挖掘(基于代码) + Spark SQL数据查询
  • 实时计算 -> Storm实时计算(基本认为是过气了) + Spark Streaming实时计算 + Flink;

任务调度层

  • Oozie任务调度
  • Azkaban任务调度

贯穿各层的,负责数据平台配置和调度的:

  • zookeeper

业务模型层

  • 业务模型、数据可视化、业务应用

图中涉及到的技术名词进行解释:

  • sqoop:sqoop是一款开源工具,主要用于hadoop、hive与传统的数据库(如MySQL)间进行数据传递。可以将关系型数据库中的数据导进Hadoop的HDFS里,也可以将HDFS中的数据通过sqoop导入关系型数据库里;
  • Flume:分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;
  • Kafka:分布式分布订阅消息系统;
  • Spark:当前最流行的开源大数据内存计算框架。可以基于Hadoop上存储的数据进行计算;
  • Flink:当前最流行的开源大数据内存计算框架。主要用于实时计算场景;
  • Oozie:是一个管理Hadoop作业的工作流程调度管理系统;
  • Hbase:分布式的、面向列的开源数据库。不同于一般的关系型数据库,Hbase是一个适合于非结构化数据存储的数据库;
  • Hive:基于Hadoop体系的一个数据仓库工具,
    • 可以将结构化的数据文件映射为一张数据库表,如此更加直观的展现HDFS上存储的数据;
    • 提供了简单的SQL查询功能,不需要再直接编写MapReduce任务了,直接使用SQL查询即可,hive会自动将SQL查询转换成对应的MR任务在后台执行,从而大大降低了学习成本,不需要再手写MR代码了,只要学会SQL就可以。十分的适合数据仓库的统计分析。
  • ZooKeeper:是一个针对大型分布式系统的可靠的协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。

教程讲到这里还给了一个推荐系统的框架图,以简单的实例来讲解,大数据这些框架是如何结合在一起来解决实际问题的。

参考文献

  1. 【尚硅谷大数据Hadoop教程,hadoop3.x搭建到集群调优,百万播放】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/105143.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【排序算法】详解冒泡排序及其多种优化稳定性分析

文章目录 算法原理细节分析优化1优化2算法复杂度分析稳定性分析总结 算法原理 冒泡排序(Bubble Sort) 就是从序列中的第一个元素开始,依次对相邻的两个元素进行比较,如果前一个元素大于后一个元素则交换它们的位置。如果前一个元素小于或等于后一个元素…

课题学习(七)----粘滑运动的动态算法

一、 粘滑运动的动态算法 在实际钻井过程中,钻柱会出现扭振和粘滑现象(粘滑运动–B站视频连接),但并不总是呈现均匀旋转。如下图所示,提取一段地下数据时,转盘转速保持在100 r/min,钻头转速在0-…

Java设计模式之六大设计原则

为什么要学习设计模式? 要知道设计模式就是软件工程的方法经验的总结,也是可以认为是过去一段时间软件工程的一个最佳实践,要理解,不要死记硬背。掌握这些方法后,可以让你的程序获得以下好处: 代码重用性…

膝关节检测之1设计目标手势与物体交互的动画

原来只用unity自带的IK,发现背部不能动,且手和手指的移动和旋转试了好像没法通过animation实现(加入关键帧并修改最终状态的数值后播放没有变化,确定最终关键帧的数值已经改了的)。看资料,发现final IK&…

thinkphp6入门(9)-- 获取url路径中的应用名、控制器名、操作名

如果使用了多应用模式,可以通过下面的方法来获取当前应用 app(http)->getName(); 获取当前控制器 Request::controller(); 获取当前操作 Request::action(); 在中间件middleware中是无法获取控制器和操作的 需要将middleware的引入修改为 config 目录下的 ro…

乐器经营商城小程序的作用是什么

乐器产品覆盖的人群非常广,小学生、老年人都有不小需求,也因此市场中的从业商家相对较多,产品丰富可供消费者选购,然而在实际经营中,线上线下面临痛点不少。 通过【雨科】平台搭建乐器小程序商城,将所有产品…

CCF CSP认证 历年题目自练Day31

题目一 试题编号: 202206-1 试题名称: 归一化处理 时间限制: 500ms 内存限制: 512.0MB 题目背景 在机器学习中,对数据进行归一化处理是一种常用的技术。 将数据从各种各样分布调整为平均值为 0、方差为 1的标准分布&a…

Stm32_标准库_9_TIM

频率(HZ)是频率的基本单位1HZ是1s的倒数 STM32F103C8T6一般情况给定时器的内部时钟都是72MHz(系统主频率) TIM基本构成 计数器、预分频器、自动化重装 // 都是16位其中计数器、自动化重装,都是16位换算成10进制范围为[0, 655536] 时间 1 /…

【全网最细】谷歌小恐龙无敌代码它来了!

谷歌小恐龙是什么? 每次断网的时候,大家是不是都会玩一会,小恐龙快跑的游戏,或者在信息课上玩一玩,对不对? 还没玩过的小伙伴也不用担心,打开谷歌,输入这段网址:chrome…

C++智能指针(三)——unique_ptr初探

与共享指针shared_ptr用于共享对象的目的不同,unique_ptr是用于独享对象。 文章目录 1. unqiue_ptr的目的2. 使用 unique_ptr2.1 初始化 unique_ptr2.2 访问数据2.3 作为类的成员2.4 处理数组 3. 转移所有权3.1 简单语法3.2 函数间转移所有权3.2.1 转移至函数体内3.…

软件工程与计算总结(十一)人机交互设计

目录 ​编辑 一.引例 二.目标 三.人类因素 1.精神模型 2.差异性 四.计算机因素 1.可视化设计 2.常见界面类型 五.人机交互设计的交互性 1.导航 2.反馈 3.设计原则 六.设计过程 1.基本过程 2.界面原型化 一.引例 无论软件功能多么出色,亦或内部的构造…

LENOVO联想笔记本小新 Pro-14 2021AMD处理器ACH版(82MS)原厂Win10系统

下载链接:https://pan.baidu.com/s/1-KZ8Y9NmkS7nDXcMbhZLHw?pwdyrkx 系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、lenovo联想电脑管家等预装程序 所需要工具:16G或以上的U盘 文件格式:ISO 文件大小&#xff1…

深入篇【C++】总结智能指针的使用与应用意义(auto_ptr/unique_ptr/shared_ptr/weak_ptr)底层原理剖析+模拟实现

深入篇【C】总结智能指针的使用与应用意义&&(auto_ptr/unique_ptr/shared_ptr/weak_ptr)底层原理剖析模拟实现 智能指针的出现智能指针的使用应用意义/存在问题智能指针原理剖析模拟实现auto_ptrunique_ptrshared_ptrweak_ptr 智能指针的出现 首先我们要理…

vscode ssh linux C++ 程序调试

vscode调试c++程序相比vs2022要复杂很多,vs2022可以"一键运行调试",vscode则需要自己配置。 ​vscode调试程序时,会在当前工作目录产生.vscode 目录, 该目录有两个重要文件launch.json和tasks.json, 下面介绍两种调试方法: 手动调试和自动调试。 手动调试 不管…

VUE树结构实现

实现效果: 数据库表结构如下: 要求:需要有parentId,id。parentId就是父记录的id 表数据要求:一定不要让一条记录的parentid和id相同 前端代码: 注意:el-table标签里面需要加上属性,才可以有下拉箭头的样式 <el-table v-loading="listLoading" :data

Spring Boot中的异步编程:解决的问题与应用场景

Spring Boot中的异步编程&#xff1a;解决的问题与应用场景 在现代Web应用程序中&#xff0c;高并发和性能是至关重要的。为了处理大量的请求和任务&#xff0c;异步编程成为了不可或缺的一部分。Spring Boot提供了强大的异步编程支持&#xff0c;可以显著提高应用程序的吞吐量…

【Java 进阶篇】JavaScript Math对象详解

在JavaScript编程中&#xff0c;Math对象是一个非常有用的工具&#xff0c;用于执行各种数学运算。它提供了许多数学函数和常数&#xff0c;可以用于处理数字、执行几何运算、生成随机数等。在本篇博客中&#xff0c;我们将深入探讨JavaScript中Math对象的各种功能和用法。 什…

LiveMedia视频中间件视频隐私打码直播解决方案

一、方案背景 随着科技的发展&#xff0c;视频监控系统已经成为了我们生活中不可或缺的一部分。无论是在公共区域&#xff0c;还是在私人场所&#xff0c;我们都可以看到各种各样的监控设备。这些设备的出现&#xff0c;无疑提高了我们的生活安全&#xff0c;使得我们可以更好地…

Gin,Gorm实现Web计算器

目录 仓库链接0.PSP表格1. 成品展示1.基础运算2. 清零回退3.错误提示4.历史记录拓展功能1.前端可修改的利率计算器2.科学计算器3. 按钮切换不同计算器模式4.用户在一次运算后不清零继续输入操作符&#xff0c;替换表达式为上次答案 2.设计实现过程3.代码说明4.心路历程和收获 仓…

企业级CI/CD 持续集成/交付/发布

jenkins 安装与使用 nmcli g hostname jenkins 加载缓存 yum makecache fast 上传jdk11、jdk8 获取、上传war包 1、jenkins.io/download 2.4.27 2、老师发的 上传 maven 上传tomcat软件包 &#xff08;apache.org-tomcat8-下载&#xff09; 注意8009端口 /usr... vi /etc/pro…