热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

大数据Hadoop之HDFS认识

源自Google的GFS(Google分布式文件系统)论文,分布式文件系统(HDFS)是GFS的克隆版。HDFS负责数据文件的存储,可让多机器上分享存储空间,让实际上通过网络来访问

《大数据Hadoop之HDFS认识》

源自Google的GFS(Google分布式文件系统)论文,分布式文件系统(HDFS)是GFS的克隆版。HDFS负责数据文件的存储,可让多机器上分享存储空间,让实际上通过网络来访问文件的动作,用户就像是访问本地磁盘一样便捷。

即使HDFS集群中某些节点脱机,整体来说系统仍然可以持续运作而不会有数据丢失。

HDFS提供了一个低成本、高可靠、高容错、高性能的分布式文件系统。

1.低成本主要体现在搭建HDFS主要是通过横向扩展机器数量而非花高价钱购进昂贵的服务器。

2.高可靠主要体现在

1)、HDFS解决了单点问题,HDFS集群中心节点是非常重要的,如果中心节点宕机整个集群将无法使用,所以中心节点NameNode会有主要节点(Primary)和备份节点(Stand By)。如果Primary出现问题Stand By可以自动接替Primary工作。

2)、副本机制,HDFS集群中文件一般会存在多份,同一份数据会被存放在多台不同的机器上,如果监控到其中的一台机器宕机,随即将该台机器上的数据迁移到其他机器上保证数据的数量完整性。说明集群中一个节点宕机对整个集群的影响是有限可控的。

3)、HDFS负载均衡,中心节点(NameNode)不断的接收数据节点(DataNode)发送过来的心跳检测获得子节点的运行状态,发现集群负载较高的情况下。启动HDFS的balancer工具进行数据迁移集群里面的数据降低系统负载。

4)、机架感知,大型HDFS集群是以机架的形式来组织的,同一个机架上不同节点间的网络状况比不同机架之间的更为理想。另外,中心节点(NameNode)设法数据块副本保存在不同的机架上以提高容错性。

3.高容错主要体现在

分布式计算模型(MapReduce)容错,一个MapReduce任务在集群机器上面以任务跟中(TaskTracker)执行。每一个TaskTracker被Job监控(jobTracker)监控,如果发现一个TaskTracker执行失败JobTracker就会将该任务分配到其他机器上面运行。

4.高性能体现在处理大型任务上集群处理效率,多台机器分块并行处理要比单台机器串行处理要快很多。

HDFS分布式文件系统,是怎样做到的呢?

通常一个HDFS集群是由一个中心节点(NameNode)和多个数据节点(DataNode)组成的,中心节点负责管理整个集群,如果中心节点瘫痪那么整个集群就无法使用,上面我们给出设置备份中心节点的解决办法,但是为了进一步确保稳定性通常会选用一台高性能配置好的服务器作为中心节点。

《大数据Hadoop之HDFS认识》 High level Architecture

数据文件大的文件切块分散存储

HDFS将数据以Block块存储,每一个Block块在搭建HDFS的时候可以被设置,如果数据文件大到超出了Block块设定的大小,就会将这个文件按Block块大小切分为多个文件块存储在HDFS中。

切分的Block块不一定存放在同一台Data Node上面,HDFS会根据节点的负载情况进行调整数据存储位置。

他们存储位置由中心节点(NameNode)负责管理,NameNode不断的监控DataNode的运行情况,如遇DataNode宕机好及时迁移数据。

元数据和数据分开存储


《大数据Hadoop之HDFS认识》 数据寻址过程

HDFS的寻找文件地址通过从Root中找到元数据,再从Meta找到文件存储的服务器和地址。其中NameNode主要管理存放到DataNode中数据的元数据。由于将元数据和数据分开有利于文件系统的分布式部署,NameNode维护一份数据在集群中不会有名称冲突,一份数据在集群中只有唯一的一个名字。

客户端向NameNode发起请求,集群中NameNode向DataNode发起计算任务的请求,DataNode负责将计算的结果反馈给NameNode统计出结果。

一次写入多次读取

HDFS中存储的文件只允许一次写入,写入之后就不能被修改,如有修改只能在文件中追加数据。

写入的时候需要对数据进行清洗,将坏的数据扔掉。

当文件被创建,接着写入数据,最后,一旦文件被关闭,就不能再修改。这种模型可以有效地保证数据一致性,且避免了复杂的并发同步处理,很好地支持了对数据访问的高吞吐量。

移动计算比移动数据更划算

分布式系统计算过程中距离数据越近,计算性能越好,尤其是在数据量特别大的时候。由于分布式系统数据存放在不同的机器上,对于计算而言就产生了两种策略,移动数据和移动计算。如果数据量特别大移动数据网络成本消耗非常大而且负责计算的机器的性能瓶颈也很容易限制运算速度。相比移动计算却是非常划算,将计算的方法分发给集群中DataNode节点负责数据计算,DataNode节点将计算结果回传给中心节点,中心节点负责将回传的结果汇总成结果。

移动计算比较流行的有MapReduce,Spark等计算模型

小结

HDFS通过作为Hadoop主要的核心在数据存储方面为我们提供了保证,是一款非常优秀的分布式文件系统。通过对特点和架构的分析我们能够清晰的理解什么是HDFS。

HDFS在大数据中解决数据存储问题,数据采用什么方法进行高效的使用是我们关心的重点,我们将下一回分享。


推荐阅读
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 2021年Java开发实战:当前时间戳转换方法详解与实用网址推荐
    在当前的就业市场中,金九银十过后,金三银四也即将到来。本文将分享一些实用的面试技巧和题目,特别是针对正在寻找新工作机会的Java开发者。作者在准备字节跳动的面试过程中积累了丰富的经验,并成功获得了Offer。文中详细介绍了如何将当前时间戳进行转换的方法,并推荐了一些实用的在线资源,帮助读者更好地应对技术面试。 ... [详细]
  • (1)前期知识:1. 单机架构:单一服务器计算机——其处理能力和存储容量有限。2. 集群架构(负载均衡器与多节点服务器)——通过增加节点数量来提升系统性能和可靠性,实现高效的任务分配和资源利用。 ... [详细]
  • 解读中台架构:微服务与分布式技术的区别及应用
    中心化与去中心化是长期讨论的话题。中心化架构的优势在于部署和维护相对简单,尤其在服务负载较为稳定的情况下,能够提供高效稳定的性能。然而,随着业务规模的扩大和技术需求的多样化,中心化架构的局限性逐渐显现,如扩展性和故障恢复能力较差。相比之下,微服务和分布式技术通过解耦系统组件,提高了系统的灵活性和可扩展性,更适合处理复杂多变的业务场景。本文将深入探讨中台架构中微服务与分布式技术的区别及其应用场景,帮助读者更好地理解和选择适合自身业务的技术方案。 ... [详细]
  • 构建高可用性Spark分布式集群:大数据环境下的最佳实践
    在构建高可用性的Spark分布式集群过程中,确保所有节点之间的无密码登录是至关重要的一步。通过在每个节点上生成SSH密钥对(使用 `ssh-keygen -t rsa` 命令并保持默认设置),可以实现这一目标。此外,还需将生成的公钥分发到所有节点的 `~/.ssh/authorized_keys` 文件中,以确保节点间的无缝通信。为了进一步提升集群的稳定性和性能,建议采用负载均衡和故障恢复机制,并定期进行系统监控和维护。 ... [详细]
  • 本文详细介绍了 Spark 中的弹性分布式数据集(RDD)及其常见的操作方法,包括 union、intersection、cartesian、subtract、join、cogroup 等转换操作,以及 count、collect、reduce、take、foreach、first、saveAsTextFile 等行动操作。 ... [详细]
  • 华为捐赠欧拉操作系统,承诺不推商用版
    华为近日宣布将欧拉开源操作系统捐赠给开放原子开源基金会,并承诺不会推出欧拉的商用发行版。此举旨在推动欧拉和鸿蒙操作系统的全场景融合与生态发展。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • B站服务器故障影响豆瓣评分?别担心,阿里巴巴架构师分享预防策略与技术方案
    13日晚上,在视频观看高峰时段,B站出现了服务器故障,引发网友在各大平台上的广泛吐槽。这一事件导致了连锁反应,大量用户纷纷涌入A站、豆瓣和晋江等平台,给这些网站带来了突如其来的流量压力。为了防止类似问题的发生,阿里巴巴架构师分享了一系列预防策略和技术方案,包括负载均衡、弹性伸缩和容灾备份等措施,以确保系统的稳定性和可靠性。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 利用ZFS和Gluster实现分布式存储系统的高效迁移与应用
    本文探讨了在Ubuntu 18.04系统中利用ZFS和Gluster文件系统实现分布式存储系统的高效迁移与应用。通过详细的技术分析和实践案例,展示了这两种文件系统在数据迁移、高可用性和性能优化方面的优势,为分布式存储系统的部署和管理提供了宝贵的参考。 ... [详细]
author-avatar
手机用户2502855967
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有