【读书笔记】大数据原理与应用:分布式文件系统HDFS

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 【读书笔记】大数据原理与应用:分布式文件系统HDFS

简 介:这本书的名字为大数据技术原理与应用,该书的作者为厦门大学著名的研究大数据方向的林子雨老师。顾名思义,概述讲述了大数据的相关知识,包含一些分布式系统以及各种流计算等大数据技术。本书讲述的非常棒,通俗易懂。下面是我在读这本书的时候的记录并加上自己的理解。本文意在记录自己近期学习过程中的所学所得,如有错误,欢迎大家指正。

 

关键词:大数据组件、HBase、NoSQL

一、文件系统格式

Hadoop的文件系统是由多个服务器构成,集群中的节点都是放在机架上面,然后不同机架之间通过交换机进行互连。

HDFS的存储是以块为单位,就是说一个完整的文件会被切分成多个文件块存储到不同的服务器上面。对于一个集群来说,是由多个服务器构成的,而这些服务器分为两类,一类是名称节点(NameNode),另一种是数据节点(DataNode)。

  • NameNode:用来存储文件树,以及文件块与HDFS位置的映射以及各种元数据
  • DataNode:是真正用来存储数据的节点,受NameNode支配

当我们进行读取数据时,首先会访问NameNode节点获取所需要读取的文件的块在哪个位置,然后向存储文件块的服务器进行通信获得数据块。

当我们写数据时,依旧会访问NameNode,NameNode会进行分配存储位置,然后客户端把相应的数据写入分配到的节点。

很重要的一个地方就是HDFS存在副本机制,如果某一台服务器崩掉,我们会找到其它的DataNode节点访问它的副本数据,提高了数据的可靠性,在单个节点出现故障时,就可以很快的调用副本。

二、HDFS的一些特点

  • 支持大数据存储:因为是集群机制,所以可以使用更多的服务器存储更大的数据
  • 文件模型简单:HDFS是一次写入,多次读取,当我们将文件写入HDFS上面之后,是无法进行再次更改,只能是读取
  • 数据延迟较高:HDFS无法使用于那些毫秒级的应用场景,广泛用于离线数据处理,HDFS主要是进行大规模数据进行批处理
  • 不适合存储小文件:NameNode中会存取我们HDFS文件中的元数据就是一些位置映射数据,每条元数据也会占用一定空间,如果小文件很多,那么NameNode就是产生大量小文件的元数据,导致文件检索效率降低,而且如果小文件过多的话,进行MapReduce的时候计算开销也会较大,因为每个小文件会对应一个Map任务,导致线程数增多,严重的影响整个集群的性能。
  • HDFS默认是以块进行存储数据,现在默认为128MB,每个块会作为独立的单元进行存储数据。

三、NameNode和DataNode

  • NameNode:主要负责管理分布式文件系统的命名空间。它的内部含有两个核心的数据结构,分别是FsImage和EditLog。FsImage用于维护文件树中的数据以及文件夹的元数据。而EditLog就是操作日志,记录着客户端对文件系统的各种操作,包括文件的创建、删除、重命名等操作。NameNode记录着每个文件中各个块在DataNode中的位置信息。
  • DataNode:会受NameNode的支配进行存储数据,客户端会进行访问,通过NameNode给的文件位置,拿到文件块

当NameNode启动时,会将FsImage加载到内存,然后执行EditLog中的操作来保持内存中的元数据是最新的。HDFS正常启动后,会将操作数据写入到操作日志中,而不是写入FsImage中,这是因为我们的HDFS系统支持的是大数据,如果直接操作数据的话系统就会变得非常缓慢,所以将操作写入操作日志还是非常高效的。

有一点就是当我们启动NameNode的时候,HDFS会进入安全模式,此时HDFS只能够对外界进行读数据操作,而不能够进行写操作,等待启动结束后,安全模式会自动退出,有时候不能够自动退出,可以自己使用命令进行退出。

hadoop dfsadmin -safemode leave

四、SecondaryNameNode

当我们启动NameNode之后,HDFS会不断地进行更新,这些更新操作就会不断地写入EditLog中,该文件就会不断地增大。这是就会存在一个问题,当我们重启NameNode时,我们要执行所有EditLog中的操作来进行更新FsImage中的元数据,这就会导致在启动初期启动地会非常慢,安全模式会非常的长,但是着不会影响运行阶段,EditLog文件尽管很大,在NameNode运行时不会造成影响。

为了解决这一问题就有了SecondaryNameNode节点,它的任务就是一定时间会拉取NameNode中的FsImage和EditLog然后将其进行合并,执行EditLog中的操作更新FsImage,然后将新的FsImage返回。

  1. NameNode创建一个新的EditLog文件,记录新的操作,老的不允许再写入
  2. SecondaryNameNode会将FsImage和EditLog将其拉到
  3. 执行EditLog更新FsImage
  4. 将新的FsImage返回给NameNode

五、HDFS的存储原理

HDFS是分布式文件系统,为了保证文件的可靠性采取了副本机制,它会将一个数据块的多个副本存到到不同的DataNode上,这样就会存在很多优点:

  • 文件传输速率变快:当访问文件时,会访问距离客户端最近的节点上的数据
  • 可以检查文件数据是否错误:因为存在多个副本,所以可以不同的DataNode之间进行通信,核对数据是否出错
  • 保证数据不会丢失

数据的存放策略

HDFS的默认副本数为3,一个机架的不同机器会存储两个副本,另外一个存储到不同的机架中。这样既可以保证机架发生异常时能够进行恢复数据,还可以题号数据的读写性能,同一机架内的带宽非常高,所以同一机架内的通信非常快,另外如果一个机架出现问题,可以从其它的机架上进行恢复数据。

六、HDFS数据的读写流程

1.读数据流程

读取HDFS上面的数据分为几个流程:

  1. 客户端会通过File System.open()打开文件,调用open方法之后,创建HDFS的输入流
  2. 访问NameNode,通过getBlockLocations()方法会获得文件的数据块的存储位置,并用该存储位置初始化输入流
  3. 通过初始化好的输入流进行read操作,获取数据,但是读的数据是最近的,什么意思?就是第2步会初始化同一个数据块的输入流,因为存在多个副本,然后将其进行排序,最近的会优先访问,如果前面的出现访问异常然后读取下一个较近的
  4. 关闭数据流的连接
  5. 重复2、3、4操作直到将一个文件的所有数据块全部读取完成

2.写数据流程

向HDFS中写入数据的流程:

  1. 客户端通过FileSystem.create()获取文件的输出流
  2. 访问NameNode,NameNode此时会做一些检查就是带写入的数据是否存在等信息,如果不存在NameNode会创建一个新的文件,并添加元数据信息
  3. 调用输出流的write方法进行写数据
  4. 当时写入的数据会被分成一个一个的包,这些包会被存入到一个队列中
  5. 输出流向NameNode申请节点,这些节点就会构成一个数据流管道,按照流水线的方式不断发往目标节点
  6. 每个节点成功接收成功的话会返回ack,确认已经收到,沿着管道的逆方向,每当一个包成功接受就将其从队列中删除,直到队列中无数据
    这些节点就会构成一个数据流管道,按照流水线的方式不断发往目标节点
  7. 每个节点成功接收成功的话会返回ack,确认已经收到,沿着管道的逆方向,每当一个包成功接受就将其从队列中删除,直到队列中无数据
  8. 关闭输出流资源


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
ly~
|
2天前
|
供应链 搜索推荐 大数据
大数据在零售业中的应用
在零售业中,大数据通过分析顾客的购买记录、在线浏览习惯等数据,帮助零售商理解顾客行为并提供个性化服务。例如,分析网站点击路径以了解顾客兴趣,并利用历史购买数据开发智能推荐系统,提升销售和顾客满意度。此外,大数据还能优化库存管理,通过分析销售数据和市场需求,更准确地预测需求,减少库存积压和缺货现象,提高资金流动性。
ly~
19 2
ly~
|
2天前
|
机器学习/深度学习 人工智能 自然语言处理
大数据在智慧金融中的应用
在智能算法交易中,深度学习揭示价格波动的复杂动力学,强化学习依据市场反馈优化策略,助力投资者获取阿尔法收益。智能监管合规利用自然语言处理精准解读法规,实时追踪监管变化,确保机构紧跟政策。大数据分析监控交易,预警潜在违规行为,变被动防御为主动预防。数智化营销通过多维度数据分析,构建细致客户画像,提供个性化产品推荐。智慧客服借助 AI 技术提升服务质量,增强客户满意度。
ly~
12 2
ly~
|
2天前
|
供应链 监控 搜索推荐
大数据的应用场景
大数据在众多行业中的应用场景广泛,涵盖金融、零售、医疗保健、交通物流、制造、能源、政府公共服务及教育等领域。在金融行业,大数据用于风险评估、精准营销、反欺诈以及决策支持;零售业则应用于商品推荐、供应链管理和门店运营优化等;医疗保健领域利用大数据进行疾病预测、辅助诊断和医疗质量评估;交通物流业通过大数据优化物流配送、交通管理和运输安全;制造业则在生产过程优化、设备维护和供应链协同方面受益;能源行业运用大数据提升智能电网管理和能源勘探效率;政府和公共服务部门借助大数据改善城市管理、政务服务及公共安全;教育行业通过大数据实现个性化学习和资源优化配置;体育娱乐业则利用大数据提升赛事分析和娱乐制作水平。
ly~
29 2
|
11天前
|
存储 数据可视化 大数据
大数据管理与应用
大数据管理与应用是一门融合数学、统计学和计算机科学的新兴专业,涵盖数据采集、存储、处理、分析及应用,旨在帮助企业高效决策和提升竞争力。核心课程包括数据库原理、数据挖掘、大数据分析技术等,覆盖数据处理全流程。毕业生可从事数据分析、大数据开发、数据管理等岗位,广泛应用于企业、金融及互联网领域。随着数字化转型加速,该专业需求旺盛,前景广阔。
22 5
|
12天前
|
存储 搜索推荐 大数据
大数据在医疗领域的应用
大数据在医疗领域有广泛应用,包括电子病历的数字化管理和共享,提升医疗服务效率与协同性;通过数据分析支持医疗决策,制定个性化治疗方案;预测疾病风险并提供预防措施;在精准医疗中深度分析患者基因组信息,实现高效治疗;在药物研发中,加速疗效和副作用发现,提高临床试验效率。此外,在金融领域,大数据的“4V”特性助力业务决策前瞻性,被广泛应用于银行、证券和保险的风险评估、市场分析及个性化服务中,提升运营效率和客户满意度。
22 6
|
1月前
|
机器学习/深度学习 数据可视化 大数据
阿里云大数据的应用示例
阿里云大数据应用平台为企业提供高效数据处理与业务洞察工具,涵盖Quick BI、DataV及PAI等核心产品。DT203课程通过实践教学,帮助学员掌握数据可视化、报表设计及机器学习分析技能,提升数据驱动决策能力。Quick BI简化复杂数据分析,DataV打造震撼可视化大屏,PAI支持全面的数据挖掘与算法应用。课程面向CSP、ISV及数据工程师等专业人士,为期两天,结合面授与实验,助力企业加速数字化转型。完成课程后,学员将熟练使用阿里云工具进行数据处理与分析。[了解更多](https://edu.aliyun.com/training/DT203)
|
14天前
|
机器学习/深度学习 人工智能 分布式计算
人工智能与大数据的融合应用##
随着科技的快速发展,人工智能(AI)和大数据技术已经深刻地改变了我们的生活。本文将探讨人工智能与大数据的基本概念、发展历程及其在多个领域的融合应用。同时,还将讨论这些技术所带来的优势与挑战,并展望未来的发展趋势。希望通过这篇文章,读者能够对人工智能与大数据有更深入的理解,并思考其对未来社会的影响。 ##
|
1月前
|
消息中间件 SQL 大数据
Hologres 在大数据实时处理中的应用
【9月更文第1天】随着大数据技术的发展,实时数据处理成为企业获取竞争优势的关键。传统的批处理框架虽然在处理大量历史数据时表现出色,但在应对实时数据流时却显得力不从心。阿里云的 Hologres 是一款全托管、实时的交互式分析服务,它不仅支持 SQL 查询,还能够与 Kafka、MaxCompute 等多种数据源无缝对接,非常适合于实时数据处理和分析。
82 2
|
16天前
|
网络协议 安全 Java
分布式(基础)-RMI的原理
分布式(基础)-RMI的原理
|
2月前
|
存储 SQL 分布式计算
MaxCompute 在大规模数据仓库中的应用
【8月更文第31天】随着大数据时代的到来,企业面临着海量数据的存储、处理和分析挑战。传统的数据仓库解决方案在面对PB级甚至EB级的数据规模时,往往显得力不从心。阿里云的 MaxCompute(原名 ODPS)是一个专为大规模数据处理设计的服务平台,它提供了强大的数据存储和计算能力,非常适合构建和管理大型数据仓库。本文将探讨 MaxCompute 在大规模数据仓库中的应用,并展示其相对于传统数据仓库的优势。
87 0

热门文章

最新文章