Hadoop 基本了解 (一)

本文详细介绍了Hadoop的架构,包括其四个主要组成部分:基础核心、HDFS、MapReduce和Yarn的功能。深入探讨了HDFS的三个关键节点:NameNode、DataNode和SecondaryNameNode的工作原理,以及Yarn中ResourceManager和NodeManager的角色。
部署运行你感兴趣的模型镜像

一.构成

Hadoop主要四个构成部分:

  • 基础核心:提供基础的通用功能
  • HDFS:分布式存储
  • MapReduce:分布式计算
  • Yarn:资源分配(任务的执行方式)

这里写图片描述

1.HDFS的构成

主要分为三个节点:

  • NameNode:主要存储数据的存放地址等元数据
  • DataNode:只用来存储数据
  • SecondaryNameNode:辅助DataNode,把元数据持久化到磁盘中

这里写图片描述

1. NameNode

功能:

  1. 存储数据的分布位置、数据的各种描述信息(如文件名、文件大小、文件所在目录、所有者名称、读写执行权限等)

  2. 读数据时,要先从NameNode获取文件的分布位置(在哪些DataNode上),然后再从DataNode上读数据(当然,这个过程已经由HDFS的Shell或API实现了)

  3. 处理客户端的读写请求.写数据时,先向NameNode提交要写的文件的信息,NameNode检查自己的记录表,以找到合适的DataNode(需要找多个,因为每个文件还要创建副本)来存储这些数据,然后指挥这些DataNode串成一串接收数据。如果某个DataNode在接收数据时罢工,则忽略掉它(忽略之后造成的副本数少于指定数量会在后期补加副本);如果所有选出的DataNode全挂掉(几率很低),则写入失败。

  4. 管理HDFS文件系统的命名空间.需要时,可以调用NameNode列出HDFS中的文件夹及文件(如执行 hdfs dfs -ls / 命令时)。

  5. 管理副本的配置和信息(默认三个副本)

元数据的存储位置

由配置文件hdfs-site.xml中的dfs.namenode.name.dir指定

dfs.namenode.name.dir的默认值是file://${hadoop.tmp.dir}/dfs/name

${hadoop.tmp.dir}的默认值是tmp/hadoop-${user.name}

${user.name}是安装Hadoop的用户名

配置时可以在core-site.xml中修改${hadoop.tmp.dir}

持久化的元数据

元数据目录下的文件:

[root@izj6cj3wje0m1jxumjkuelz current]# pwd
/export/hadoop/tmp/dfs/name/current
[root@izj6cj3wje0m1jxumjkuelz current]# ls
edits_0000000000000000001-0000000000000000002  fsimage_0000000000000000057
edits_0000000000000000003-0000000000000000053  fsimage_0000000000000000057.md5
edits_0000000000000000054-0000000000000000055  fsimage_0000000000000000059
edits_0000000000000000056-0000000000000000057  fsimage_0000000000000000059.md5
edits_0000000000000000058-0000000000000000059  seen_txid
edits_inprogress_0000000000000000060           VERSION

由于需要快速查询,NameNode的元数据运行时是加载在内存中的,关闭时内存中的数据会持久化到硬盘中fsimages文件.同时HDFS集群也会将所有的操作都记录到edits文件中

内存元数据 == fsimage + edits

其他fsimage*.md5是校验文件,用于校验fsimage的完整性
seen_txid是hadoop的版本
VERSION里存储的namespaceID:NameNode的唯一ID,clusterID:集群ID,NameNode和DataNode的集群ID应该一致,表明是一个集群

2.SecondaryNameNode

功能

  1. NameNode的热备节点,有故障时可以快速切换到SecondaryNameNode
  2. 周期性同步edits编辑日志,定期合并fsimage和edits到本地磁盘

生产环境中NameNode会长时间运行,几乎不关闭。而内存中的元数据是在NameNode关闭时进行持久化的。这样生产环境中内存元数据与持久化元数据差异就会越来越大,会导致生成大量的edits文件,NameNode重启速度变慢.

SecondaryNameNode会将NameNode中产生的fsimage和edits下载过来,执行合并生成新的fsimage,然后把新的fsimage再重新发回NameNode,这样NameNode中的持久化元数据就能与内存中的元数据一致或非常接近了,edits文件的数量大大减少

3.JournalNode

功能

  1. NameNode在文件系统被修改时,会向JournalNode写入操作日志(edits)
  2. SecondaryNameNode同步JournalNode的edits日志,使集群中的更新操作可以被共享和同步
  3. 可以被NameNode和SecondaryNameNode同时访问,用以支持NameNode高可用

4.DataNode

功能

  1. 负责存储数据块和数据块校验
  2. 处理客户端的读写请求
  3. 通过心跳机制定期向NameNode汇报运行状态和本地所有块的列表信息
  4. 在集群启动时DataNode项NameNode提供存储Block块的列表信息

Block数据块

  • HDSF固定的最小的存储单元(默认128M,可配置修改)
  • 写入到HDFS的文件会被切分成Block数据块(若文件大小小于数据块大小,则不会占用整个数据块)
  • 默认配置下,每个block有三个副本

2.Yarn构成

主要组成

  • ResourceManager
  • NodeManager

这里写图片描述

1.ResourceManager

主节点只有一个,从节点可以有多个

功能

  1. 处理客户端请求
  2. 启动、管理、监控ApplicationMaster
  3. 监控NodeManger
  4. 资源的分配和调度

2.NodeManager

每个节点只有一个,和DataNode部署在同一台机器上且一一对应

功能

  1. 定期向ResourceManager汇报本机资源的使用状况
  2. 处理来自ResourceManager的作业请求,为作业分配Container
  3. 处理来自ApplicationMaster的请求,启动和停止Container

3.ApplicationMater

每个任务只有一个,负责任务的管理、资源的申请和任务调度

功能

  1. 和ResourceManager协商,为任务申请资源
  2. 和NodeManager通信,启动和停止任务
  3. 监控任务的运行状态和失败处理

4.Container

任务运行环境的抽象,只有在分配任务时才会抽象生成一个Container

功能

  1. 负责任务运行资源和环境的维护(节点、内存、CPU)
  2. 负责任务的启动

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### Hadoop 基本概念 Hadoop种用于处理大规模数据集的分布式计算框架,能够可靠地存储和处理PB级别的数据[^1]。该平台主要由四个核心模块组成: - **HDFS (Hadoop Distributed File System)**:这是个分布式的文件系统,旨在实现高吞吐量的数据访问,并提供容错机制来保障数据的安全性和可靠性[^2]。 - **YARN (Yet Another Resource Negotiator)**:作为资源管理器的角色,负责调度运行在集群上的应用程序所需的计算资源并执行这些程序的任务实例。 - **MapReduce**:这是种编程模型及其相应的实现方法,专为支持基于键值对的大规模数据集(大于1TB)上并行运算而设计。它通过映射(map)阶段将输入分割成多个子任务,在各个节点上独立完成;再经由规约(reduce)过程汇总结果得到最终输出。 - **Common Utilities**:提供了支撑其他组件的基础库和服务功能,比如配置管理和序列化接口等。 ### 入门教程概览 对于初次接触Hadoop的学习者而言,可以从以下几个方面入手学习: #### 安装与配置 了解如何设置本地开发环境或是小型测试集群是非常重要的第步。这通常涉及到下载官方发布的稳定版软件包、解压到定目录下之后按照文档说明调整必要的参数设定以适应特定硬件条件下的最佳性能表现。 #### 数据操作实践 尝试上传些样本文件至HDFS当中去感受其独特的路径结构以及命令行工具的强大之处。接着编写简单的MapReduce作业来进行数据分析练习,熟悉Mapper/Reducer函数定义规则的同时掌握JobConf类的相关属性配置技巧。 #### Web界面探索 利用内置浏览器插件连接到NameNode所提供的HTTP服务端口上来查看整个系统的健康状况报告图表和其他有用的信息统计页面。这对于监控日常运维活动有着不可替代的帮助作用。 ```bash # 进入Hadoop安装目录 cd /path/to/hadoop/ # 启动Hadoop集群(假定已正确设置了环境变量) sbin/start-dfs.sh sbin/start-yarn.sh # 访问Web UI,默认情况下分别为http://localhost:9870 和 http://localhost:8088 ``` #### 学习更多高级特性和优化手段 随着理解程度加深可以进步研究诸如压缩编码选项的选择依据、内存调优策略等方面的知识点以便更好地发挥出这套开源解决方案的最大潜力[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值