数据开发八股文整理- Hadoop

ops/2025/1/12 10:33:16/

什么是hadoop
Hadoop是一个分布式系统基础架构,主要解决海量数据的存储和海量数据的分析计算问题
Hadoop运行模式
本地模式和为分布式模式都是单机运行
完全分布模式即是多台服务器组成分布式环境
Hadoop集群中的组件
Name Node-负责存储文件的元数据,例如文件位置,文件目录结构
Data Node-负责存储文件块数据
Secondary Name Node-负责对Name Node的数据进行备份
Node Manger-执行任务
Resource Manager负责资源调度
HDFS定义
是一个分布式文件系统,适合一次写入多次写出的场景,对于文件只能追加不能修改,适合用于数据分析
HDFS优缺点
优点:
高容错性-能够自动保存多个副本,在一个副本丢失时可以进行恢复
适合进行大规模数据的处理
可以在廉价机器上构建,有可靠性
缺点:
不适合低延迟数据访问
无法高效的存储大量小文件
不支持文件并发写入
仅支持数据追加,不支持数据修改
HDFS中的组件
Name Node负责管理名称空间,管理数据映射信息,处理客户端的请求
Data Node负责存储数据,执行数据读写操作
Client负责与前两个组件进行交互,获取文件信息并读取或者写入数据,同时提供一些命令操作HDFS
Secondary Name Node负责备份Name Node,在紧急情况下,可以接替Name Node的工作
*H DFS采用块存储,2.0中一个块大小是128MB
HDFS写数据流程
1)客户端通过分布式文件系统模块(Distributed FileSystem)向NameNode请求上传文件,NameNode检查目标文件是否存在,父目录是否存在;
2)NameNode返回是否可以上传文件;
3)客户端请求第一个Block上传到哪几个DataNode服务器上;
4)NameNode返回3个DataNode节点,分别为dn1,dn2,dn3;
5)客户端通过FSDataOutputStream模块请求dn1上传数据,dn1收到请求会继续调用dn2,dn2调用dn3,将这个通信管道建立完;
6)dn1,dn2,dn3逐级应答客户端;
7)客户端开始往dn1上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位,dn1收到一个Packet传给dn2,dn2传给dn3,dn1每传一个packet会放入一个应答队列等待应答;
8)当一个Block传输完成后,客户端再次请求NameNode上传第二个Block的服务器(重复执行3-7步)。
HDFS数据备份
Name Node内存中的元数据序列化后会形成Fsimage文件,用于在磁盘中备份元数据
每当有元数据更新或者添加元数据的时候,修改元数据同时追加到edit文件中,记录客户端更新元数据的每一步操作
一旦Name Node断电,系统会合并Fsimage文件和Edits文件,合成新的元数据,其中Secondary Name Node专门用于合并两个文件,接替Name Node的工作
小文件对HDFS的危害
小文件过多会占用Name Node的内存,因为每一个元数据都会占用一份内存,会造成内存空间不足
如果有大量小文件,会造成寻道时间大于读取文件的时间,这与其设计原理相悖,并且会严重影响运行速度
如果访问小文件,必须跳转Data Node,严重降低读取性能
Mapreduce原理
它是一个分布式运算框架,其中Map函数用于数据预处理,输入和输出都是键值对形式,处理好的数据会送入Reduce阶段,对每一组简直进行处理,形成最后的输出
Mapreduce优缺点
优点:易于编程,有良好的扩展性
具备高容错性适合处理海量数据
缺点:不擅长实时计算和流使式计算,只能处理静态数据
不擅长有向图计算(spark擅长),因为需要将数据写入磁盘,会造成大量磁盘IO
Hadoop数据压缩的方式
deflate,Gzip,Bzip,前两种不支持切片
mapreduce性能瓶颈
1.计算机性能
2.IO操作优化
数据倾斜,任务设置不合理,Map时间过长,小文件过多,大文件过多等
MapReduce优化方法
在数据输入阶段,合并小文件,减少数据装载次数
在Map阶段减少溢写和合并次数,缩短整体时间,减少IO
合理设置Map和reduce任务数量,避免造成资源竞争或者处理超时
数据倾斜
一种是某一区域的数据量远远大于区域
一种是部分记录的大小的大小远远大于平均值
导致大部分的任务运行速度快,小部分的任务运行速度很慢,或者出现内存异常
如何缓解数据倾斜?
1抽样和范围分区
2自定义分区
3使用combine减少数据倾斜,聚合并精简数据,例如将相同key的数据进行合并
4尽量采用Map Join避免使用Reduce join这样可以省略shuffle阶段,提高磁盘IO效率
5通过随机前缀重新设计键值,针对聚合类的数据倾斜,可以在map阶段添加随机后缀,是的分区的时候能够分到不同节点,然后再重新进行一次全局聚合
HDFS小文件优化方法
HDFS上每个文件都需要建立一个索引,文件过多就会产生大量的索引文件,不仅占用内存空间,也会导致索引速度大幅度降低
优化方法:
在数据采集阶段将小文件合并成大文件再上传
在业务处理钱,在HDFS上使用Map Reduce进行文件合并
可以使用CombineTextInputFormat提高效率
参考博客https://blog.csdn.net/weixin_44123362/article/details/130230531


http://www.ppmy.cn/ops/149426.html

相关文章

vue3树形组件+封装+应用

文章目录 概要应用场景代码注释综合评价注意事项功能拓展代码说明概要 创建一个基于Vue 3的树形结构组件,用于展示具有层级关系的数据,并提供了节点展开/折叠、点击等交互功能。以下是对其应用场景、代码注释以及综合评价和注意事项的详细说明。 应用场景 这个组件适用于需…

Spring Boot 和微服务:快速入门指南

💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长…

某漫画网站JS逆向反混淆流程分析

文章目录 1. 写在前面1. 接口分析2. 反混淆分析 【🏠作者主页】:吴秋霖 【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Pyth…

Docker 服务、镜像、容器之命令(Docker Services, Images, and Container Commands)

Docker 服务、镜像、容器之命令 Docker是一个强大的容器化平台,能够帮助开发者高效地构建、部署和管理应用程序。本文将详细介绍Docker的服务命令、镜像命令和容器命令,帮助你快速上手Docker。 一、Docker的服务相关命令 在使用Docker之前&#xff0c…

IP 地址与蜜罐技术

基于IP的地址的蜜罐技术是一种主动防御策略,它能够通过在网络上布置的一些看似正常没问题的IP地址来吸引恶意者的注意,将恶意者引导到预先布置好的伪装的目标之中。 如何实现蜜罐技术 当恶意攻击者在网络中四处扫描,寻找可入侵的目标时&…

数据通过canal 同步es,存在延迟问题,解决方案

当使用 Canal 同步数据到 Elasticsearch(ES)时,出现延迟问题通常源于多个因素,如 Canal 配置、网络延迟、ES 的负载和性能瓶颈等。以下是一些解决方案,帮助减少和解决延迟问题: 1. 优化 Canal 配置 Canal…

从预训练的BERT中提取Embedding

文章目录 背景前置准备思路利用Transformer 库实现 背景 假设要执行一项情感分析任务,样本数据如下 可以看到几个句子及其对应的标签,其中1表示正面情绪,0表示负面情绪。我们可以利用给定的数据集训练一个分类器,对句子所表达的…

新能源网站提升用户体验的关键

新能源网站的用户体验对于吸引和留住访问者至关重要。一个优秀的用户体验可以增加用户的满意度,提高他们对网站的忠诚度。在设计新能源网站时,关键在于简洁明了的界面和易于导航的布局。用户应该能够轻松找到他们需要的信息,而不会感到困惑或…