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

news2025/6/21 2:34:28

文章目录

  • (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.coloradmin.cn/o/1086715.html

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

相关文章

git合并分支-IDEA

有1个主分支,我从主分支拉取过来了,数据然后改好了,现在想合并到主分支上,并且将主分支的内容更新到我的分支下。用git怎么操作? 1.将主分支(master)的内容合并到我的分支(master-shi)中 在我的分支下执行 git merge master ID…

自己一天在家没事就爱折腾

来吃馍馍了,看我自己动手做的花卷,味道一定美极了,哈哈,有没有想吃的呀!快来我家,我和你一起分享。

Vue项目 -- 解决Eslint导致的console报错问题

在利用vue-cli3构建的项目中引入eslint进行语法检查时,使用console.log(‘xxx’)时,控制台抛出了Unexpected console statement (no-console) 异常, 例:一使用console就提示报错 解决办法是: 在 .eslintrc.js 文件中…

[Error]在Swift项目Build Settings的Preprocessor Macros中定义的宏无效的问题

问题 如图,在Build Settings -> Preprocessor Macros中添加了ISADEMO1。但在代码中判断无效,还是会输出“isn’t ADemo” #if ISADEMOprint("is ADemo") #elseprint("isnt ADemo") #endif解决 如图,要让Preproces…

RuntimeError: “LayerNormKernelImpl“ not implemented for ‘Half‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【AI视野·今日Robot 机器人论文速览 第五十二期】Wed, 11 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Wed, 11 Oct 2023 Totally 31 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers RoboHive: A Unified Framework for Robot Learning Authors Vikash Kumar, Rutav Shah, Gaoyue Zhou, Vincent Moens, Vittor…

【广州华锐互动】智轨列车AR互动教学系统

智轨列车,也被称为路面电车或拖电车,是一种公共交通工具,它在城市的街头巷尾提供了一种有效、环保的出行方式。智轨列车的概念已经存在了很长时间,但是随着科技的发展,我们现在可以更好地理解和欣赏它。通过使用增强现…

YOLOv3 | 核心主干网络,特征图解码,多类损失函数详解

https://zhuanlan.zhihu.com/p/76802514) 文章目录 1. 核心改进1.1主干网络1.2 特征图解码1.2.1 检测框(位置,宽高)解码1.2.2 检测置信度解码1.2.3 类别解码 1.3 训练损失函数1.3.1 正负样本定义1.3.2 损失函数 1. 核心改进 1.1主干网络 更…

React学习笔记 001

什么是React 1.发送请求获取数据 处理数据(过滤、整理格式等) 3.操作DOM呈现页面 react 主要是负责第三部 操作dom 处理页面 数据渲染为HTML视图的开源js库。 好处 避免dom繁琐 组件化 提升复用率 特点 声明式编程: 简单 组件化编程…

【Java学习之道】常用类库与工具

引言 Java类库是Java编程语言的一个重要组成部分,是Java程序员日常工作的必备工具。类库不仅提供了许多现成的、可直接使用的功能,还帮助我们简化了编程过程。 一、什么是Java类库 Java 类库是指由 Java 开发者社区共同维护和开发的一系列类和接口&am…

【从0开发】百度BML全功能AI开发平台【实操:以部署情感分析模型为例】

目录 一、全功能AI开发平台介绍二、AI项目落地应用流程(以文本分类为例)2-0、项目开始2-1、项目背景2-2、数据准备介绍2-3、项目数据2-4、建模调参介绍2-5、项目的建模调参2-6、开发部署2-7、项目在公有云的部署 附录:调用api代码总结 一、全…

Apache Doris (四十一): RESOTRE数据恢复

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 1. RESTORE数据恢复原理

④. GPT错误:导入import pandas as pd库,存储输入路径图片信息存储错误

꧂ 问题最初꧁ 用 import pandas as pd 可是你没有打印各种信息input输入图片路径 print图片尺寸 大小 长宽高 有颜色占比>0.001的按照大小排序将打印信息存储excel表格文件名 表格路径 图片大小 尺寸 颜色类型 占比信息input输入的是文件就处理文件 是文件夹&#x1f4c…

Centos7安装Gitlab--gitlab--ee版

1 安装必要依赖 2 配置GitLab软件源镜像 3 下载安装GitLab 4 查看管理员root用户默认密码 5 登录GitLab 6 修改密码 7 gitlab相关命令 1 安装必要依赖 sudo yum install -y curl policycoreutils-python openssh-server perl sudo systemctl enable sshd sudo systemctl sta…

Macos音乐制作:Ableton Live 11 Suite for Mac中文版

Ableton Live 11是一款数字音频工作站软件,用于音乐制作、录音、混音和现场演出。它由Ableton公司开发,是一款极其流行的音乐制作软件之一。 以下是Ableton Live 11的一些主要特点和功能: Comping功能:Live 11增加了Comping功能…

Delphi 生成包含图片的 HTML 文件并使用 Edge 浏览器打开

在 Delphi 中,可以使用以下代码生成包含图片的 HTML 文件,并使用 Edge 浏览器打开该文件。 procedure GenerateHTMLWithImageAndOpenWithEdge; varOpenDialog: TOpenDialog;HTMLFileName: string;HTMLContent: TStringList; beginOpenDialog : TOpenDi…

万字长文带你了解 CloudOps 自动化运维的奥秘,助力云上业务高效稳定运行

云布道师 为了更好地帮助用户提升云上 DevOps 实践效率,缩短开发周期提升业务效率的同时,也能让业务保持稳定、安全、可靠,且低成本地持续运营,阿里云弹性计算团队独家出品的【弹性计算技术公开课_CloudOps 云上运维季】正式启动。…

【C++初阶】前言——C++的发展简述及学习方法分享

主页点击直达:个人主页 我的小仓库:代码仓库 C语言偷着笑:C语言专栏 数据结构挨打小记:初阶数据结构专栏 Linux被操作记:Linux专栏 LeetCode刷题掉发记:LeetCode刷题 算法:算法专栏 C头…

基于轩禹秒杀ctfshow-RSA

目录 babyrsa easyrsa1 easyrsa2 easyrsa3 easyrsa4 easyrsa5 easyrsa6 RSA算法是一种非对称加密算法,与对称加密算法不同的是,RSA算法有两个不同的密钥,一个是公钥,一个是私钥。 CTF中常见的有:广播攻击、共…

理解线程池源码 【C++】面试高频考点

理解线程池 C 文章目录 理解线程池 C程序源码知识点emplace_back 和 push_back有什么区别?互斥锁 mutexcondition_variablestd::move()函数bind()函数join 函数 线程池的原理就是管理一个任务队列和一个工作线程队列。 工作线程不断的从任务队列取任务,然…