Hadoop原理

Hadoop框架

        分布式文件存储 - HDFS 即Hadoop内提供分布式数据存储的文件系统

        分布式计算框架 - MapReduce 即Hadoop内提供的进行分布式计算的组件

        分布式资源调度 - YARN 即Hadoop内提供的进行分布式资源调度的组件

Hadoop原理-HDFS相关

1.HDFS原理--分布式介绍

问题1: 为什么要用分布式存储? 

        分布式存储解决了单机存储容量有限的问题, 且带来了比较高的性能提升.

        细节: 横向扩展 = 加机器, 纵向扩展 = 加配置(硬件)

2.HDFS原理--架构图

问题2: 简述HDFS的架构及各节点的角色?

答案:

        namenode: 主节点.

                管理整个HDFS集群. 护和管理元数据. SecondaryNameNode: 辅助节点. 辅助namenode维护和管理元数据的.

        datanode: 从节点.

                存储具体的数据.

                负责源文件的读写操作.

                定时和namenode发送心跳包.

                                

3.HDFS原理--分块存储

问题3: 简述你对HDFS的分块存储机制的理解.

答案:

        1. 分块存储是为了方便统一管理的, 默认的块大小为: 128MB. 细节: Hadoop2.X开始才是128MB, Hadoop1.X是: 64MB.

        2. 副本机制是为了提高容错率, 副本数越多, 容错率越高. 带来的弊端是: 磁盘利用率下降了. 

4.HDFS原理--namenode如何管理元数据

 问题4: namenode是如何维护和管理元数据的?
答案:
        1. namenode是通过一批Edits(小) 和 1个FSImage(大)两类文件来维护和管理元数据的.
        2. Edits文件相对较小, 操作起来速度相对较快, 它只记录HDFS最近一段状态的元数据信息.阈值: 1个小时 或者 100W次
        3. FSImage文件相对较大, 操作起来速度相对较慢, 它记录的是HDFS集群除最近状态外, 其它所有的元数据信息.
        4. HDFS集群启动的时候, 会自动加载FSImage文件 和 最新的Edits文件进内存, 用于记录元数据.整个过程称为HDFS的自检动作, 此状态下, HDFS集群会强制进入到安全模式, 只能读, 不能写.
        5. 我们HDFS集群的Edits文件和FSImage文件存储在: /export/data/hadoop/dfs/name/current

5.HDFS原理--SecondaryNameNode如何辅助namenode管理元数据

问题5: SecondaryNameNode是如何辅助namenode管理元数据的?

答案:

        1. SecondaryNameNode会间隔60s(秒), 询问一次namenode, edits文件是否满足了阈值(1个小时, 或者100W次)

        2. 如果满足条件, 就通知namenode创建新的Edits文件, 继续往里写入元数据信息.

        3. 根据http协议, 从namenode上把要合并的edits文件 和 fsimage文件拉取到本地进行合并.

        4. 将合并后的新的FSImage文件推送给namenode, 用来替换之前旧的FsImage文件. 细节: 旧的FSImage文件并不会被立即删除, 而是达到一定的阈值后, 才会被删除.

        5. 对于Edits文件和FSImage文件的合并操作, 是由SecondaryNameNode独立完成的, 全程namenode不参与.

        6. 实际开发中, namenode 和 SecondaryNameNode会被部署到不同的服务器上, 配置几乎一致, 只不过SecondaryNameNode的内存要稍大一些.

        7. 在紧急情况下, SecondaryNameNode可以用来恢复namenode的元数据.

6.HDFS原理--三大机制

        三大机制指的是: 副本机制, 负载均衡, 心跳机制

问题6: HDFS的三大机制及副本存储?

        三大机制:

                副本机制: 默认是3, 可以提高容错率, 但是磁盘的利用率降低.

                负载均衡: namenode尽量保证多台datanode资源使用率一致.

                心跳机制: 3秒, 630秒, 6个小时. 

7.HDFS原理--HDFS写数据流程

问题7: 请简述你对HDFS的写数据流程的理解?

答案:

        Client(客户端)请求namenode, 上传文件.

        namenode接收到客户端请求后, 会校验权限, 并告知客户端是否可以上传. 校验: 客户端是否有写的权限, 及文件是否存在.

        如果可以上传, 客户端会按照128MB(默认)对文件进行切块.

        Client(客户端)再次请求namenode, 第1个Block块的上传位置.

        namenode会根据副本机制, 负载均衡, 连接就近的datanode机器, 然后依次和其他的datanode进行连接, 形成: 传输管道(Pipeline).

        采用数据报包(DataPacket)的形式传输数据, 每个包的大小不超过: 64KB, 并建立: 反向应答机制(ACK机制).

        重复上述的步骤, 直至所有的Block块传输完毕.

8.HDFS原理--HDFS读数据流程

问题8: 请简述你对HDFS的读数据流程的理解?

答案:

        Client(客户端)请求namenode, 读取文件.

        namenode校验该客户端是否有读权限, 及该文件是否存在, 校验成功后, 会返回给

        Client(客户端)会连接上述的机器(节点), 并行的从中读取块的数据.

        Client(客户端)读取完毕后, 会循环namenode获取剩下所有的(或者部分的块信息), 并行读取, 直至所有数据读取完毕.

        Client(客户端)根据Block块编号, 把多个Block块数据合并成最终文件即可.

9.HDFS原理--安全模式介绍

问题9: HDFS的安全模式解释:

        概述:

                安全模式是HDFS自带的有一种保护机制, 在安全模式下, 只能读, 不能写. 进入安全模式的方式:

                启动Hadoop集群的时候, 会自动进入到安全模式, 进行自检. 自检没问题后, 会自动关闭安全模式.

                当活跃的节点数 < 默认的副本数时, 会强制进入到安全模式.

10.HDFS原理--归档操作

背景:

        HDFS适用于操作海量的大文件, 如果小文件过多, 就会占用多个Block块, 且也有多份元数据, 资源消耗比较大. 

概述:

        归档包类似于压缩包, 但是只有压, 没有缩, 相当于把多个文件合并成1个文件, 这样元数据就只有1份儿了.

格式:

        hadoop archive -archiveName 归档包的名字 -p 要被归档的文件名 存储归档包的路径

Hadoop原理-MapReduce相关

问题1: 什么是计算? 什么是分布式计算?

答案:

        计算: 狭义上指的是数学运算, 广义上指的是: 分析数据, 获取结果.

        分布式计算:即: 分而治之的思想, 把大问题拆解成若干个小问题, 小问题解决了, 大问题也就解决了.

问题2: 分布式计算的两种思路?

答案:

        思路1: 分散 => 汇总, 去中心化. MapReduce就是这种思路, 先MapTask负责分, 再ReduceTask负责合.

        思路2: 步骤执行 => 中心化调度 Spark, Flink用的是这种方式. Spark, Flink: Master(主节点), Worker(从节点)

Hadoop原理-Yarn相关

问题1: 什么是资源?

答案:

        指的是计算机资源, 例如: CPU, 内存, 磁盘等.

问题2: 什么是资源调度?

答案:

        在服务器比较繁忙, 程序(计算任务)较多的时候, 如何合理的调度和分配, 管理资源, 就叫: 资源调度. 资源调度最重要的市: 调度策略(调度算法)

问题5: 请简述你对Yarn的三大调度策略(调度器)的理解?

答案:

        FIFO(先进先出):
            好处:
                每个计算任务能独享集群100%的资源.
            弊端:
                不能并行执行, 如果大任务过多, 会导致小任务执行时间过长.
        Capacity(容量调度): 
            好处:
                1. 可以当多任务, 并行执行, 提高计算效率.
                2. 可以借调资源.
            弊端:
                1. 每个计算任务不能独享集群100%的资源, 存在着资源闲置(浪费)的情况.
                2. 如果出现了资源借调的情况, 可能也会出现无法"及时"归还资源的情况.
        Fair(公平调度): 
            好处:
                1. 多任务可以并行执行, 提高计算效率.
                2. 如果只要1个任务, 则它可以共享集群100%的资源.
            弊端:
                每个任务获取集群的资源, 都是公平的, 均分的, 例如: 1个任务, 就占用 100%资源,
                2个任务, 各占50%的资源
                3个任务, 各占33.3333....%的资源
                如果小任务过多, 会导致大任务迟迟无法执行结束的问题. 

  • 31
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值