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

Hadoop详解与HDFS读写流程

大数据Hadoophadoop:包含分布式文件系统和分布式计算的一个框架。HDFS,mapreducehadoop项目模块包括4部分:
大数据

Hadoop

hadoop:包含分布式文件系统和分布式计算的一个框架。 HDFS,mapreduce

hadoop项目模块包括4部分:

Hadoop Common --工具类

Hadoop Distributed System(HDFS) --分布式文件系统

Hadoop YARN --分布式资源管理

Hadoop MapReduce --分布式计算框架

Hadoop-HDFS

存储模型:字节

文件线性切割成块Block 偏移量offset:块的第一个字节面向原文件的下标,eg:第一个块的偏移量是0

架构模型:主从

文件数据分为 元数据MetaData 和 文件数据

(主)NameNode字节保存文件元数据:单节点 posix

​ 生成目录树,不同于ls

(从)DataNode字节保存文件Block数据:多节点

​ 客户端HdfsClient先找主再找从

NN

数据元数据

基于内存存储 快 不会和磁盘发生交换,但要持久化

​ NameNode的metadate信息在启动后会加载到内存

​ metadata存储到磁盘文件名为“fsimage”

​ edits记录对metadata的操作日志。。。redis

持久化的2种方式:快照 fsimage–需要大量IO 写日志文件 edits log-只记录用户操作

​ 注意:都不保存位置信息,以免客户端找到主,从没有启动,进而没有文件陷入等待

NameNode主要功能:

​ 接受客户端的读写服务

​ 收集DataNode汇报的Block列表信息

​ –NameNode保存metadata信息包括

​ •文件owership和permissions •文件大小,时间

Block块 不可调整大小,不支持修改文件

​ block列表:block偏移量(稳定值) 不含位置信息

DN

本地磁盘目录存储数据(Block),文件形式

DN还有个Block块(md5)存储元数据信息,用户取出数据时外界算法对比md5以此鉴别数据完整性

Block每副本位置由DataNode上报 副本 同等级 含义类克隆

副本放置策略/机架策略:

​ 第一个副本和第二个副本不在同一个机架上,第三个副本放置在和第二个副本相同机架节点

在这里插入图片描述

NN&DN

启动DN时会向NN汇报block信息

DN向NN发送心跳保持与其联系3s/次 10min lost 此时需要copy其上的block到其他DN

安全模式

SNN

不是NN的备份(但可以做备份),它的主要工作是帮助NN合并edits log,减少NN启动时间。

SNN执行合并时机

​ •根据配置文件设置的时间间隔fs.checkpoint.period 默认3600秒

​ •根据配置文件设置edits log大小 fs.checkpoint.size 规定edits文件的最大值默认是64MB

HDFS优点

–高容错性

​ •数据自动保存多个副本 • 副本丢失后,自动恢复

–适合批处理

​ •移动计算而非数据 •数据位置暴露给计算框架(Block偏移量)

–适合大数据处理

​ •GB 、TB 、甚至PB 级数据 •百万规模以上的文件数 •10K+ 节点

–可构建在廉价机器上

​ •通过多副本提高可靠性 •提供了容错和恢复 机制

HDFS缺点

–低延迟数据访问

​ •比如毫秒级 •低延迟与高吞吐率

–小文件存取

​ •占用NameNode 大量内存 •寻道时间超过读取时间

–并发写入、文件随机修改

​ •一个文件只能有一个写者 •仅支持append

写流程

在这里插入图片描述

注意:

​ 将大文件分成小包并(管道/同时)分给每个DN上的块

​ 由心跳汇报情况给NN,若DN坏1,2个则NN自动发布命令采用新的DN写入

读流程

注意:

​ 距离优先(离客户端近的先读取,在本地的读本地)NN会返回给客户端距离列表,近的先读,读完客户端进行存储,再读下一个DN

​ 读取时可以读取任意块的能力,可以在某块上进行计算数据,因此HDFS很好的支撑了计算层的本地化读取
在这里插入图片描述

使用Shell命令执行Hadoop自带的WordCount

首先切换到/data目录下,使用vim编辑一个data.txt文件,内容为(hello world hello hadoop hello ipieuvre)

cd /data
vim data.txt
在HDFS的根下创建in目录,并将/data下的data.txt文件上传到HDFS中的in目录

hadoop fs -put /data/data.txt /in
执行hadoop jar命令,在hadoop的/apps/hadoop/share/hadoop/mapreduce路径下存在hadoop-mapreduce-examples-2.6.0-cdh5.4.5.jar包,我们执行其中的worldcount类,数据来源为HDFS的/in目录,数据输出到HDFS的/out目录

hadoop jar /apps/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.4.5.jar wordcount /in /out
查看HDFS中的/out目录

hadoop fs -ls /out
hadoop fs -cat /out/*
在这里插入图片描述


推荐阅读
  • PHP中元素的计量单位是什么? ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • Cosmos生态系统为何迅速崛起,波卡作为跨链巨头应如何应对挑战?
    Cosmos生态系统为何迅速崛起,波卡作为跨链巨头应如何应对挑战? ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • 初探性能优化:入门指南与实践技巧
    在编程领域,常有“尚未精通编码便急于优化”的声音。为了从性能优化的角度提升代码质量,本文将带领读者初步探索性能优化的基本概念与实践技巧。即使程序看似运行良好,数据处理效率仍有待提高,通过系统学习性能优化,能够帮助开发者编写更加高效、稳定的代码。文章不仅介绍了性能优化的基础知识,还提供了实用的调优方法和工具,帮助读者在实际项目中应用这些技术。 ... [详细]
  • 本文源自极分享,详细内容请参阅原文。技术债务如同信用卡负债,随着时间推移,修复成本会越来越高,因此程序员必须对此有深刻认识。此外,团队应致力于培养一种持续维护和优化代码的文化,以减少技术债务的累积。 ... [详细]
  • Hadoop 2.6 主要由 HDFS 和 YARN 两大部分组成,其中 YARN 包含了运行在 ResourceManager 的 JVM 中的组件以及在 NodeManager 中运行的部分。本文深入探讨了 Hadoop 2.6 日志文件的解析方法,并详细介绍了 MapReduce 日志管理的最佳实践,旨在帮助用户更好地理解和优化日志处理流程,提高系统运维效率。 ... [详细]
  • 【并发编程】全面解析 Java 内存模型,一篇文章带你彻底掌握
    本文深入解析了 Java 内存模型(JMM),从基础概念到高级特性进行全面讲解,帮助读者彻底掌握 JMM 的核心原理和应用技巧。通过详细分析内存可见性、原子性和有序性等问题,结合实际代码示例,使开发者能够更好地理解和优化多线程并发程序。 ... [详细]
  • 文件系统管理与设计涉及众多内容,课堂讲解较为简略。本章主要介绍了以下几点:1. 基本概念 - 文件系统:一种用于实现数据持久性存储的系统抽象。 - 文件:文件系统中的基本存储单元,包含一组相关数据。文件系统通过文件组织和管理数据,提供高效的数据访问和管理机制。此外,还涵盖了文件的属性、类型和操作方法。 ... [详细]
author-avatar
窝大华_221
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有