Hadoop 的核心(1)—— HDFS

首先来看看Hadoop 是什么?

  • Hadoop 是一个开源的大数据框架
  • Hadoop是一个分布式计算的解决方案
  • Hadoop = HDFS(分布式文件系统)+ MapReduce(分布式计算)

Hadoop 的两个核心:

  • HDFS 分布式文件系统:存储是大数据技术的基础
  • MapReduce 编程模型:分布式计算是大数据应用的解决方案

先来介绍第一个核心 —— HDFS,它有三个特点:

  • 普通的成百上千的机器构成
  • 按TB甚至PB为单位的大量的数据
  • 简单便捷的文件获取

HDFS 的基本概念:

数据块-数据块是抽象块而非整个文件作为存储单元,在 Hadoop1.x 中默认大小是64M,Hadoop2.x 中默认大小是128M,默认每个块备份3份。

由于HDFS是分布式的,也就是主从模式,NameNode 就是主,DataNode 就是从。所以 HDFS 是由一个 NameNode 和多个 DataNode 组成的。

NameNode:

  • 管理文件系统的命名空间,存放文件元数据
  • 维护着文件系统的所有文件和目录,文件与数据块的映射
  • 记录每个文件中各个块所在数据节点的信息(这些信息在 DataNode 启动时会发送给 NameNode)

P.S. 如果 NameNode挂掉了怎么办?(分布式系统存在的问题,后面会讨论这个问题)

DataNode(文件系统的工作节点):

  • 存储并检索数据块;
  • 向 NameNode 更新所存储块的列表

HDFS 结构图

HDFS 优点:

  • 适合大文件存储,支持 TB、PB 级的数据存储,并有副本策略
  • 可以构建在廉价的机器上,并有一定的容错和恢复机制
  • 支持流式数据访问,一次写入,多次读取,高效

HDFS 缺点:

  • 不适合大量小文件存储
  • 不适合并发写入,不支持文件随即修改
  • 不支持随机读等低延时的访问方式

P.S. Hadoop 本来也不是为这些场景设计的,所以到底用不用 Hadoop 要基于具体的业务场景来考虑。

NameNode 挂掉了怎么办?如何解决单点故障问题?

这是一个很严重的问题,因为我们很难把这些位于不同 DataNode 的数据块重建成文件。Hadoop2 给出了HDFS的高可用 HA 方案:HDFS通常由两个NameNode组成,一个处于 active 状态(主节点),另一个处于 standby 状态(备用节点),两者的数据是时刻保持一致的。当主节点出现问题,备用节点会自动切换,用户不会受到影响,这样就避免了 NameNode 的单点故障问题。当主节点对外提供服务,比如处理来自客户端的 RPC 请求,而备用节点则不对外提供服务,仅同步主节点的状态,以便能够在它失败时快速进行切换。

欢迎关注我的知乎专栏【数据池塘】,专注于分享机器学习、数据挖掘干货:https://zhuanlan.zhihu.com/datapool

⬇️ 扫描下方二维码关注公众号【数据池塘】 ⬇️

回复【算法】,获取最全面的机器学习算法网络图:

发布了38 篇原创文章 · 获赞 23 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/cyan_soul/article/details/79091496