Hadoop必会面试题

这篇具有很好参考价值的文章主要介绍了Hadoop必会面试题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.分布式和集群介绍

1.Hadoop的架构图

2.Hadoop集群环境HDFS

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

2.HDFS原理--架构图

3.高可用模式:

4.HDFS原理--分块存储

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

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

7.HDFS原理--三大机制详解

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

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

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

11.HDFS原理--归档操作

背景:

演示步骤:

12.HDFS原理--垃圾桶机制

配置垃圾桶的步骤:

开启垃圾桶机制之后, 代码写法如下:

3.Hadoop之MapReduce初体验


1.分布式和集群介绍

  • 分布式: 多台机器做不同的事情, 然后组成1个整体.

  • 集群: 多台机器做相同的事情

多台机器既可以组成 中心化模式(主从模式), 也可以组成 去中心化模式(主备模式)

Hadoop必会面试题,hadoop,hdfs,大数据

A.员工1和A.员工2的关系是集群,A.员工1和B.员工1的关系是分布式

Hadoop必会面试题,hadoop,hdfs,大数据

1.Hadoop的架构图

Hadoop1.X = HDFS + MapReduce:现在已经不使用了

hadoop2.x和3.x:HDFS+MapReduce+Yarn

Hadoop必会面试题,hadoop,hdfs,大数据

2.Hadoop集群环境HDFS

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

分布式存储解决了单机存储容量有限的问题, 且带来了比较高的性能提升. 例如: 3台服务器, 就是3倍的传输效率, 读写效率...
    细节: 横向扩展 = 加机器,  纵向扩展 = 加配置(硬件)

2.HDFS原理--架构图

namenode:1.管理整个HDFS集群 2.维护和管理元数据

SecondaryNameNode:辅助节点 1.辅助namenode管理元数据

datanode:从节点 1.维护和管理源文件  2.负责数据的读写操作 3.定时向namenode报活

Hadoop必会面试题,hadoop,hdfs,大数据

3.高可用模式:

没有SecondName ,多个namenode主备模式宕机一个就zookeeper选举切换到另一。

Hadoop必会面试题,hadoop,hdfs,大数据

4.HDFS原理--分块存储

对HDFS的分块存储机制的理解.

1. 分块存储是为了方便统一管理的, 默认的块大小为: 128MB.    细节: Hadoop2.X开始才是128MB, Hadoop1.X是: 64MB.
    2. 副本机制是为了提高容错率, 副本数越多, 容错率越高.    带来的弊端是: 磁盘利用率下降了.
    3. 实际开发中, 建议副本数为: 2 ~ 5
    4. 如果要修改block块的大小 和 默认的副本数, 可以去: Hadoop的配置文件中修改.
        路径为:
            /export/server/hadoop/etc/hadoop/hdfs-site.xml
        官方配置文档路径为:
            https://hadoop.apache.org/docs/r3.3.0
            https://hadoop.apache.org/docs/r3.3.0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

参考配置信息如下:

 <!---->
            <!--设置: 副本数-->
            <property>
                <name>dfs.replication</name>
                <value>3</value>
            </property>

            <!--设置: 每个块的默认大小-->
            <property>
                <name>dfs.blocksize</name>
                <value>134217728</value>
                <description>设置HDFS块大小,单位是b</description>
            </property>

5.HDFS原理--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

Hadoop必会面试题,hadoop,hdfs,大数据

6.HDFS原理--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的元数据.

Hadoop必会面试题,hadoop,hdfs,大数据

7.HDFS原理--三大机制详解

 三大机制:
        副本机制: 默认是3, 可以提高容错率, 但是磁盘的利用率降低.
        负载均衡: namenode尽量保证多台datanode资源使用率一致.
        心跳机制: 3秒, 630秒, 6个小时.
    副本如何存储:
        根据副本机制, 负载均衡, 机架感知原理, 网络拓扑图(寻找最近机架)进行计算, 并存储, 结论如下:
        第1副本: 优先本机, 否则就近随机.
        第2副本: 第1副本所在机架, 就近的某个机架的随机的服务器上.
        第3副本: 和第2副本同一机架的不同服务器上.
        如果不满足, 则: 随机存储.

Hadoop必会面试题,hadoop,hdfs,大数据

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

1. Client(客户端)请求namenode, 上传文件.
    2. namenode接收到客户端请求后, 会校验权限, 并告知客户端是否可以上传.
       校验: 客户端是否有写的权限, 及文件是否存在.
    3. 如果可以上传, 客户端会按照128MB(默认)对文件进行切块.
    4. Client(客户端)再次请求namenode, 第1个Block块的上传位置.
    5. namenode会根据副本机制, 负载均衡, 机架感知原理及网络拓扑图, 返回给客户端存储该Block块的DataNode列表.
        例如: node1, node2, node3
    6. Client(客户端)会先连接就近的datanode机器, 然后依次和其他的datanode进行连接, 形成: 传输管道(Pipeline)
    7. 采用数据报包(DataPacket)的形式传输数据, 每个包的大小不超过: 64KB, 并建立: 反向应答机制(ACK机制)
    8. 具体的上传动作: node1 -> node2 -> node3,  ACK反向应答机制: node3 => node2 => node1
    9. 重复上述的步骤, 直至第1个Block块上传完毕.

Hadoop必会面试题,hadoop,hdfs,大数据

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

    1. Client(客户端)请求namenode, 读取文件.
    2. namenode校验该客户端是否有读权限, 及该文件是否存在, 校验成功后, 会返回给客户端该文件的块信息.
        例如:
            block1: node1, node2, node5
            block2: node3, node6, node8
            block3: node2, node5, node6     这些地址都是鲜活的.
            ......
    3. Client(客户端)会连接上述的机器(节点), 并行的从中读取块的数据.
    4. Client(客户端)读取完毕后, 会循环namenode获取剩下所有的(或者部分的块信息), 并行读取, 直至所有数据读取完毕.
    5. Client(客户端)根据Block块编号, 把多个Block块数据合并成最终文件即可. 

Hadoop必会面试题,hadoop,hdfs,大数据

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

    安全模式是HDFS自带的有一种保护机制, 在安全模式下, 只能读, 不能写.
    进入安全模式的方式:
        1. 启动Hadoop集群的时候, 会自动进入到安全模式, 进行自检. 自检没问题后, 会自动关闭安全模式.
        2. 当活跃的节点数 < 默认的副本数时, 会强制进入到安全模式.
        3. 手动进入.
            格式:
                hdfs dfsadmin -safemode get | enter | leave     获取 | 进入 | 离开

11.HDFS原理--归档操作

背景:

HDFS适用于操作海量的大文件, 如果小文件过多, 就会占用多个Block块, 且也有多份元数据, 资源消耗比较大.
    针对于这种该情况, 我们可以用 归档包 来解决它.(归档文件.har)
概述:
    归档包类似于压缩包, 但是只有压, 没有缩, 相当于把多个文件合并成1个文件, 这样元数据就只有1份儿了.
格式:
    hadoop archive -archiveName 归档包的名字 -p 要被归档的文件名 存储归档包的路径

演示步骤:

1. 在Linux中创建 1.txt, 2.txt, 3.txt三个文件.
		echo 'hello world   1' >> 1.txt
		echo 'hello world   2' >> 2.txt
		echo 'hello world   3' >> 3.txt
2. 在HDFS中创建data目录, 然后将上述的3个文件分别上传过来.
		hadoop fs -put *.txt /data
3. 通过上述的命令, 把上述的3个txt文件 压成 归档包.
	   需求: 把/data/所有的txt文件 这三个记事本, 创建归档包, 并将归档包存储到:  /output目录下.
	   格式如下:
		 hadoop archive -archiveName myTest.har -p /data/ /output
4. 查看归档包的内容.
		[root@node1 ~]# hadoop fs -ls /output/myTest.har         -- HDFS路径默认前缀是:  hdfs://node1:8020/
		Found 4 items
		-rw-r--r--   3 root supergroup          0 2024-01-17 15:09 /output/myTest.har/_SUCCESS
		-rw-r--r--   3 root supergroup        250 2024-01-17 15:09 /output/myTest.har/_index
		-rw-r--r--   3 root supergroup         23 2024-01-17 15:09 /output/myTest.har/_masterindex
		-rw-r--r--   3 root supergroup         43 2024-01-17 15:09 /output/myTest.har/part-0

		遇到的问题: 发现, 上述的代码不能直接看到归档包 具体 归档了哪些文件, 那如何查看呢?
		解决方案: 把前缀换成归档包的前缀即可, 用什么前缀, 说明用什么规则来解析按 归档包.
			hadoop fs -ls har:///output/myTest.har

			[root@node1 ~]# hadoop fs -ls har:///output/myTest.har
			Found 3 items
			-rw-r--r--   3 root supergroup         15 2024-01-17 15:05 har:///output/myTest.har/1.txt
			-rw-r--r--   3 root supergroup         14 2024-01-17 15:05 har:///output/myTest.har/2.txt
			-rw-r--r--   3 root supergroup         14 2024-01-17 15:05 har:///output/myTest.har/3.txt
			[root@node1 ~]#
			[root@node1 ~]# hadoop fs -ls har://hdfs-node1:8020/output/myTest.har
			Found 3 items
			-rw-r--r--   3 root supergroup         15 2024-01-17 15:05 har://hdfs-node1:8020/output/myTest.har/1.txt
			-rw-r--r--   3 root supergroup         14 2024-01-17 15:05 har://hdfs-node1:8020/output/myTest.har/2.txt
			-rw-r--r--   3 root supergroup         14 2024-01-17 15:05 har://hdfs-node1:8020/output/myTest.har/3.txt

5. 从 /data目录中, 删除 1.txt, 2.txt, 3.txt这三个文件. 然后解压归档包, 获取到源文件.
	   hadoop fs -cp /output/myTest.har/ /data              实现不了想要的效果, 只是把 归档包下所有的内容拷贝过去了.
	   hadoop fs -cp har:///output/myTest.har/* /data       这个才是我们要的语句.

细节:
	1. 归档包名的后缀必须是: *.har
	2. 存储归档包的路径必须是: hdfs文件的路径
	3. 归档包路径的前缀要写成:   har://hdfs-node1:8020/
	4. 实际开发中, 大多数公司可以每年, 每季度, 每月, 甚至是每周归档一次, 既可以降低元数据, 也可以提高磁盘利用率(否则1个小文件就要占1个Block块)
	   当我们需要使用源文件的时候, 可以很方便的从归档包中提取出我们要的内容. 

12.HDFS原理--垃圾桶机制

Hadoop集群, 默认没有开启垃圾桶机制, 每次删除文件, 都是永久删除的, 找不回来了.
    这样做比较危险, 我们可以开启垃圾桶机制, 这样删除数据的时候, 就会自动放到垃圾桶中, 保存一定的时间, 超出时间后, 才会自动删除.

在hdfs文件系统中新建一个文件夹/user/用户/.trash/

配置垃圾桶的步骤:

1. 去 /export/server/hadoop/etc/hadoop 的core-site.xml文件中, 加入如下的内容:
		<!-- 如下的时间单位是: 分钟, 即: 1440分钟 = 24小时 -->
		<property>
			<name>fs.trash.interval</name>
			<value>1440</value>
		</property>
	2. 注意: 三台虚拟机都要去修改上述的 core-site.xml文件.
		方式1: 逐个修改.
		方式2: 远程分发, 即: 把node1中修改后的文件, 直接拷贝给node2, node3即可.
			格式:
				scp 数据源文件路径 目的地主机名或者ip:要存储该文件的目录路径
			示例:
				scp core-site.xml node2:/export/server/hadoop/etc/hadoop
				scp core-site.xml node3:$PWD        如果数据源文件所在目录 和 另一台机器的存储目录一致, 可以写成: $PWD
	3. 三台虚拟机都修改完毕后, 记得重启: Hadoop集群.
		stop-all.sh
		start-all.sh

开启垃圾桶机制之后, 代码写法如下:

1. 删除某个文件, 例如:
		[root@node1 hadoop]# hadoop fs -rm /data/2.txt
		2024-01-17 16:03:29,657 INFO fs.TrashPolicyDefault: Moved: 'hdfs://node1.itcast.cn:8020/data/2.txt' to trash
		at: hdfs://node1.itcast.cn:8020/user/root/.Trash/Current/data/2.txt
	2. 现在就可以从垃圾桶中恢复数据了.
		[root@node1 hadoop]# hadoop fs -mv /user/root/.Trash/Current/data/2.txt /data
	3. 如果明确要删除某个文件, 且不走垃圾桶, 删除方式如下.
		[root@node1 hadoop]# hadoop fs -rm -skipTrash /data/1.txt       -- skipTrash意思是: 跳过垃圾桶

3.Hadoop之MapReduce初体验

Hadoop框架提供了MapReduce的测试包, 具体如下

Hadoop必会面试题,hadoop,hdfs,大数据

如何使用上述的测试包, 计算圆周率.

# 建议cd先进入到Hadoop提供的MR的测试包所在的路径下:
cd /export/server/hadoop/share/hadoop/mapreduce

# 执行MR包(MR任务的)格式:                     
yarn jar hadoop-mapreduce-examples-3.3.0.jar pi 2 50

# 上述格式解释:
yarn jar                                固定格式, 说明要把某个jar包交给yarn调度执行.
hadoop-mapreduce-examples-3.3.0.jar        Hadoop提供的MR任务的测试包
pi                                        要执行的任务名
2                                        表示MapTask的任务数, 即: 几个线程来做这个事儿.
50                                        投点数, 越大, 计算结果越精准.

# 扩展: MR计算圆周率底层用的是 蒙特卡洛算法.

Hadoop必会面试题,hadoop,hdfs,大数据文章来源地址https://www.toymoban.com/news/detail-842872.html

到了这里,关于Hadoop必会面试题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 0201hdfs集群部署-hadoop-大数据学习

    下面我们配置下单namenode节点hadoop集群,使用vmware虚拟机环境搭建。vmware虚拟机的配置,在下面链接2有,或者自行查阅文档。hadoop安装包可到官网下载,当前相关软件环境如下: 软件 版本 说明 hadoop 3.3.4 jar包 vmware 15.5 虚拟机 centos 7.6 服务器操作系统 xshell 6 远程连接 jdk 1.8

    2024年02月11日
    浏览(34)
  • 大数据技术之Hadoop(HDFS)——超详细

    1.1 HDFS产出背景及定义 1)HDFS产生背景 先给大家介绍一下什么叫HDFS,我们生活在信息爆炸的时代,随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这

    2024年02月03日
    浏览(44)
  • HDFS 跨集群数据同步(hive,hadoop)

    两个不同的HDFS 集群数据迁移( A集群的数据 - B 集群) 采用的是 SHELL 脚本  按表进行; 日期分区进行; #!/bin/bash ##################### #创建人:DZH #创建日期: 2020-04 #内容: 数据迁移 ##################### ##################################### [ \\\"$#\\\" -ne 0 ] FILE=$1 path=$(cd `dirname $0`; pwd) ############## 获取执

    2024年04月27日
    浏览(36)
  • Hadoop HDFS:海量数据的存储解决方案

    在大数据时代,数据的存储与处理成为了业界面临的一大挑战。Hadoop的分布式文件系统(Hadoop Distributed File System,简称HDFS)作为一个高可靠性、高扩展性的文件系统,提供了处理海量数据的有效解决方案。本文将深入探讨HDFS的设计原理、架构组成、核心功能以及实际应用场

    2024年04月23日
    浏览(31)
  • hadoop之hdfs生产数据块损坏修复方法

    1、手动修复 检查数据块丢失情况 hdfs fsck / 修复指定路径的hdfs文件,尝试多次 hdfs debug recoverLease -path 文件位置 -retries 重复次数 删除所有损坏的块的数据文件 hdfs fsck / -delete 2、自动修复 hdfs会自动修复损坏的数据块,当数据块损坏后, DN节点执行directoryscan(datanode进行内村和

    2023年04月11日
    浏览(49)
  • 大数据面试题集锦-Hadoop面试题(一)

    目录 1、集群的最主要瓶颈 2、Hadoop运行模式 3、Hadoop生态圈的组件并做简要描述 4、解释“hadoop”和“hadoop 生态系统”两个概念 5、请列出正常工作的Hadoop集群中Hadoop都分别需要启动哪些进程,它们的作用分别是什么? 6、基于 Hadoop 生态系统对比传统数据仓库有何优势? 7、如

    2023年04月09日
    浏览(32)
  • 0202hdfs的shell操作-hadoop-大数据学习

    以下命令执行默认配置了hadoop的环境变量,且使用新命令。 一键启停脚本 独立进程启停 2.1 HDFS文件系统基本信息 HDFS作为分布式存储的文件系统,有其对数据的路径表达式。如果熟悉Linux文件系统,可以对比学习。 HDFS同Linux系统一样,均是以/作为根目录的组织形式 如何区分

    2024年02月10日
    浏览(39)
  • Hadoop大数据技术-通过shell命令访问HDFS

    HDFS shell大致可以分为操作命令、管理命令、其他命令三类。 注意:当命令以“$”开头时,当前用户为普通用户;以“#”开头时,当前用户为root用户。 操作命令是以“ hdfs dfs ”开头的命令,用户可以通过执行这些命令,完成对文件的查找、上传、删除等操作。 [-p]:表示如

    2023年04月11日
    浏览(32)
  • 大数据技术之Hadoop:使用命令操作HDFS(四)

    目录 一、创建文件夹 二、查看指定目录下的内容 三、上传文件到HDFS指定目录下 四、查看HDFS文件内容 五、下载HDFS文件 六、拷贝HDFS文件 七、HDFS数据移动操作 八、HDFS数据删除操作 九、HDFS的其他命令 十、hdfs web查看目录 十一、HDFS客户端工具 11.1 下载插件 11.2 本地安装Had

    2024年02月09日
    浏览(38)
  • 大数据技术之Hadoop:HDFS集群安装篇(三)

    目录 分布式文件系统HDFS安装篇 一、为什么海量数据需要分布式存储 二、 分布式的基础架构分析 三、 HDFS的基础架构 四 HDFS集群环境部署 4.1 下载安装包 4.2 集群规划 4.3 上传解压 4.4 配置HDFS集群 4.5 准备数据目录 4.6 分发hadoop到其他服务器 4.7 配置环境变量 4.8 为普通用户授

    2024年02月14日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包