面试系列:深入理解Hadoop架构体系

大数据 Hadoop
Hadoop架构体系面试题:HDFS的进程构成及其作用;nameNode进程:负责对外展示文件的层级结构、管理客户端对文件的访问(如:打开、关闭、重命名等)、决定文件block与dataNode的对应关系等。

Hadoop组件简介

官方文档组织的非常清晰,主要由以下四个组件组成:HDFS、map-reduce、yarn、hadoop-common 

面试系列:深入理解hadoop架构体系
hdfs架构

HDFS

分布式文件存储系统,主要特点是:

  • 可以运行在普通低成本硬件之上
  • 并且具备高容错性(硬件容错)
  • 适合高吞吐量的大数据存储,但并不强调低延迟
  • 适合一次写,多次读的场景,不支持随机读写;

map-reduce

map-reduce是一个计算框架,绝大部分的数据处理都可以转化为map、reduce组合,然后利用map-reduce框架进行计算、处理;

yarn

资源管理器,核心的思想时将资源的调度管理与资源监控分割为两个进程,其中一个是ResourceManager,另一个是NodeManager,前者负责资源的分配、后者负责资源监控; 

面试系列:深入理解hadoop架构体系

common

hdfs、map-reduce所需要的公共库;

面试题

  • HDFS的进程构成及其作用;
  • nameNode进程:负责对外展示文件的层级结构、管理客户端对文件的访问(如:打开、关闭、重命名等)、决定文件block与dataNode的对应关系;
  • secondNameNode进程:从名字来看,应该是nameNode的back up,然而并不是,其主要作用是协助nameNode管理editLog;
  • dataNode:主要负责数据存储以及客户端的读写请求以及block的创建、删除等;

详细解释map过程的细节:

  • map过程主要是实现key-value集合到key-value集合的映射,可以实一对一、一对多、多对多映射;
  • 详细过程是:map -> group -> sorted -> partitioned
  • group:相同的key放到一起;
  • sorted:按照key进行排序
  • partition:对key进行分区,最终分区数量一般等于task数量;

详细解释reduce过程细节:

  • 首先是shuffle,即从map端拉取数据到reducer端;
  • 之后是group,也就是相同的key可能来自于不同的map,所以需要group
  • 之后是sort过程(再map阶段排序的基础之上,进行归并排序即可)
  • 最后是second sort(用户自定义,如果没有自定义则不执行)
  • 最后是reduce过程。 
面试系列:深入理解hadoop架构体系

setCombinerClass的作用:

  • 在map端先进行一部分reduce工作,主要优点是减少shuffle成本;但也有一定的局限性,仅仅适用于reduce的输入和输出数据类型相同时;

简单介绍Federation架构:

  • Federation架构通过多个独立的NameNode实现集群的横向扩展,主要解决了HDFS的吞吐量及承载量受限于单个nameNode,并且无法根据namespace做隔离的弊端。

在存储层,各个nameNode共用统一的DataNode

 

责任编辑:未丽燕 来源: 今日头条
相关推荐

2018-12-27 12:34:42

HadoopHDFS分布式系统

2021-09-03 09:55:43

架构Yarn内部

2017-08-15 13:05:58

Serverless架构开发运维

2021-09-28 09:26:04

云计算OpenAPI体系

2013-07-31 10:04:42

hadoopHadoop集群集群和网络

2012-08-31 10:00:12

Hadoop云计算群集网络

2012-11-08 14:47:52

Hadoop集群

2023-06-07 15:34:21

架构层次结构

2019-03-18 09:50:44

Nginx架构服务器

2018-04-16 11:04:23

HBaseRegion Serv数据库

2022-01-14 12:28:18

架构OpenFeign远程

2023-01-16 18:32:15

架构APNacos

2010-06-01 15:25:27

JavaCLASSPATH

2016-12-08 15:36:59

HashMap数据结构hash函数

2020-07-21 08:26:08

SpringSecurity过滤器

2021-04-25 10:45:59

Docker架构Job

2017-01-10 08:48:21

2024-02-21 21:14:20

编程语言开发Golang

2020-09-23 10:00:26

Redis数据库命令

2019-06-25 10:32:19

UDP编程通信
点赞
收藏

51CTO技术栈公众号