【大数据2025】Hadoop 万字解说

[复制链接]
发表于 2025-11-7 03:24:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
一、大数据通识

大数据诞生配景与根本概念



  • 传统数据处理处罚架构

    • 可处理处罚结构化、非结构化和半结构化数据。结构化数据存在数据库,有严酷字段和数据范例限定;半结构化数据如日记、JSON,字段和范例不严酷;非结构化数据如图片、视频、音频无结构,一样平常存于 NOSQL 数据库,但 NOSQL 通常只管存储不管盘算,盘算需编写并发步伐读取数据处理处罚。

  • 传统架构处理处罚海量数据的瓶颈

    • 结构化数据方面:单机数据库存海量数据时面临存储和处理处罚速率标题,即便构成 MPP 架构集群,扩展性也有限(如 Oracle 扩展到 30 台后难以再扩),还存在热门标题(热数据会合于某节点易致其压力过大而故障)。
    • 非结构化和半结构化数据方面:NOSQL 数据库存储性能好,但盘算时跨网络拉取数据开销大、服从低。


大数据技能界说与特性



  • 界说:为满足海量数据存储与盘算的技能或架构。
  • 4V 特性

    • 数据规模巨大(Volume):如到达 10PB、50PB 等海量规模。
    • 数据天生和处理处罚速率快(Velocity):如鞋厂 2017 年每天数据增量 100TB,且需快速处理处罚。
    • 数据多样性(Variety):涵盖结构化、非结构化和半结构化数据,互联网期间后两者占比更高。
    • 代价(Value):海量数据发掘代价高,与人工智能联合潜力大,但代价密度低,因数据量巨大稀释了代价。满足这四个特性的场景即为大数据场景,也称大数据的 4V 特性。


中小规模数据与大数据技能


  • 不实用缘故原由:中小规模数据接纳传统数据处理处罚架构即可满足需求,若盲目利用大数据技能,因其调理周期长等因素,服从反而会低沉。
  • 服从对比示例:现本相况中,部分公司在数据量未达肯定规模时引入大数据技能,效果不但未提拔服从,乃至出现服从减半的环境。




  • 焦点区分依据:离线与及时处理处罚场景的本质区别在于数据是有界还是无界。离线处理处罚针对已存储且数据量固定的有界数据,如存储为 10GB 的数据在运算中不会增减;及时处理处罚则是针对连续产生、无显着界限的无界数据。
  • 处理处罚方式特点

    • 离线处理处罚:恰当批处理处罚运算。先对团体数据举行第一阶段处理处罚,得到终极效果后再送往下一阶段,在恣意时间观察,全部数据处于同一阶段,且数据存储后可在断网环境下完成处理处罚。
    • 及时处理处罚:接纳流处理处罚方式。如同流水线工人,各阶段分别处理处罚数据,处理处罚完当前数据后立即将效果通报给下一阶段,并连续期待新数据,在恣意时间观察,数据处于各个差别阶段。

  • 典范应用场景:数据堆栈、搜索与检索、图盘算、数据分析等属于离线批处理处罚场景;及时流盘算是典范的及时处理处罚场景。


大数据生态架构概述



  • 数据源分类:包罗结构化数据(如数据库中以二维表存储的数据)和非结构化/半结构化数据(如日记、JSON、图片、视频、音频等)。
  • 结构化数据抽取

    • 主流方式是通过 scoop 以 T+1 方式经 GDBC 毗连数据库抽取到 HDFS,即当天数据越日导入。
    • 也可利用 CDC(开源)或 OGG(Oracle 特有)举行及时抽取,通过监控监控数据库日记载现,数据变更时先抽至卡夫卡再交大数据平台处理处罚。

  • 非结构化/半结构化数据抽取:一样平常及时产生,常用 flume 或 log stach 抽取到卡夫卡消息队列缓冲抗压,再经大数据平台处理处罚后存储,而非直接存入大数据平台。
数据存储



  • HDFS 是成熟的大数据存储平台,但因其是文件体系,利用未便。
  • 实际常将数据存于基于 HDFS 创建的分布式 NoSQL 数据库 HBASE,它易用性更好。
数据盘算与易用性框架



  • 盘算框架:有 MapReduce 和 Spark,MapReduce 盘算较慢,Spark 相对较快。盘算任务需移至数据节点运算,依靠分布式资源调理框架(如 YARN)分配管理 CPU、内存等盘算资源,盘算完成后接纳资源。
  • 易用性框架

    • Hive 可将 SQL 转换为 MapReduce 或 Spark 盘算任务。
    • Pig 通过其 API 转换为 MapReduce 盘算任务(已克制维护)。
    • MLlib 用于呆板学习,可将呆板学习 API 转换为 MapReduce 任务。
    • 这些框架按转换盘算任务范例,默认转换为 MapReduce 的属于 Hadoop 生态圈,部分也可运行于 Spark 之上。
    • Spark 自身生态圈还包罗 Spark SQL、GraphX、Spark Streaming 等,此中 Spark Streaming 用于及时流盘算,其效果一样平常存储于 HBASE 以克制 HDFS 存储小文件的标题。

分布式和谐服务和任务调理组件



  • Zookeeper:是紧张的分布式和谐服务,大数据产物多依靠它。在分布式环境中,能辨认节点增减、举行管理节点推选等和谐工作,如卡夫卡搭建前必须安装 Zookeeper。
  • 任务调理组件:oozie 和 Azkaban 用于管理和调理大数据集群中盘算任务的先后序次和定时实行。

数仓架构



  • 数据抽取与存储:通常利用 sqoop 将数据抽取到 HDFS,开源组件 HIVE 在数仓构建中应用较多,盘算效果一样平常存储于 hive。同时,也可将数据置于 spark 生态圈(spark sql)利用相干技能处理处罚表数据。
  • 数据洗濯与盘算:借助 spark 或 mapreduce 对抽取到的数据举行洗濯和盘算操纵,以满足数据处理处罚需求。
  • 任务调理:任务调理可选用 oozie 或阿兹卡班,确保数仓中各项任务有序实行,保障数据处理处罚流程的顺畅运行。
流处理处罚架构



  • 数据监控监控与缓存:运用 flume 或 log statch 监控监控非结构化和半结构化数据,利用 CDC\OGG 技能监控数据库日记,并将这些数据及时抽取到卡夫卡举行缓存,为后续处理处罚做预备。
  • 数据处理处罚与引擎:通过流引擎如内存型的 spark streaming 或较新的 FLINK 等对缓存数据举行处理处罚,开发职员在此环节编写任务较为频仍,实现数据的及时处理处罚与分析。
  • 效果存储:处理处罚后的数据效果可存储在 Hbase 或 elastic search 中,这两种存储方式对小文件不太敏感。此中 h base 底层有处理处罚小文件的机制,而 elastic search 文件直接存储在磁盘本地,进一步低沉了对小文件的敏感度,更恰当流处理处罚效果的存储。



二、HDFS



  • 简介与特性:HDFS 全称 Hadoop Distributed File System,基于谷歌 GFS 论文实现,是 Hadoop 焦点子项目,在开源大数据技能体系职位紧张。其长处浩繁,能存储海量数据,构建资源低,可搭建于便宜商用服务器,软件层面通过数据多备份(默认三份)实现容错与规复机制,恰当大规模离线批处理处罚,还具备高容错、高可用、高扩展等特性;缺点是不恰当低延伸数据访问、不支持并发写入、不恰当大量小文件存储及文件随机修改。
  • 架构相干:由主节点管理并记载原数据(包罗文件名、拆分份数及存储节点等信息)。
  • 应用与不恰就地景:恰当大规模离线批处理处罚,因其能向盘算框架袒露数据位置,便于任务分发;不恰就地景包罗对延伸要求高、需并发写入、大量小文件存储及需随机修改文件的环境,如大量小文件会使主节点内存被原数据占满、盘算任务调理时间长,随机修改会致集群负载过大等,若需修改文件可先删后追加或选用如 HBASE 等支持随机修改的上层组件。

HDFS 原理总结


一、体系架构



  • 主从架构:HDFS 接纳主从架构,主节点为 name node,从节点是 data node。主节点负责管理集群和吸收客户端读写哀求,从节点用于存储数据文件。
  • 高可用机制:name node 有 active 和 stand by 状态,active 主节点负责管理,stand by 作为备用。当 active 节点故障时,stand by 会切换为 active 接替管理,生产环境中可设置多台 stand by 提拔可用性。
二、存储机制



  • 数据拆分与存储:文件按 128 兆为一块举行拆分,天生多个 block 块后存储在 data node 节点中,存储时会举行备份。
  • 数据备份:默认对每个 block 块举行三个副本的备份,存储在差别 data node 节点,包管数据安全性和可用性。如果文件自己小于数据库巨细,则按照实际巨细举行存储。
三、数据写入流程




  • 客户端发起文件上传哀求,如上传 10G 的 FILE1 文件,会先按 128 兆一块拆分成多个 block 块(假设 80 个,从 block1 到 block80)。
  • 这些 block 块匀称存储到 data node 节点,并对每个 block 块默认备份三份。
  • name node 存储一份元数据,记载文件拆分的 block 块数目等信息,客户端可通过原数据寻址归并数据,但原数据中每个 block 块存储位置信息相对不紧张,由于 data node 会通过心跳机订定期向 name node 上报,在内存中自动补全。
四、心跳机制与集群管理



  • data node 节点每隔三秒钟通过心跳机制向 name node 上报信息,包罗存储的 block 块信息和自身康健状态(繁忙或空闲)。
  • 若 name node 发现某 data node 节点长时间(凌驾 10 分钟,默认三秒上报一次)未上报心跳,则以为该节点挂掉,会触发容灾操纵,将该节点上的 block 块从其他节点拷贝并备份到其他正常节点,确保数据块始终保持三份副本。

安全模式(Safe Mode)界说


Hadoop的安全模式是一种特别的维护模式,在该模式下,HDFS是只读的,即不允许对文件体系举行任何写操纵,如修改文件、删除文件、添加新的文件等。此时,NameNode会拒绝全部对文件体系内容的修改哀求,但客户端仍旧可以读取文件体系中的数据。


  • 启用场景

  • 体系启动时自动进入:当Hadoop集群启动时,NameNode会自动进入安全模式。这是为了在集群启动的初始阶段,确保文件体系的元数据可以或许完备加载并举行须要的查抄,防止在元数据尚未完全预备好时就允许对文件体系举行写操纵,从而克制数据破坏或不同等的环境发生。
  • 手动进入:管理员也可以根据必要手动将Hadoop置于安全模式。比方,在举行文件体系的庞大维护操纵之前,如升级Hadoop版本、修改文件体系设置等,进入安全模式可以确保在维护过程中文件体系不会被不测修改,保障数据的安全和同等性。


  • 退出条件

  • 自动退出:在体系启动时进入的安全模式,NameNode会在完成元数据的加载和查抄后,自动退出安全模式。通常,当HDFS的块陈诉(Block Report)到达肯定比例时,NameNode以为文件体系的状态已经稳固,便会自动退出安全模式,允许正常的读写操纵。
  • 手动退出:如果Hadoop是被管理员手动置于安全模式的,那么管理员也可以根据现本相况手动退出安全模式。在Hadoop的下令行界面中,可以利用hdfs dfsadmin -safemode leave下令来手动退出安全模式。


  • 作用

  • 掩护文件体系元数据:在安全模式下,由于不允许对文件体系举行写操纵,这就克制了在元数据加载和查抄过程中,因用户的写操纵而导致元数据的破坏或不同等,从而掩护了文件体系的完备性和稳固性。
  • 举行文件体系查抄和维护:利用安全模式,管理员可以对文件体系举行各种查抄和维护操纵,如查抄文件体系的康健状态、修复破坏的文件、清算无用的数据等,而不消担心在维护过程中文件体系被用户修改,确保维护操纵的顺遂举行和文件体系的终极同等性。


Block

HDFS 存储单位 - block



  • HDFS 以 block 为最小存储单位存储文件,默认按 128 兆拆分文件。固然 block 巨细可调解,但企业中通常不发起调解。由于调小会产生过多小文件,调大则会增长每个任务处理处罚 block 的时长,且每个 block 运行一个盘算任务。比方 129 兆的文件会拆分为两个 block,第一个 128 兆,第二个 1 兆,这是基于 128 兆的固定拆分标准。
block 副本放置计谋



  • 每个 block 默认生存三个副本,放置在差别节点保障数据安全。
  • 第一个副本优先选择隔断客户端迩来且最空闲的节点。若客户端在集群外,隔断各节点雷同时,则从全部节点中挑选最空闲的节点存储。
  • 第二个副本存放在其他机架的最空闲节点,克制与第一个副本在同一机架因电源或互换机故障导致整个机架不可用的风险。
  • 第三个副本放置在与第二个副本雷同机架的最空闲节点,由于数据分布在两个机架已能包管安全,如许可快速存储第三个副本。
block 在本地磁盘的存储结构




  • block 文件存储在本地服务器的文件体系或磁盘中,其存储目次可在 HDFS 设置文件中设置。在存储目次下,每个 block 除数据文件外,尚有 meta 文件。meta 文件存储 block 的版本、文件范例、校验值、权限等属性信息,且与原数据无关,仅用于形貌对应 block 的属性。

元数据



  • 元数据最初存于 NameNode 内存,包罗文件块拆分信息及块地点节点信息。但内存存储不安全,节点挂掉会致数据丢失,影响生产环境,以是需将部分关键原数据长期化到磁盘。
磁盘存储机制



  • 长期化到磁盘形成 fs image 和 edits 文件。fs image 是某时候元数据快照,记载如文件块拆分等紧张信息;edits 用于记载元数据动态厘革。因内存元数据变更频仍,若直接修改磁盘 fs image 会给主节点带来巨大压力,故接纳将变更以日记情势追加到 edits 文件的方式,序次追加可减轻磁盘压力。
元数据规复与 edits 文件管理



  • 元数据规复依靠磁盘中的 fs image 和 edits 文件。先加载 fs image 到内存获取早期元数据,再实行 edits 中的记载更新为最新元数据。但 edits 文件不能过大,否则规复耗时久,如 10G 的 edits 文件大概使 NameNode 假死一小时,以是需定期将 edits 归并到 fs image 以控制其巨细。

元数据归并操纵




  • 在非高可用集群中,由 secondary name node 负责归并元数据。它定期从 NameNode 拖取 fs image 和 edits 文件,归并后天生新的 fs image 推回 NameNode,拖取过程中会天生新文件记载元数据更改操纵。



  • 在高可用集群中,edits 文件不能存于 NameNode 本地,因其节点挂掉后无法获取,会导致数据不同等。edits 文件存于奇数台构成的 journal node 集群,包管可靠性。Active NameNode 随时将 edits 信息写入 journal node,Standby NameNode 同步 edits 到本地并与内存元数据归并,保持与 Active NameNode 同等,之后将内存元数据写磁盘形成 fs image 上传更换 Active NameNode 的 fs image,Active NameNode 再新开 edits 文件。

HDFS 文件写入操纵




  • 客户端哀求与权限查抄:客户端发起上传文件哀求(如 300 兆文件)至 Name Node,Name Node 查抄目的目次是否存在及客户端权限,有权限则允许上传。
  • 文件拆分:客户端将文件按 128 兆为单位拆分,300 兆文件拆分为两个 128 兆和一个 44 兆的 block,拆分在客户端完成,减轻 HDFS 压力。
  • 分配 Data Node 与创建毗连:上传每个 block 时,客户端向 Name Node 哀求分配 Data Node。Name Node 依副天职配计谋(第一个副本找迩来节点,无则找最空闲节点;第二个副本找其他机架最空闲节点;第三个副本找与第二个副本雷同机架最空闲节点)确定三个 Data Node 并返回。客户端与这三个 Data Node 以 pipeline 情势创建毗连。
  • 数据发送与确认:客户端通过 pipeline 通道以数据包情势发送数据。数据先到第一个 Data Node,内存吸收后写入磁盘,同时转发至第二个 Data Node,第二个 Data Node 重复此操纵至第三个 Data Node。第三个 Data Node 写入磁盘乐成后,依次向上返回乐成信息,终极第一个 Data Node 向客户端陈诉写入乐成且副本备份好。后续 block 按雷同规则上传,全部上传完成后客户端向 Name Node 陈诉,Name Node 记载原数据(文件拆分的 block 信息及存储节点等)。
HDFS 文件读取操纵




  • 权限查抄与原数据返回:客户端发起读文件哀求,Name Node 吸收后查抄权限,如有权限则返回文件原数据,原数据包罗文件拆分的 block 数目及每个 block 地点节点,并按与客户端网络拓扑隔断排序(迩来节点排在前)。
  • 读取与归并文件:客户端获取原数据后,与每个 block 地点的迩来节点创建毗连读取数据,读取完成后归并 block 成终极文件并返回。

HDFS 高可用

HDFS 单管理节点标题



  • 内存上限标题:单个管理节点(如服务器内存为 128G)存放元数据,大概出现内存不敷环境。一旦内存放满,管理端将无法处理处罚哀求,进而导致整个集群不可用。
  • 单节点故障标题:若管理节点(name node)单点故障,整个集群会陷入不可用状态,影响体系正常运行。
联邦机制



  • 原理:针对单节点内存受限标题,接纳多台 name node 共同管理集群的方式。比方,可根据集群目次数目分配管理任务,如有 30 个目次,可安排 3 台节点各管理 10 个数据目次,实现管理负载平衡。
  • 上风:通过多节点协作,低沉了单个 name node 内存占满的概率,提拔了体系稳固性和扩展性,有用办理了内存受限困难。
管理节点热备



  • 节点设置:管理节点分为 active 节点(正在管理集群的节点)和 standby 节点(备用节点),在实际生产环境中可设置多个 standby 节点,以增强备用本事。
  • 数据同步:active name node 将原数据文件(如 edits 文件)托管到 journal 集群(JNLOAD 集群)。standby 节点及时与 journal 集群同步数据,并将同步后的元数据存储在本地内存中,确保其与 active 节点的元数据保持同等,以便在 active 节点故障时能敏捷接替工作。

高可用架构组件



  • Journal 集群:紧张负责元数据同步功能。它吸收 active 节点托管的原数据文件,并为 standby 节点提供数据同步服务,包管集群元数据的同等性和完备性。
  • Zookeeper 集群:作为分布式和谐服务组件,在高可用架构中发挥关键作用。它通过启动多个历程(如 fover controller)监控 active 和 standby 节点状态。这些历程利用心跳机订定期向 Zookeeper 陈诉节点状态。当 active 节点出现故障时,Zookeeper 能及时发现通讯克制环境,将故障节点的状态从 active 切换为 standby,并从 standby 节点中推选出一个新的 active 节点,确保集群连续稳固运行。

HDFS 操纵下令

shell 下令


  • 文件体系检察下令

    • hdfs dfs -ls:检察指定目次下文件和子目次信息。
    • hdfs dfs -du:表现目次或文件磁盘利用环境。
    • hdfs dfs -count:统计文件数目、目次数目和文件总巨细。

  • 文件操纵下令

    • hdfs dfs -put或hdfs dfs -copyFromLocal:将本地文件复制到HDFS。
    • hdfs dfs -get或hdfs dfs -copyToLocal:将HDFS文件复制到本地。
    • hdfs dfs -cat:检察HDFS文件内容。
    • hdfs dfs -rm:删除HDFS文件,删目次加-r。

  • 目次操纵下令

    • hdfs dfs -mkdir:在HDFS创建目次。
    • hdfs dfs -rmdir:删除HDFS空目次,非空目任命-r参数删除。

Rest API



  • 原理与上风:将 HDFS 操纵下令转换为 HTTP 情势,因其兼容性好,各种编程语言均可通过发送网络哀求调用,以是通用性强。
  • 操纵示例

    • 文件上传:先以 URL 情势用“put”方法指定 HDFS NameNode 的 IP 与端口、“webhdfs/v1”及目的目次,实行后获取 3 个 DataNode 地点,再用“put”将本地文件上传至 DataNode 的指定目次。
    • 文件下载:指定节点位置和操纵路径,用“open”操纵将文件下载到本地。
    • 文件删除:用“delete”指定 HDFS 根本地点和目次举行删除操纵。


HDFS 运维管理概述



  • 紧张陈诉 HDFS 运维管理中下令的应用场景,而非逐字解说下令。涉及体系设置、常见管理下令、数据处理处罚操纵、工具利用、配额与快照以及监控页面等方面内容,旨在为步伐员、软件架构师和工程师提供 HDFS 运维的关键知识。
体系设置




  • 焦点设置文件:HDFS 有 core-site.xml 和 hdfs-site.xml 两个焦点设置文件。core-site.xml 是 HDFS 的全局设置文件,用于设置 HDFS、map reduce 等组件;hdfs-site.xml 针对 HDFS 举行局部设置,其格式为在 configuration 标签下,每个设置放在 property 标签中,通过 name 和 value 设置参数。
  • 启动前设置:启动 HDFS 前需设置 hadobe env.sh 文件,将本地 JDK 引入 java home 并填写到该文件中,使 Hadoop 能在 Java 环境运行。启动后一样平常只需更改设置文件。设置文件可设置 name node 存储位置(如 fs image、edits 文件等)、block size(默认 128 兆)、副本数(默认三副本,通常不发起修改)等参数。
常见管理下令



  • 格式化:初次启动 HDFS 时,需对 name node 实行格式化操纵(hdfs namenode -format)。此操纵会在 name node 天生 name node id 并分发给 data node,使 data node 确定主节点,实现认主。
  • 检察文件体系信息:启动后可用 hdfs dfs -report 下令检察文件体系根本信息,如已用空间、剩余空间及占比等;
  • 用 fsck 下令可查抄文件体系康健状态,能检察指定目次下的 block 数、丢失副本数、坏块等信息,发现坏块需排查修复,应定期实行该查抄。



  • 安全模式:可通过 hdfs dfsadmin 下令手动进入或退出安全模式,但一样平常不发起手动操纵。若因体系非常进入安全模式,不发起手动强退,以免引发标题。举行集群维护时,可让体系自动进入只读安全模式,之后再手动退出。

  • 主备切换与集群扩缩容:利用 HA 下令可举行主备节点切换,检察节点状态并按需转换;在集群扩容和缩容时,分别利用服役和退役操尴尬刁难集群举行调解。


  • 数据重分布:数据倾斜(集群节点数据量分布不均)时,实行 hdfs dfs balancer 下令举行数据重分布,将数据多的节点数据拷贝到数据少的节点,使各节点数据匀称。默认带宽为 1 兆每秒,集群空闲时(如破晓),可用 balancer band width 提拔带宽(如设为 100 兆或更高)以加速重分布速率。

数据处理处罚工具




  • Distcp:紧张用于 HDFS 集群之间的数据拷贝,可将单线程拷贝任务转换为分布式并发的 mr 任务,性能更高。集群内部拷贝也可利用,且性能优于单线程 CP,但紧张应用于集群间拷贝。
配额与快照




  • 配额限定:quota 可对目次举行空间和文件数目限定。比方创建 name quarter 和 space quarter 目次后,可分别设置其文件数目上限(如 name quarter 设为 100 个文件)和最大空间(如 space quarter 设为 10G)。

  • 快照功能:可给目次打快照以便数据规复。创建快照时会在目次下天生潜伏文件夹.snapshot,此中存放快照数据。如对 tap 目次创建快照后删除该目次下数据,可从.snapshot 文件夹中拷出数据举行规复。
监控页面



  • 开源 HDFS 的 50070 端口有自带监控页,在该页面可检察集群根本信息,如安全模式状态等,还可通过其他 label 举行集群监控和管理。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表