大数据离线
Posted lifuwei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据离线相关的知识,希望对你有一定的参考价值。
HDFS
HDFS基本概念
HDFS 介绍
HDFS 是 Hadoop Distribute File System 的简称,意为:Hadoop 分布式文件系统,分布式文件系统解决的问题就是数据存储。
HDFS设计目标
- HDFS 将有成百上千的服务器组成硬件故障是常态,因此故障的检测和自动快速恢复是 HDFS 的核心架构目标。
- HDFS 上的应用主要是以流式读取数据,因此比之数据访问的反应时间,更关
键的在于数据访问的高吞吐量。 - 运行在 HDFS 之上的程序有很大量的数据集,所以HDFS 被调整成支持大文件
- 大部分 HDFS 应用对文件要求的是 write-one-read-many 访问模型。
- 移动计算的代价比之移动数据的代价低。
- 在异构的硬件和软件平台上的可移植性。
HDFS重要特性
首先,它是一个文件系统,用于存储文件,通过统一的命名空间目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
- master/slave架构
Namenode 是 HDFS 集群主节点,Datanode 是 HDFS 集群从节点 - 分块存储
HDFS 中的文件在物理上是分块存储(block)的 - 名字空间(NameSpace)
HDFS 支持传统的层次型文件组织结构,Namenode 负责维护文件系统的名字空间 - Namenode元数据管理
我们把目录结构及文件分块位置信息叫做元数据。Namenode 负责维护整个hdfs 文件系统的目录树结构,以及每一个文件所对应的 block 块信息。 - Datanode数据存储
文件的各个 block 的具体存储管理由 datanode 节点承担。每一个 block 都可以在多个 datanode 上。Datanode 需要定时向 Namenode 汇报自己持有的 block信息 - 副本机制
为了容错,文件的所有 block 都会有副本 - 一次写入,多次读出
HDFS 是设计成适应一次写入,多次读出的场景,且不支持文件的修改。
HDFS基本原理
NameNode概述
- NameNode 是 HDFS 的核心。
- NameNode 也称为 Master。
- NameNode 仅存储 HDFS 的元数据:文件系统中所有文件的目录树,并跟踪整个集群中的文件。
- NameNode 不存储实际数据或数据集。数据本身实际存储在 DataNodes 中。
- NameNode 知道 HDFS 中任何给定文件的块列表及其位置。使用此信息NameNode 知道如何从块中构建文件。
- NameNode 并不持久化存储每个文件中各个块所在的 DataNode 的位置信息,这些信息会在系统启动时从数据节点重建。
- NameNode 对于 HDFS 至关重要,当 NameNode 关闭时,HDFS / Hadoop 集群无法访问。
- NameNode 是 Hadoop 集群中的单点故障。
- NameNode 所在机器通常会配置有大量内存(RAM)
DataNode概述
- DataNode 负责将实际数据存储在 HDFS 中。
- DataNode 也称为 Slave。
- NameNode 和 DataNode 会保持不断通信。
- DataNode 启动时,它将自己发布到 NameNode 并汇报自己负责持有的块列表。
- 当某个 DataNode 关闭时,它不会影响数据或群集的可用性。NameNode 将安排由其他 DataNode 管理的块进行副本复制。
- DataNode 所在机器通常配置有大量的硬盘空间。因为实际数据存储在DataNode 中。
- DataNode 会定期(dfs.heartbeat.interval 配置项配置,默认是 3 秒)向NameNode 发送心跳,如果 NameNode 长时间没有接受到 DataNode 发送的心跳, NameNode 就会认为该 DataNode 失效。
- block 汇报时间间隔取参数 dfs.blockreport.intervalMsec,参数未配置的话默认为 6 小时.
HDFS的工作机制
NameNode 负责管理整个文件系统元数据;DataNode 负责管理具体文件数据块存储;Secondary NameNode 协助 NameNode 进行元数据的备份。
HDFS 的内部工作机制对客户端保持透明,客户端请求访问 HDFS 都是通过向NameNode 申请来进行。
HDFS写数据流程
HDFS读数据流程
以上是关于大数据离线的主要内容,如果未能解决你的问题,请参考以下文章