大数据——面试题总结

总结中...

https://juejin.im/post/5b5ac91051882519a62f72e5
https://zhuanlan.zhihu.com/p/35591010


  1. HDFS上传文件和读文件过程
    a. client向NameNode 发送数据请求
    b. NameNode 向client 返回可以存储的列表 host1 host2…
    c. Client 将文件 按照128M分块(Block 默认大小为128M)
    d. Client 向Host1 发送Block1;发送过程是流式写入。
    Host1同时将Block1发送Host2(DataNode),
    Host2同时将Block1发送到Host3(DataNode)
    e. Host1(DataNode)向Client发送通知,表示传完
    Host1,2,3向NameNode报告存储完成。
    f. Client 向NameNode发送消息,说写完了Block*

  1. HDFS在上传文件的时候,如果其中一个块突然损坏了怎么办?

没找到合适答案?
其中一个块坏了,只要有其它块存在,会自动检测还原。


  1. NameNode的作用
    3.1 管理命名空间
    3.2 管理元数据
    3.3 管理Block副本策略:默认为3
    3.4 处理客户端读写请求 为DataNode分配任务

  1. DataNode 的作用
    4.1 Slave 工作节点
    4.2 存储Block 和 数据校验和
    4.3 执行客户端发送的读写操作
    4.4 通过心跳机制定期(默认3秒)向 NameNode汇报运行状态和Block列表信息
    4.5 集群启动时,DataNode向NameNode提供Block信息

5.NameNode在启动的时候会做哪些操作?
答:
加载fsimage ,在内存中构建整个namespace,同时将每个BlockID 写入BlockMap中,此时的BlockMap 对应的datanodes列表暂时为空,当Fsimage加载完毕后,整个HDFS的目录结构在内存中就已经初始化完毕。
缺少的DataNodes信息需要从datanode的blockReport中获取,所以加载fsimage完毕后,namenode进程进入rpc等待状态,等待所有的datanodes发送blockReports。


6.Hadoop提交作业流程
答:
第一步:
client中,客户端提交一个mr的jar包给JobClient
(提交方式:hadoop jar)

第二步:
JobClient持有RM的一个代理对象,它向RM发送一个RPC(Remote Procedure Call)请求,告诉RM作业开始,然后RM返回一个 JobID 和一个存放jar包的路径给client

第三步:
Client将得到的jar包的路径作为前缀,JobID作为后缀(path = hdfs上的地址 + jobId) 拼接成一个新的hdfs的路径,然后Client通过FileSystem向 hdfs中存放jar包,默认存放10份(NameNode和DateNode等操作)

第四步:
开始提交任务,Client将作业的描述信息(JobID和拼接后的存放jar包的路径等)RPC返回给RM

第五步:
RM进行初始化任务,然后放到一个调度器中

第六步:
RM读取HDFS上的要处理的文件,开始计算输入分片,每一个分片对应一个MapperTask,根据数据量确定起多少个mapper,多少个reducer

第七步:
NodeManager 通过心跳机制向ResourceManager领取任务(任务的描述信息)

第八步:
领取到任务的NodeManager去Hdfs上下载jar包,配置文件等

第九步:
NodeManager启动相应的子进程yarnchild,运行mapreduce,运行maptask或者reducetask

第十步:
map从hdfs中读取数据,然后传给reduce,reduce将输出的数据给回hdfs

在这里插入图片描述

Innodb事务怎么实现的


1.HDFS 高可用实现机制

  1. Active NN与Standby NN的主备切换
  2. 利用QJM实现元数据高可用
    QJM机制:只要保证Quorum(法定人数)数量的操作成功,就认为这是一次最终成功的操作
    QJM共享存储系统
  3.   利用ZooKeeper实现Active节点选举
    

2.请描述TDH平台中在Yarn上可以使用哪几种调度策略,并分别阐述各调度策略的特点。

  1. 先进先出调度器
    将所有任务放入一个队列,先进队列的先获得资源,排在后面的任务只有等待
  2. 容量调度器
    核心思想:提前做预算,在预算指导下分享集群资源
    在这里插入图片描述
  3. 公平调度器
    在这里插入图片描述

3. BulkLoad 数据入库

含义:由于HBase中数据以HFile文件的形式存储于HDFS,所以我们绕过HBase API,直接将 数据加工成HFile文件,再将其加载到HBase中,从而完成大规模数据的快速入库

HBase BulkLoad的基本流程 :

  1. 提取:从数据源中提取数据
    — 对于MySQL,运行mysqldump命令导出数据

  2. 转换:利用MapReduce,将数据转换为HFile文件
    — 对于TSV或CSV文件,使用HBase ImportTsv工具将其转换成HFile文件 -每个输出文件夹中的每个区域都会创建一个HFile文件
    — HDFS中的可用磁盘空间至少为原始输入文件的两倍。例如,对于100GB的mysqldump导出文件, HDFS中至少预留不少于200GB的磁盘空间,可以在任务结束后删除原始输入文件

  3. 加载:将HFile文件加载到HBase
    — 利用HBase CompleteBulkLoad工具,将HFile文件移动到HBase表的相应目录中,完成加载
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述


猜你喜欢

转载自blog.csdn.net/shaoye_csdn1/article/details/90636528