大数据开发面试题【Hadoop篇】

1、Hadoop特点

hadoop是一个分布式计算平台,能够允许使用编程模型在集群上对大型数据集进行分布式处理
hadoop的三大组件:HDFS(分布式文件存储平台)、MR(计算引擎)、YARN(资源调度平台)
特点:
高扩容:hadoop在集群间分发数据并完成数据计算,集群可以方便进行扩展节点
成本低:hadoop使用连接的机器组成集群来分发和处理数据,不依赖高端成本;
高效率:在集群中处理和分发数据,处理速度非常快;
可靠性:存储在hdfs上的数据文件,一般有多个备份,保证数据的可靠性;(数据备份)

2、说下Hadoop生态圈组件及其作用

hive(离线数据仓库):基于hdfs,结合类SQL引擎,底层执行MR任务,用于OLAP分析查询的数据仓库。
zookeeper(管理员): 分布式协调服务。就是为用户的分布式应用程序提供协调服务,如:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务等等。
kafka(消息通信中间件)
flume(日志传输组件):是一个分布式可靠的高可用的海量日志收集、聚合、移动的工具,通俗来说flume就是一个日志采集工具;
spark(批处理计算框架):是一个快速的,通用的集群计算系统。
flink(流处理计算框架)

3、Hadoop主要分哪几个部分?他们有什么作用?

HDFS:高容错、高可靠性、高可扩展性、高吞吐率的分布式文件存储系统,负责海量数据的存储;
YARN:资源管理调度系统,负责hadoop生态系统中任务的调度和监控;
MR:基于HDFS、YARN的分布式并行计算框架,负责海量数据的计算

4、Hadoop集群工作时启动哪些进程?它们有什么作用?

  1. NN:是hadoop中的主服务器,管理文件系统名称空间和对集群中存储的文件访问,这些元数据信息是存储在内存中的,也可以持久化到磁盘上。并且可以管理DN
  2. SNN:不是NN的冗余守护进程,而是提供周期性检查点和清理任务,帮助NN合并editslog,减少NN的启动时间(并不是NN的备用节点)
  3. fsimage - 它是在NameNode启动时对整个文件系统的快照
  4. edit logs - 它是在NameNode启动后,对文件系统的改动序列

只有NN重启的时候,editlogs才会合并到fsimage文件中,得到一个文件系统的最新快照,但是在NN工作很久以后,editlogs文件变得很大。导致NN的重启会花费很长时间,此时SNN的职责就是帮助editlogs合并到fsimage文件中。定时去获取NN去获取editlogs,并更新到自己的fsimage上,一旦有了新的fsimage,它将拷贝回NN中
DN:提供真实的文件数据的存储服务,以数据的形式存储HDFS文件,响应HDFS客户端的读写请求,周期性地向NN汇报心跳信息、数据块信息、缓存数据块信息
RM:负责整个集群资源的管理和调度,功能包括对ApplicationMaster的管理、NM的管理、Application管理等,负责整个集群中所有资源的统一管理和分配,并且接受来自各个节点的资源汇报信息;
NM:主要处理来自RM分配的任务,监测并且报告Container使用信息给RM;
JN:两个NameNode为了数据同步,会通过一组称作JournalNodes的独立进程进行相互通信。当active状态的NameNode的命名空间有任何修改时,会告知大部分的JournalNodes进程。standby状态的NameNode有能力读取JNs中的变更信息,并且一直监控edit log的变化,把变化应用于自己的命名空间。standby可以确保在集群出错时,命名空间状态已经完全同步了。

5、在集群计算的时候,什么是集群的主要瓶颈

  1. 网络带宽:集群中节点通常通过网络进行数据传输和通信,网络带宽不足,会导致数据传输速度慢,影响整个集群计算性能
  2. 存储性能:如果存储系统的读写能力较低,会影响数据的读取和写入速度,降低整个集群的计算效率
  3. 处理能力:集群中的节点数据量和节点的计算能力都会影响整体的计算能力,集群规模较小或者节点的计算能力较低,无法满足大规模数据处理的需求
  4. 内存容量:进行大规模数据分析和处理,需要大量的内存资源来存储和操作数据,若节点的内存不足,会导致数据无法完全加载到内存中,影响性能
  5. 数据倾斜:由于数据分布不均匀,导致某些节点的数据负载过重,从而使得这些节点成为整个集群的瓶颈(解决数据倾斜方法后续详谈)

6、搭建Hadoop集群的xml文件有哪些?

core-site.xml:配置Hadoop的核心参数,如文件系统默认方案、HDFS地址等。
hdfs-site.xml:配置HDFS的相关参数,如副本数量、数据块大小等。
mapred-site.xml:配置MapReduce相关参数,如作业跟踪器地址、任务分配器等。
yarn-site.xml:配置YARN相关参数,如资源管理器地址、节点管理器等。
hive-site.xml:如果需要使用Hive,则需要配置Hive的相关参数,如元数据存储位置、数据库连接等。

7、Hadoop的Checkpoint流程?

该流程是指在集群中,将正在运行的任务的状态信息和元数据信息保存在持久化存储中,以便在集群发生故障时候能够及时恢复任务;

若不适用HA,hadoop的checkpoint机制就是主节点的元数据备份机制,通过SN,每隔一段时间将NN的元数据更新并备份,然后返回给fsimage和NN,SNN会每隔默认60分钟,都会通知更新日志信息edits,以便后续元数据备份操作;

元数据是保存在内存当中的,这样容易丢失,NN的工作量巨大,管理众多DN,还要更新操作日志文件edits,还要将元数据信息序列化到本地,所以SNN就会开始代替NN完成元数据的保存工作
流程如下:
1、当一个任务开始执行时,Hadoop会周期性地将任务地状态信息和元数据信息写入到Checkpoint目录中。这些信息包括任务的进度、输入数据的位置、已经完成的工作等。
2、Checkpoint目录通常位于分布式文件系统(如HDFS)中,以保证数据的安全性和可靠性。
3、Hadoop还会在内存中保存一个Checkpoint ID,用于标识当前的Checkpoint。
4、在任务执行过程中,如果集群发生故障或节点失效,任务会停止执行。
5、当集群恢复正常后,Hadoop会检查Checkpoint目录中的状态信息和元数据信息,并根据Checkpoint ID找到最新的Checkpoint。
6、Hadoop会使用Checkpoint中的信息来恢复任务的执行状态,包括任务的进度、输入数据的位置等。
7、任务恢复完成后,Hadoop会继续执行任务,并从上次Checkpoint的位置继续处理数据,以确保不会重复执行已经完成的工作。

8、Hadoop的Block大小是什么?为什么要设置这么大?

hadoop的块默认大小是128M,在hadoop1.和2.x版本默认为64M
原因:
文件块越大,寻址时间越短,但磁盘的传输时间越长。磁盘传输的时间会大于寻址时间,导致处理过程变慢,其次,MR中的map任务通常一次只处理一个块中的数据,块过大运行速度也会变慢;
文件块越小,寻址时间越长,但磁盘传输时间越短。存储小文件会占用NN中大量内存来存储元数据,管理效率变低;

9、Hadoop里Block划分的原因?

  1. 分布式存储:Hadoop是一个分布式系统,数据存储在集群中的多个节点上。通过将文件划分为块,可以将这些块分散存储在不同的节点上,实现数据的分布式存储和并行处理。
  2. 数据冗余:Hadoop使用副本机制来确保数据的可靠性和容错性。将数据划分为块后,可以将每个块的多个副本分布在不同的节点上,以防止数据丢失或节点故障。
  3. 数据局限性:Hadoop采用了数据局部性原则,将计算任务分配给存储数据的节点,以减少数据的网络传输和提高计算效率。将数据划分为块后,可以更好地实现数据局部性,因为计算任务可以针对某个块进行处理,而不需要处理整个文件。
  4. 管理和调度:将数据划分为块后,Hadoop可以更方便地管理和调度数据。块的大小可以根据具体应用和硬件配置进行调整,以优化数据处理和存储地性能。

10、Hadoop中常见的压缩算法

default:默认的压缩格式
Gzip:可以减小文件的大小,但无法进行并行处理
Snappy:谷歌开发,具有很高的压缩和解压缩速度,压缩后文件较大
LZO:较快的压缩算法,可以在hadoop中实现高速压缩和解压缩,适用于大数据压缩
Bzip2:较高压缩比,速度较慢
LZ4:极快压缩速度,压缩比较低

11、Hadoop作业提交到YARN的流程?

前置基础:Container是yarn中资源的抽象,封装了某一个节点上一定量的cpu和内存资源
1、RM接收到一个作业请求后,给该作业生成唯一ApplicationID,并为该作业分配一个ApplicationMaster
2、RM将ApplicationID和ApplicationMaster的地址返回给客户端
3、客户端与ApplicationMaster的地址建立通信,发送资源请求
4、ApplicationMaster收到作业资源需求和启动命令,向RM申请资源
5、RM根据可用的资源情况为ApplicationMaster分配所需资源,将资源返回给ApplicationMaster
6、ApplicationMaster收到资源位置信息后,与NM通信,将作业所需的资源分配给具体的task
7、每个task会在独立的Container中运行,通过心跳机制汇报ApplicationMaster任务的情况
8、ApplicationMaster收到所有任务完成的信息,向RM注销自己
9、RM收到ApplicationMaster的注销请求后,将该作业从yarn状态存储中删除,释放相关资源

12、Hadoop的Combiner的作用?

Combiner是在map阶段之后,reduce阶段之前,对map输出的中间数据进行本地合并和压缩,减少数据的传数量提高整体性能,可将相同的key的多个map输出结果进行合并,减少网络传输的数据量,降低reduce的负载,提高效率;
mapper端到reducer端的数量在应用combiner之后会减少,对输出的键值对进行压缩合并,减少数据量

13、Hadoop序列化和反序列化

序列化是将数据转换为字节流的过程,反序列化是将字节流重新转换成数据的过程
以保证数据在各个节点之间的传输过程中占据更少的磁盘容量

14、Hadoop小文件处理问题?

导致的问题

  1. 存储开销:每个小文件需要占据磁盘空间,默认的块是128MB,大部分小文件会浪费磁盘空间
  2. 元数据开销:NN会为每个文件分配一个元数据块,小文件数量过多时候,元数据存储和访问的开销会增加
  3. 数据读取效率低:小文件数量庞大,导致大量的寻址时间和网络传输开销
  4. 任务调度:MR任务是以块为单位进行调度的,小文件数量庞大会导致任务调度的开销增加

处理办法

  1. 合并小文件:使用工具HAR或者自定义脚本进行合并操作,减少存储和元数据开销(将多个小文件打包成一个HAR文件,NN中的元数据也就存储一份)
  2. SequenceFile格式:将小文件换成SequenceFile格式,将多个小文件合并成一个SequenceFile文件,有效处理小文件
  3. 数据归档:将多个小文件合并为一个大文件,进行归档存储 4:数据压缩:压缩小文件,减少存储空间和网络传输开销

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/16638.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

苹果手机突然白屏无反应怎么办?白屏修复办法分享!

苹果手机突然白屏无反应怎么办?下面小编就来给大家分享苹果手机突然白屏的原因和修复办法。 一般造成苹果手机出现白屏的原因如下: 系统问题:iOS系统的故障是导致苹果设备白屏无反应最常见的原因之一。例如,系统更新失败、应用冲…

TI_DSP_F2808学习笔记3: ePWM

共有6组ePWM,每一组 ePWM 模块都包含以下 7 个模块:时基模块 TB、计数比较模块 CC、动作模块 AQ、死区产生模块 DB、PWM 斩波模块 PC、错误联防模块 TZ、时间触发模块 ET。 时基模块 TB 确定PWM的周期和相位。 1)PWM 时基计数器&#xff…

R18 NTN中的RACH-less HO

在看R18 38.300时,发现NTN场景 增加了如下黄色字体的内容,R18 NTN支持了RACH-less HO,索性就简单看了看。 NTN RACH less HO相关的描述主要在38.331,38.213和38.321中。38.300中的描述显示:网络侧会通过RRCReconfiguration消息将RACH-less HO相关的配置下发给UE, 其中会包…

【SpringCloud】负载均衡

目录 负载均衡什么是负载均衡生活场景为什么需要负载均衡负载均衡手段负载均衡总的来说有两种实现手段负载均衡具体可以通过多种手段来实现 SpringCloud中的负载均衡组件Ribbon VS Nginx负载均衡区别集中式LB进程内LB RibbonRibbon的工作原理Ribbon在工作时分成两步 使用1.提供…

光纤跳纤,这篇文章值得一看

光纤跳线作为光网络布线最基础的元件之一,被广泛应用于光纤链路的搭建中。 如今,光纤制造商根据应用场景的不同推出众多类型的光纤跳线,如 MPO / LC / SC / FC / ST 光纤跳线,单工/双工光纤跳线,单模/多模光纤跳线等&…

把maven本地库(windows)导入Nexus3(ubuntu)

1、在nexus中创建导入仓库 点“Create repository” 选择maven2(hosted) 填上对应的仓库name,Version policy选“Mixed” Hosted中的Deployment policy选择“Allow redeploy” 点“Create repository”创建仓库 创建好的仓库如下 记下仓库的url,下…

智慧教室课堂-专注度及考试作弊系统、课堂动态点名,情绪识别、表情识别和人脸识别结合

课堂专注度分析: 课堂专注度表情识别 作弊检测: 关键点计算方法 转头(probe)低头(peep)传递物品(passing) 侧面的传递物品识别 逻辑回归关键点 使用: 运行setup.py安装必要内容 python setup.py build develop 运行demo_inference.py 将…

ISO 27701-2019 隐私信息管理体系要求中文版 学习笔记

ISO 27701-2019: 隐私信息管理体系的新里程碑 随着数字化时代的到来,个人隐私保护变得愈发重要。组织和企业在处理个人数据时,如何确保隐私安全,成为了全球关注的话题。ISO 27701-2019标准,作为隐私信息管理体系(PIMS&…

计算机的存储体系

计算机的存储分为内存和硬盘两大类。其中内存属于非持久化的存储设备,用于临时存储数据,设备掉电后数据会丢失;硬盘属于持久化的存储设备,设备掉电后数据不会丢失。 实际上在计算机领域存储的种类是非常多的,业界有时…

osgearth 3.5 vs 2019编译

下载源码 git clone --recurse-submodules https://github.com/gwaldron/osgearth.git 修改配置文件 主要是修改bootstrap_vcpkg.bat,一处是vs的版本,第二处是-DCMAKE_BUILD_TYPERELEASE 构建 执行bootstrap_vcpkg.bat vs中生成安装 vs2019打开bu…

用友电子凭证解决方案,加速企业电子凭证全链路管理

2023年,财政部等9部委联合推进电子凭证数据标准及试点工作,目前逐步扩大试点范围,覆盖市场应用高频的9类凭证。2024年,财政部办公厅发布了《关于继续开展电子凭证会计数据标准深化试点工作的通知》对电子凭证进行全流程常态化处理…

赛事|基于SprinBoot+vue的CSGO赛事管理系统(源码+数据库+文档)

CSGO赛事管理系统 目录 基于SprinBootvue的CSGO赛事管理系统 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3参赛战队功能模块 4合作方功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&…

人类行为验证处理方案 —— 脱离UI组件库实现登录、注册+表单校验

目录 01: 构建登录模块基础UI结构 02: 表单校验实现原理与方案分析 表单校验的实现原理 自定义表单校验方案分析 文章中的方案实现 03: 基于 vee-validate 实现普适的表单校验 04: 什么是人类行为验证?它的目的、实现原理、构建方案分别是什么&am…

MySQL分表和分区分表的区别

推荐一个程序员的常用工具网站,嘎嘎好用:程序员常用工具 云服务器限时免费领:轻量服务器2核4G MySQL分表和分区分表的区别 随着数据量的不断增长,数据库的性能和扩展性面临越来越大的挑战。为了解决这些问题,MySQL提…

UE_地编教程_创建地形洞材质

个人学习笔记,不喜勿喷。侵权立删! 使用地形洞材质来遮罩地形上特定位置的可视性和碰撞。如要在山脉侧面创建进入洞穴的入口,此操作将非常有用。可使用地形材质和地形洞材质的相同材质,但注意:对比不使用不透明蒙版的…

centos 安装mysql8 客户端

1. 安装用于管理GPG密钥的包 sudo yum install gpg-pubkey 2. 如果是在一个新的系统上首次安装MySQL,需要导入MySQL的官方GPG密钥: sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 3.下载MySQL Yum仓库配置包 wget https://dev.…

(超详细)SpringCloud集成OpenFeign实现服务调用

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 OpenFeign 是一个声明式的 HTTP 客户端,它使得我们可以用接口的方式调用 HTTP 服务,极大地简化了 REST 客户端的编写。在 Spring Cloud 中,集成了 OpenFeign,使得开发者可…

AI大模型探索之路-实战篇4:深入DB-GPT数据应用开发框架调研

目录 前言一、DB-GPT总体概述二、DB-GPT关键特性1、私域问答&数据处理&RAG2、多数据源&GBI3、多模型管理4、自动化微调5、Data-Driven Multi-Agents&Plugins6、隐私安全 三、服务器资源准备1、创建实例2、打开jupyterLab 四、DB-GPT启动1、激活 conda 环境2、切…

docker安装etcd

1.查找etcd镜像 docker search etcdNAME: 镜像仓库源的名称 DESCRIPTION: 镜像的描述 STARS: 类似 Github 里面的 star,表示点赞、喜欢的意思。 OFFICIAL: 是否 docker 官方发布 2.拖取镜像并生成对应容器 docker run --name etcd -d -p 2379:2379 -p 2380:2380 …

MyBatis懒加载数据(大批量数据处理)

使用范例 Cursor约定使用Iterator去懒加载数据,以时间换空间,非常适合处理通常无法容纳在内存中的数百万个项目查询。如果在 resultMap 中使用集合,则必须使用 resultMap 的 id 列对游标 SQL 查询进行排序(resultOrdered“true”)。 //为了避…