Hadoop大数据系统架构(深入浅出)

news2024/10/2 14:23:28

目录

  • 1. Hadoop生态体系
  • 2. Hadoop集群硬件架构
  • 3. Hadoop体系分层功能架构
  • 参考资料

导读: 从资源管理角度来看,当前的大数据系统架构主要有两种:一种是 MPP数据库架构 ,另一种是 Hadoop体系的分层架构。这两种架构各有优势和相应的适用场景。

传统的系统已无法处理结构多变的大数据,而高性能硬件和专用服务器价格昂贵且不灵活,Hadoop因此应运而生。Hadoop使用互连的廉价商业硬件,通过数百甚至数千个低成本服务器协同工作,可有效存储和处理大量数据。

1. Hadoop生态体系

Google通过三篇重量级论文为大数据时代提供了三项革命性技术:GFSMapReduceBigTable,即所谓的Google大数据的“三驾马车”。

  • GFS(Google File System)Google面向大规模数据密集型应用的、可伸缩的分布式文件系统,可在廉价的硬件上运行,并具有可靠的容错能力。

  • MapReduce是一种并行编程模式,可以在超大分布式集群上并行运算,对超大规模数据集进行处理。

  • BigTable是在GFS上构建的处理结构化数据的分布式数据库,可以用于处理海量数据的更新和随机查询。

HadoopHbase是基于这三项技术发展出的开源实现。在大数据分析和处理领域,Hadoop兼容体系已经成为一个非常成熟的生态圈,涵盖了很多大数据相关的基础组件,包括Hadoop、Hbase、Hive、Spark、Flink、Storm、Presto、Impala等。

2. Hadoop集群硬件架构

Hadoop集群遵循主从架构,由一个或多个主节点(控制节点)和大量从节点组成,可以通过增减节点实现线性水平扩展。集群中的每个节点都有自己的磁盘、内存、处理器和带宽。主节点负责存储元数据,管理整个集群中的资源,并将任务分配给从节点;从节点负责存储数据并执行计算任务。

Hadoop包含三大组件:HDFSYarnMapReduceHDFS负责将文件切分为固定大小的数据块,以多副本分布式方式进行存储。Yarn是资源管理器,通过不同的进程执行资源管理和任务调度/监控任务。MapReduce是计算层,它通过将数据处理逻辑抽象为Map任务和Reduce任务,将“计算”在贴近数据存储位置并行执行。

Hadoop集群硬件架构如图1所示,具体的组件部署结构分析如下。

  • 主节点上:部署HDFSNameNode组件,管理命名空间,管理客户端对文件的访问,负责跟踪数据块到DataNode的映射;部署YarnResourceManager组件,管理整个集群中的资源。

  • 从节点上:部署HDFSDataNode组件,服务于客户端的读/写请求;部署YarnNodeManager组件,监视本节点容器的资源使用情况,并将其报告给Resource-Manager;运行MapReduce的容器。
    在这里插入图片描述

▲ 图1 Hadoop集群硬件架构

3. Hadoop体系分层功能架构

Hadoop设计了一个在分布式集群上实现资源管理与功能水平分层的架构,该分层解耦架构让大家可以在Hadoop上不断地叠加组件,并且每个组件可以独立升级,同类组件可以相互竞争,不断提升性能。作为Hadoop生态系统的核心,HDFS、YARN、MapReduce形成了一个灵活的基座,并以此为基础扩展出了非常多的Hadoop兼容开源项目和软件。

Hadoop体系架构可分为四层,上层一般需要依赖下层的组件,层与层之间相互透明,仅基于下层组件的接口进行交互,四层从下到上分别为分布式存储层、分布式计算资源管理层、分布式并行处理框架层、分析应用层,如图2所示。
在这里插入图片描述

▲ 图2 Hadoop体系的分层架构

每层的功能具体说明如下。

(1)分布式存储层
HDFS是一个分布式文件存储系统,它将统一管理整个集群的所有存储空间,并将写入的数据切分成相同大小的数据块,每个数据块保存多个副本(通常是三个),每个副本存储在不同的从节点上,以避免因单节点故障造成数据丢失。HDFS主节点(NameNode)保存命名空间、文件名、每个数据块及所有副本的元数据信息。

在大数据量情况下,文件存储格式与压缩方法对读写效率影响非常大。在HDFS上的数据格式主要包括文本、KV格式、行式存储格式、列式存储格式。具体的文件格式举例如下。

  • 文本:Text。

  • KV格式:SequenceFile、MapFile。

  • 行式存储:AvroFile。

  • 列式存储:RCFile、ORCFile、Parquet、CarbonData,其中CarbonData是带索引的列式存储格式,由华为贡献给开源社区。

(2)分布式计算资源管理层

YARN(Yet Another Resource Negotiator)是一个资源协商器,它将统一管理和调度整个集群的计算资源,并将接收到的计算任务拆分到各个节点执行。如果一个节点运行缓慢或失败,YARN会将节点上的任务取消,然后分发到数据的其他副本所在节点进行运算。YARN作为资源协商器,可以让大量的应用程序和用户有效地共享集群计算资源,即支持多租户,这些数据处理可以是批处理、实时处理、迭代处理等。

最初,HadoopMapReduce组件同时负责资源管理和数据处理。Hadoop 2.0引入了YARN后将这两个功能分开。基于YARN,我们为Hadoop编写的不同组件可以非常方便地集成到Hadoop生态系统中,例如SparkGiraphHive等项目,以及MapReduce本身。

YARN框架内有ResourceManagerNodeManager组件:ResourceManager在集群的主节点上运行,负责接收计算任务,并在所有竞争应用程序之间做资源分配;NodeManager在从节点上运行,负责容器,监视资源(CPU、内存、磁盘、网络)使用情况。

(3)分布式并行处理框架层

数据处理框架分为批式处理框架和流式处理框架。

批式处理框架主要有Hadoop MapReduceSpark等。Hadoop MapReduce组件封装了MapReduce并行编程模型。Spark是对Hadoop MapReduce组件的改进,通过对中间结果使用内存存储,大幅提高了计算速度,目前是批处理应用的主流选择。

传统的并行计算模型的实现和使用都非常复杂,如MPI(Message Passing Interface,消息传递接口)一般都用在科学计算等专门领域。MapReduce作为一种全新的通用并行编程模型,是基于集群的并行计算方式的创新抽象,非常简单易用,开发友好。MapReduce处理数据为Key-Value格式,其主要思想是从函数式编程借鉴而来的。MapReduce模型将计算分为两个阶段。

  • Map(映射)阶段:对每条数据记录进行独立处理,其处理逻辑相当于对每条输入执行一个映射变换(即函数的计算),因此可以在大量节点进行并行处理(通常在数据所在节点)。

  • Reduce(规约)阶段:汇总计算阶段,即处理逻辑具有记录之间的相关性,例如按Key对Value进行加和运算,此阶段一般会产生节点间的数据传输(即Shuffle操作)。

流式处理框架主要有Storm、Spark Streaming、Flink等。Storm是较早成熟的低延迟流式数据处理框架,可以进行事件级(单条数据)处理。Spark Streaming是基于Spark批处理实现的微批式的流式处理,延迟较高,可以和Spark一起应用,实现流批一体的数据处理。Flink是当前最出色的流式数据处理框架,可以进行事件级数据处理,具有低延迟、吞吐量大、支持SQL等优点。

(4)分析应用层

基于HDFSYARN和并行处理框架中的一个组件或组合,可以搭建非常多样的大数据应用,主要包括交互分析(OLAP)、随机查询、专门领域的数据分析、搜索等。各类应用的介绍如下。

  • 交互分析此类应用可统称为SQL on Hadoop,并且可以分成两类。一类是基于MapReduce计算模型的HiveSpark SQL,此类组件的计算效率虽然一般,但均由Hadoop和Spark默认支持,所以应用非常广泛。另一类是独立实现的兼容HadoopOLAP分析引擎,典型的有ImpalaDrillHAWQPresto,此类组件为分析实现了专门的计算引擎,计算效率非常高,可以仅依赖HDFS或者HDFS+YARN

  • 随机查询HDFS+Parquet+Spark的方式非常适合批量扫描式的数据处理,但当需要查询单条数据时,效率非常低。HBase针对这个场景专门设计了列族数据模型和存储格式,提高了数据的随机读取效率,也支持数据的随机更新。HBase仅依赖HDFS实现数据的分布式存储。

  • 专门领域的数据分析此类一般是提供一个该领域的并行算法库实现,主要有机器学习和图计算两类。机器学习库有Hadoop默认提供的Mahout和Spark提供的MLlib,图计算库有Giraph和Spark GraphX。

参考资料

[1] 终于有人把MPP大数据系统架构讲明白了;
[2] 一文搞懂Hadoop生态系统;

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

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

相关文章

[附源码]Python计算机毕业设计SSM开小灶线下管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

[附源码]Python计算机毕业设计Django驾校预约管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Jmeter 命令式执行脚本,使用windows bat 命令进行全自动静默获取token

系列文章目录 提示:阅读本章之前,请先阅读目录 文章目录系列文章目录前言一、创建bat文件二、把bat文件,放在jmeter目录里面三、效果更新日志前言 有这样的一个需求场景,我需要用jmeter去自动获取token,然后把这个tok…

将Perl5代码迁移到Perl6上的解决方案

无论您是一个正在将Perl 5代码转换为Perl 6并遇到一些问题的程序员,还是您只是想了解如果您尝试将Perl 5程序移植到Perl 6可能会发生什么,本文应该回答您的问题。 Perl 6文档已经包含了大部分(如果不是全部)你需要的文件要解决将Perl 5代码迁移到Perl 6…

[附源码]Python计算机毕业设计Django会议室预定管理APP

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

FileRun多功能网盘的搭建

本文完成于国庆期间; 什么是 FileRun ? FileRun 是一个自托管的 Google Drive 替代方案。它是一个功能齐全的基于 Web 的文件管理器,具有易于使用的用户界面。 FileRun 免费版 可以用于商业和非商业用途,默认提供 5 个用户帐户。注册安装后可…

Spring框架(一):SpringBean的生命周期以及循环依赖和处理方式

这里写目录标题前言Spring的生命周期循环依赖三级缓存处理流程Spring Ioc容器实例化 流程前言 痛定思痛,主要问题出现在自己雀氏不熟悉框架基础、一些面试题,以及sql的使用淡忘了。 本章节的开始是对于过去的重新回顾,当然,我也会…

该如何选择合适的服务器,保证服务器的安全

在服务器遇到大量进犯,不方便转移时,很多运营网站或许游戏的会挑选接入云防护产品, 服务器在遭受进犯形成服务器瘫痪无法正常的运行,遇到这样的状况都会挑选有较高防护的服务器器,可是有时分服务器的数据搬迁有比较麻…

如何将音乐导入iphone手机,怎么将歌曲导入到iphone

如何将音乐导入iphone手机?把音乐导入苹果手机,主要有2种方法:一种是使用iTunes把音乐导入iPhone,另一种是通过专门的工具将iPhone不支持的音乐格式导入到手机中。我们一起来了解一下。 方法一、使用iTunes将音乐传输到iphone iT…

【Spring框架】超详细的AOP技术详解,你真的不来看看吗?

✅作者简介:热爱Java后端开发的一名学习者,大家可以跟我一起讨论各种问题喔。 🍎个人主页:Hhzzy99 🍊个人信条:坚持就是胜利! 💞当前专栏:【Spring】 🥭本文内…

led灯什么牌子的质量好又耐用?2022性价比高的led护眼灯品牌推荐

大家生活中可能都接触到了不少的人造灯光,不知道有没有留意过,其实大部分都是使用led灯珠作为发光源呢,这是由于led灯的确有很多传统台灯所不具备的优势。 Led作为一种固态半导体元件,具有自发光的特性,可以直接将电能…

【元宇宙欧米说】探讨Web3领域的文化交汇点

在Web3的加持下,如何融合各产业建立文化新生态?电影、音乐、文学、艺术等如何更好地融汇碰撞创造新生机? 12月6日下午三点,ⁿᵒ 3.14创始人Crystal将以“探讨Web3领域的文化交汇点”为题,与大家共同探讨Web3时代的文化…

[附源码]Python计算机毕业设计Django基于JavaWeb的学校社团活动管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,我…

领悟《信号与系统》之 连续系统的频域分析

连续系统的频域分析一、连续系统的频域分析1. 系统函数与系统的频域分析1. 理论分析2. 频域分析法求解系统零状态响应步骤2. 无失真传输一、连续系统的频域分析 一个系统的重要指标就是求系统函数,用系统函数来表征这个系统得特性,系统函数其实系统对外…

【毕业设计】深度学习OCR中文识别系统 - opencv python

文章目录0 前言1 课题背景2 实现效果3 文本区域检测网络-CTPN4 文本识别网络-CRNN5 最后0 前言 🔥 Hi,大家好,这里是丹成学长的毕设系列文章! 🔥 对毕设有任何疑问都可以问学长哦! 这两年开始,各个学校对…

Android ViewPager2 + Fragment + BottomNavigationView 联动

Android ViewPager2 Fragment BottomNavigationView 联动 本篇主要介绍一下 ViewPager2 Fragment BottomNavigationView , 上篇中把ViewPager2和Fragment 联动起来了, 本篇主要把 BottomNavigationView集成进去 概述 BottomNavigationView 是一个底部导航控件, 现在要实现…

import一个“太极”库,让Python代码提速100倍

众所周知,Python的简单和易读性是靠牺牲性能为代价的—— 尤其是在计算密集的情况下,比如多重for循环。 不过现在,大佬胡渊鸣说了: 只需import 一个叫做“Taichi”的库,就可以把代码速度提升100倍! 不信&…

Springboot配置文件加密

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、jasypt二、使用步骤1.引入依赖2.添加配置3.生成密钥3.idea启动添加环境变量3.linux环境启动报错前言 前面叙述了数据传递过程中的加密,需要使用…

docker 命令 相关

mysql 主从复制: 一主多从配置 主服务器:容器名mysql-master,端口3307 从服务器:容器名mysql-slave1,端口3308 从服务器:容器名mysql-slave2,端口3309 注意:如果此时防火墙是开启…

[附源码]计算机毕业设计JAVA星期八酒店管理系统

[附源码]计算机毕业设计JAVA星期八酒店管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM myba…