当前位置: 首页 > news >正文

了解Hadoop

Hadoop了解

Hadoop 是 Apache 基金会开发的一个开源分布式计算平台,主要用于存储和处理大规模数据集。
它能让用户在不了解分布式系统底层细节的情况下,轻松进行分布式程序的开发,将应用程序自动部署到由大量普通机器组成的集群上进行高效运算。下面为你详细介绍其应用场景和作用
hadoop生态系统包含了很多组件,主要的一个生态系统体系:在这里插入图片描述

核心组件介绍

HDFS
Hadoop 分布式文件系统(HDFS): 是hadoop的存储基石,具备高容错性,可以将海量的数据分散存储在多个节点,数据会被分割为多个数据块,每个数据块会有多个副本,分布在不同的节点上,这样即使部分节点出现故障,数据也不会丢失,保证了数据的安全性和可靠性,支持流式访问.

  1. NameNode: 存储文件的元数据,运行在master node节点上,负责命名空间管理和文件访问控制,
  2. DataNode: 在本地文件系统存储文件块数据,以及数据校验和,运行在slave节点上,
  3. Secondary DataNode: 用来监控HDFS状态
    在这里插入图片描述

MapReduce
是一种编程模型,用于计算海量数据,并把计算任务分割成多个在几群上并行计算独立运行的task,MapReduce 是 Hadoop的核心,它会把计算任务移动到离数据最近的地方进行执行,因为移动大量数据是非常耗费资源的。主要的处理过程分为三个步骤:

  1. map阶段: 在这个里,针对输入的数据会被分割为多个小块,每个小块由一个map任务处理,map任务会读取输入的数据然后转为键值对的形式输出,这个过程可以理解为对原始数据进行初步的过滤.
  2. shuffle排序阶段: 这个阶段会对map阶段处理之后的数据进行排序和分组,将相同的键的值归类到一起,
  3. reduce(聚合): 这个阶段每个reduce任务接受一组相同的键值列表,并对这组值执行指定规则的汇总或聚合操作.然后产生新的输出.

YARN
Yarn :是一个资源管理系统,其作用就是把资源管理和任务调度/监控功分割成不同的进程,Yarn 有一个全局的资源管理器叫 ResourceManager,每个 application 都有一个 ApplicationMaster 进程。一个 application 可能是一个单独的 job 或者是 job 的 DAG (有向无环图)。
在 Yarn 内部有两个守护进程:
• ResourceManager :负责给 application 分配资源
• NodeManager :负责监控容器使用资源情况,并把资源使用情况报告给 ResourceManager。这里所说的资源一般是指CPU、内存、磁盘、网络等。
ApplicationMaster 负责从 ResourceManager 申请资源,并与 NodeManager 一起对任务做持续监控工作。

Yarn 具有下面这些特性:
• 多租户:Yarn允许在同样的 Hadoop数据集使用多种访问引擎。这些访问引擎可能是批处理,实时处理,迭代处理等;
• 集群利用率:在资源自动分配的情况下,跟早期的Hadoop 版本相比,Yarn拥有更高的集群利用率;
• 可扩展性:Yarn可以根据实际需求扩展到几千个节点,多个独立的集群可以联结成一个更大的集群;
• 兼容性:Hadoop 1.x 的 MapReduce 应用程序可以不做任何改动运行在 Yarn集群上面。

hadoop的工作方式

hadoop的主从工作方式

在这里插入图片描述
主从的架构:

  • 一个master节点可以和多个slave节点交互
  • master节点管理,维护和监控slave节点,slave是任务处理的机器.
  • master节点是集群的核心
  • master存储元数据,slave存储业务实际数据
  • 通过master向slave节点分发任务
    hadoop的守护进程
    在这里插入图片描述

通过这个图的展示可以看出在hadoop中主要有4个守护进程:

  1. namenode: 它是HDFS运行在Master节点守护进程
  2. datanode: 它是 HDFS 运行在Slave节点守护进程。
  3. resourcemanager: 是yarn运行在master节点的守护进程
  4. NodeManager: 是yarn运行在slave节点的守护进程
    除了这些,可能还会有 secondary NameNode,standby NameNode,Job HistoryServer 等进程

通过上面的架构图可以了解到在这种架构下,对于master节点是没有高可用的,集群会很不稳定面临单点的风险,下面介绍一下再hadoop中实现高可用的方案.
我们知道 NameNode 上存储的是 HDFS 上所有的元数据信息,因此最关键的问题在于 NameNode 挂了一个,备份的要及时顶上,这就意味着我们要把所有的元数据都同步到备份节点。好,接下来我们考虑如何同步呢?每次 HDFS 写入一个文件,都要同步写 NameNode 和其备份节点吗?如果备份节点挂了就会写失败?显然不能这样,只能是异步来同步元数据。如果 NameNode 刚好宕机却没有将元数据异步写入到备份节点呢?那这部分信息岂不是丢失了?这个问题就自然要引入第三方的存储了,在 HA 方案中叫做“共享存储”。每次写文件时,需要将日志同步写入共享存储,这个步骤成功才能认定写文件成功。然后备份节点定期从共享存储同步日志,以便进行主备切换。
Hadoop NameNode HA原理
核心组件介绍:
Namenode主备切换主要是由ZKFailoverController,HealthMonitor和ActiveStandbyElector这个3个组件来协同实现:

  • ZKFailoverController作为Namenode上一个独立的进程启动(在hdfs启动脚本之中的进程为zkfc),启动的时候会创建HealthMonitor 和ActiveStandbyElector 组件,会进行整体协调负责管理和监控namenode的状态并与zookerper进行交互.
  • HealthMonitor:是对本地的namenode进行健康状态检测,检测状态,状态反馈,根据检测结果向zkfc进行汇报.它可以检测多种故障,包括硬件故障、软件故障、网络故障等
  • ActiveStandbyElector: 在zookerper的协调下进行active namenode的选举.每个 Standby NameNode 的 ActiveStandbyElector 会尝试在 ZooKeeper 中创建一个特定的节点,如果创建成功,则该 NameNode 成为新的 Active NameNode;如果创建失败,则表示有其他 NameNode 已经成功竞选为 Active NameNode,该 NameNode 继续保持 Standby 状态。在选举完成后,ActiveStandbyElector 会确保新的 Active NameNode 和其他 Standby NameNode 之间的状态同步,保证整个集群的一致性和稳定性

hadoop在linux下的安装部署

hadoop的运行模式
Hadoop 有三种运行模式,分别是本地(单机)模式、伪分布式模式和完全分布式模式,下面为详细介绍它们的区别;
本地模式
特点:
简单配置:这是 Hadoop 最基础的运行模式,几乎不需要额外配置。它把所有组件都运行在单个 Java 虚拟机中,就像普通的 Java 程序一样。
无分布式特性:此模式下不涉及数据的分布式存储与处理,主要用于开发调试简单的 MapReduce 程序或者进行代码测试。
数据存储:数据一般存于本地文件系统,而非 Hadoop 分布式文件系统(HDFS)
适用场景
适合初学者快速上手 Hadoop,在学习和开发初期用来验证 MapReduce 程序逻辑的正确性。
进行小规模数据的测试和实验。

伪分布式模式
特点:
模拟分布式环境:虽然所有 Hadoop 守护进程(如 NameNode、DataNode、ResourceManager、NodeManager 等)都在一台机器上运行,但它们以独立的 Java 进程形式存在,能够模拟分布式环境的运行机制。
使用 HDFS:数据存储采用 HDFS,可体验 Hadoop 分布式文件系统的功能,如数据的复制、容错等。
配置相对简单:相较于完全分布式模式,伪分布式模式的配置较为简便,通常只需对几个关键配置文件进行修改。
适用场景:
用于开发和测试分布式程序,让开发者在单机上就能模拟分布式环境,进行程序的调试和优化。
学习 Hadoop 各个组件的工作原理和交互方式。
完全分布式模式
特点
多节点集群:由多个物理节点组成集群,每个节点承担不同的角色,如 NameNode、DataNode、ResourceManager、NodeManager 等,各个节点之间通过网络进行通信和协作。
高可靠性和扩展性:可以根据实际需求添加或减少节点,以提高系统的处理能力和存储容量。同时,HDFS 的数据冗余机制和 YARN 的资源管理机制确保了系统的高可靠性。
复杂配置和管理:需要对每个节点进行详细的配置和管理,包括网络配置、节点间的通信、数据同步等,对运维人员的技术要求较高。

未完待续~

相关文章:

  • 背单词软件开发英语App英语提分宝超级单词表,河南数匠软件开发
  • 左支座加工工艺与钻φ25孔专用夹具设计
  • RISC-V CLINT、PLIC及芯来ECLIC中断机制分析 —— RISC-V中断机制(一)
  • Windows平台下的Qt发布版程序打包成exe可执行文件(带图标)|Qt|C++
  • 拉西坦类促智药物的异同
  • Java Stream API 深度解析:从入门到高阶应用
  • JavaScript性能优化实战,从理论到落地的全面指南
  • MySQl 数据库操作
  • flex 还是 inline-flex?实际开发中应该怎么选?
  • Science | “打结”的光
  • 使用docker安装Dinky
  • node提示node:events:495 throw er解决方法
  • 第十六届蓝桥杯B组第二题
  • 开发者日常中的网络调试实战
  • 期货反向跟单—数据分析误区(二)盘手排名
  • 01 dnsmasq 中 dns服务
  • 普通IT的股票交易成长史--20250509晚复盘
  • 养生:开启健康生活的钥匙
  • TiDB预研-分页查询、连接查询、执行计划
  • Python函数:从基础到进阶的完整指南
  • 巴基斯坦对印度发起网络攻击,致其约70%电网瘫痪
  • 4月证券私募产品备案量创23个月新高,股票策略占比超六成
  • 工行回应两售出金条疑似有杂质:情况不属实,疑似杂质应为金条售出后的外部附着物
  • 中日有关部门就日本水产品输华问进行第三次谈判,外交部回应
  • 人民日报整版聚焦:铭记二战历史,传承深厚友谊
  • 山东滕州车祸致6人遇难,肇事司机已被刑事拘留