最新大数据开发八股文总结——Hadoop_大数据八股文(1),2024年最新你还看不懂吗

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

3)不支持文件并发写入,一个文件只能有一个写,不允许多个线程同时写。

3)仅支持数据append(追加),不支持文件的随机修改。


3.HDFS组成架构

在这里插入图片描述
在这里插入图片描述


4.HDFS文件块大小

HDFS的文件在物理上是分块储存(Block),块的大小通过配置参数配置(dfs.blocksize),默认大小在Hadoop2.x版本中是128MB,老版本中是64M


5.为什么快的大小不能设置太大,也不能设置太小?

(1)如果HDFS块的大小设置太小,则会增加寻址时间,程序一直在寻找块的开始位置;

(2)如果块的大小设置太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需要的时间。导致程序处理非常慢。

(3)HDFS块的大小设置取决于磁盘传输速率。


6.HDFS的shell操作(开发重点)

#1.命令大全:
bin/hadoop fs
#2.启动Hadoop集群:
sbin/start-dfs.sh
sbin/start-yarn.sh
#3.输出某一命令参数
hadoop fs -help rm
#4.创建文件夹
hadoop fs -mkdir bigdata
#5.上传操作
#5.1 从本地剪切粘贴到HDFS上
hadoop fs -moveFromLocal 
#5.2 从本地系统拷贝到HDFS上
hadoop fs -copyFromLocal
#5.3 等同于copyFromLocal
hadoop fs -put
#5.4 追加一个文件到已经存在的文件末尾
hadoop fs -appendToFile 
#6.下载操作
#6.1 从HDFS拷贝到本地
hadoop fs -copyToLocal
hadoop fs -get
#7.直接操作
显示目录信息 hadoop fs -ls /shu
显示文件内容 hadoop fs -cat 文件名字
修改文件属性 -chmod -chown
创建路径 -mkdir
从HDFS的一个路径拷贝到另一个路径 -cp
在HDFS中移动文件 -mv
设置文件的副本数量 -setrep


7.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步)。


8.HDFS的读数据流程

在这里插入图片描述

1)客户端通过分布式系统模块(Distributed FileSystem)向NameNode请求下载文件,NameNode通过查询元数据,找到文件所在的DataNode地址。

2)挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据。

3)DataNode开始传输数据给客户端(从磁盘里面读取数据流,以Packet为单位做校验)

4)客户端以Packet为单位接收,现在本地缓存,然后写入目标文件。


9.NN 和 2NN 工作机制

1)Fsimage文件: NameNode 内存中元数据序列化后形成的文件,用于在磁盘中备份元数据。

2)Edits文件: 每当元数据有更新或者添加元数据时,修改内存中的元数据并追加到Edits文件中;记录客户端更新元数据信息的每一步操作(可通过 Edits 运算出元数据)。

一旦NameNode断电,就会合并Fsimage文件和Edits文件,合成元数据。引入的Secondary NameNode 专门用于合并两个文件。


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第一阶段:NameNode 启动
(1)第一次启动 NameNode 格式化后&

### 数据质量问题案例 在实际项目中,曾经遇到过因数据源时间戳格式不一致而导致的数据质量问题。具体表现为某些记录的时间字段被错误解析为不同的日期格式,从而影响后续的统计分析结果[^1]。为了处理这一问题,团队通过引入标准化的时间转换函数库统一了时间格式,并增加了数据清洗阶段的质量校验逻辑。 --- ### 单事务事实表与多事务事实表的区别与作用 单事务事实表通常描述单一业务事件或操作的行为特征,其粒度较小且结构简单。例如,在电商场景下,“订单支付成功”的行为可以对应一条独立的事实记录。而多事务事实表则涉及多个关联业务流程的结果汇总,适合于复杂交易链条上的数据分析需求。比如,一笔完整的销售订单可能包含下单、付款、发货等多个环节的信息集合在一起形成复合型记录。 两者的主要差异体现在以下几个方面: | 特性 | 单事务事实表 | 多事务事实表 | |-----------------|-------------------------------------|----------------------------------| | **适用范围** | 独立业务事件 | 跨越多个业务活动 | | **数据粒度** | 较细 | 较粗 | | **存储规模** | 小 | 可能较大 | --- ### 关于复合索引及最左前缀原则 当设计数据库查询优化方案时,合理利用复合索引能够显著提升性能表现。然而需要注意的是,创建复合索引时应遵循“最左前缀匹配”规则——即只有当SQL语句中的条件按照定义顺序依次覆盖索引列时才能有效触发索引加速效果[^2]。如果违反该规则,则可能导致全表扫描或其他低效执行计划的发生。 举个例子来说,假设存在如下复合索引 `(colA, colB)` ,那么下面这些情况均会充分利用此索引来完成快速查找: ```sql SELECT * FROM table_name WHERE colA = 'value'; SELECT * FROM table_name WHERE colA = 'value' AND colB = 'another_value'; ``` 但如果仅针对 `colB` 设置过滤器而不提及任何有关 `colA` 的约束条件的话,上述优势便无法体现出来。 --- ### Android调试命令补充说明 对于移动端应用开发人员而言,掌握一些基础工具链知识同样重要。例如借助ADB(Android Debug Bridge)可以从设备端提取CPU占用率等相关运行状态指标并保存至指定路径文件当中以便进一步离线诊断分析[^3]: ```bash adb shell dumpsys cpuinfo | grep packagename > /path/to/output/CPU.txt ``` 这条指令的作用是从目标进程中筛选特定包名相关的资源消耗详情,并将其重定向输出到本地磁盘位置供后续查阅参考之用。 --- ### 数据仓库领域常见面试题目总结 以下是围绕数据仓库主题整理的一系列高频考察知识点清单: #### 技术概念类 1. 星型模型和雪花型模型各自特点是什么? 2. 维度建模的核心理念有哪些? #### 实践经验类 3. 如何评估ETL作业效率瓶颈所在?采取哪些手段改进? 4. 面临海量日志导入任务时如何规划分层架构降低延迟风险? #### 性能调优方向 5. Hive SQL查询过程中常见的慢查原因有哪些解决方案建议吗? 6. Redshift集群扩容前后需要注意事项分别都有什么? 以上列举仅为部分代表性话题范畴并非穷尽全部可能性内容. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值