Hadoop高频面试题

1 HDFS的存储机制(读写流程)?
HDFS存储机制,包括HDFS的写入过程和读取过程两个部分

 1:客户端向namenode请求上传文件,namenode检查目标文件是否已存在,父目录是否存在。 2:namenode返回是否可以上传。、

3:客户端请求第一个 block上传到哪几个datanode服务器上。

4:namenode返回3个datanode节点,分别为dn1、dn2、dn3。

5:客户端请求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步)

 

1:客户端向namenode请求下载文件,namenode通过查询元数据,找到文件块所在的datanode地址。
2:挑选一台datanode(就近原则,然后随机)服务器,请求读取数据。
3:datanode开始传输数据给客户端(从磁盘里面读取数据放入流,以packet为单位来做校验)。
4:客户端以packet为单位接收,先在本地缓存,然后写入目标文件。
2 :HDFS中大量小文件带来的问题以及解决的方案
问题:hadoop中目录,文件和块都会以对象的形式保存在namenode的内存中, 大概每个对象会占用150bytes. 小文件数
量多会大量占用namenode的内存; 使namenode读取元数据速度变慢, 启动时间延长; 还因为占用内存过大, 导致
gc时间增加等.
解决办法:
两个角度, 一是从根源解决小文件的产生, 二是解决不了就选择合并.
从数据来源入手, 如每小时抽取一次改为每天抽取一次等方法来积累数据量.
如果小文件无可避免, 一般就采用合并的方式解决. 可以写一个MR任务读取某个目录下的所有小文件, 并重写为一
个大文件.
3: HDFS三个核心组件时什么,分别有什么作用
1-NameNode. 集群的核心, 是整个文件系统的管理节点. 维护着
a文件系统的文件目录结构和元数据信息
b文件与数据块列表的对应关系
2-DataNode. 存放具体数据块的节点, 主要负责数据的读写, 定期向NameNode发送心跳
3-SecondaryNameNode. 辅助节点, 同步NameNode中的元数据信息, 辅助NameNode对fsimage和editsLog进
行合并
4 fsimage和editlogs是做什么用的?
fsimage文件存储的是Hadoop的元数据文件, 如果namenode发生故障, 最近的fsimage文件会被载入到内存中, 用 来重构元数据的最近状态, 再从相关点开始向前执行edit logs文件中记录的每个务.
文件系统客户端执行写操作时, 这些事务会首先记录到日志文件中.
在namenode运行期间, 客户端对hdfs的写操作都保存到edit文件中, 久而久之就会造成edit文件变得很大, 这对 namenode的运行没有影响, 但是如果namenode重启, 它会将fsimage中的内容映射到内存中, 然后再一条一条执 行edit文件中的操作, 所以日志文件太大会导致重启速度很慢. 所以在namenode运行的时候就要将edit logs和 fsimage定期合并
5: namenode的工作机制
第一阶段:NameNode启动
1 第一次启动NameNode格式化后,创建Fsimage和Edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。
2 客户端对元数据进行增删改的请求。
3 NameNode记录操作日志,更新滚动日志。
4 NameNode在内存中对元数据进行增删改。
第二阶段:Secondary NameNode工作
1 Secondary NameNode询问NameNode是否需要CheckPoint。直接带回NameNode是否检查结果。
2 Secondary NameNode请求执行CheckPoint。
3 NameNode滚动正在写的Edits日志。
4 将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode。
5 Secondary NameNode加载编辑日志和镜像文件到内存,并合并。
  6 生成新的镜像文件fsimage.chkpoint。
7 拷贝fsimage.chkpoint到NameNode。
8NameNode将fsimage.chkpoint重新命名成fsimage。
6: datenode工作机制
1 一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据 块的长度,块数据的校验和,以及时间戳。
2 DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息。
3 心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某 个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。
4 集群运行中可以安全加入和退出一些机器。
7: Hadoop中需要哪些配置文件,其作用是什么?
1、core-site.xml
fs.defaultFS:hdfs://cluster1(域名),这里的值指的是默认的HDFS路径 。
hadoop.tmp.dir:/export/data/hadoop_tmp,这里的路径默认是NameNode、DataNode、secondaryNamenode等 存放数据的公共目录。用户也可以自己单独指定这三类节点的目录。
ha.zookeeper.quorum:hadoop101:2181,hadoop102:2181,hadoop103:2181,这里是ZooKeeper集群的地址和端口。注意,数量一定是奇数,且不少于三个节点 。
2、hadoop-env.sh
只需设置jdk的安装路径,如:export JAVA_HOME=/usr/local/jdk。
3、hdfs-site.xml
dfs.replication:他决定着系统里面的文件块的数据备份个数,默认为3个。
dfs.data.dir:datanode节点存储在文件系统的目录 。
dfs.name.dir:是namenode节点存储hadoop文件系统信息的本地系统路径 。
4、mapred-site.xml
mapreduce.framework.name: yarn指定mr运行在yarn上。
5、yarn-site.xml
配置yarn.nodemanager.aux-services以及日志聚集等功能
6、slaves、master
配置从节点列表、主节点
8: 列出正常工作的hadoop集群中hadoop都需要启动哪些进程,他们的作用分别是什么?
–namenode =>HDFS的守护进程,负责维护整个文件系统,存储着整个文件系统的元数据信息,有image+edit log
namenode不会持久化存储这些数据,而是在启动时重建这些数据。
–datanode =>是具体文件系统的工作节点,当我们需要某个数据,namenode告诉我们去哪里找,就直接和那个 DataNode对应的服务器的后台进程进行通信,由DataNode进行数据的检索,然后进行具体的读/写操作
–secondarynamenode =>一个冗余的守护进程,相当于一个namenode的元数据的备份机制,定期的更新,和 namenode进行通信,将namenode上的image和edits进行合并,可以作为namenode的备份使用
–resourcemanager =>是yarn平台的守护进程,负责所有资源的分配与调度,client的请求由此负责,监控 nodemanager
–nodemanager => 是单个节点的资源管理,执行来自resourcemanager的具体任务和命令
9 : Linux中的块大小为4KB, 为什么HDFS中块大小为128MB?
块是存储在文件系统中的数据的最小单元. 如果采用4kb的块大小来存放存储在Hadoop中的数据, 就会需要大量的 块, 大大增加了寻找块的时间, 降低了读写效率.
并且, 一个map或者一个reduce都是以一个块为单位处理, 如果块很小, mapreduce任务数就会很多, 任务之间的 切换开销变大, 效率降低
10:NameNode与SecondaryNameNode 的区别与联系?
1 机制流程同上;
2 区别
    1 NameNode负责管理整个文件系统的元数据,以及每一个路径(文件)所对应的数据块信息。
    2 SecondaryNameNode主要用于定期合并命名空间镜像和命名空间镜像的编辑日志。
    3 联系:
               1 SecondaryNameNode中保存了一份和namenode一致的镜像文件(fsimage)和编辑                    日志(edits)
               2 在主namenode发生故障时(假设没有及时备份数据),可以从SecondaryNameNode                    恢复数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值