您的位置:首页 > 大数据 > Hadoop

大数据面试之Hadoop

2019-12-18 11:35 781 查看

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

解释Hadoop三种运行模式,它们各自的特点?

  1. 单机版:所有应用程序运行于同一个JVM中,HDFS为本地文件系统
  2. 伪分布式:所有的程序运行于同一台机器独立的JVM中
  3. 分布式:不同程序运行于不同节点中,通常Master运行NN和JT,slave机器运行DN和TT

Hadoop项目主要包括那四个模块?

Hadoop Common:为其他Hadoop模块提供基础设施

Hadoop DFS:一个高可靠、高吞吐量的分布式文件系统

Hadoop MapReduce:一个分布式离线并进行计算框架

Hadoop YARN:新的MapReduce框架,任务调度与资源管理

hdfs-site.xml和hadoop-env.sh配置什么用的?

hdfs-site.xml:配置hdfs文件

Hadoop-env.sh:配置Hadoop环境变量

HDFS的设计特点?

  1. 大数据文件:非常适合储存T级以上的大文件或者一堆大数据文件
  2. 文件分块存储:HDFS会将一个完整的大文件平均分块存储到不同的计算机上
  3. 流式数据访问:一次写入多次读写
  4. 廉价硬件:HDFS可以应用在普通pc机上
  5. 硬件故障

解释什么是NameNode、SecondaryNameNode、DataNode?他们之间有什么联系?

NameNode:NameNode管理文件系统的文件命名空间维护着文件系统树及整棵树内所有的文件和目录

SecondaryNameNode:辅助NameNode节点。定期合并fsimage和edits日志

DataNode:数据节点,用于存储Block文件

  •  

解释说明fsimage和fsedits文件怎么合并的?

fsimage保存了最新的元数据检查点。

edits保存自最新检查点后的命名空间的变化。

从最新检查点后,hadoop将对每个文件的操作都保存在edits中,为避免edits不断增大,secondary  namenode就会周期性合并fsimage和edits成新的fsimage,edits再记录新的变化。

leader工作流程?

  1. 恢复数据
  2. 维持Learner的心跳,接收Learner请求并判断请求消息类型
  3. 根据不同的消息类型进行不同的处理

follower工作流程?

  1. 向learner发送请求
  2. 接收learner消息并进行处理
  3. 接收client的请求,如果是写请求,发送给learner进行投票
  4. 返回client结果

副本的放置,名称节点如何选择那个数据节点来保存数据?

  1. Hadoop的策略是在与客户端相同的节点上放置第一个副本
  2. 第二个副本放置在与第一个副本不同的随机选择的机架上。
  3. 第三个副本放置在与第二个相同的机架上,但放置的节点不同。
  4. 更多的副本被放置在集群中的随机节点上,系统会尽量避免相同机架上放置太多副本

HDFS常用的数据压缩算法?

bzip2、gzip、lzo、snappy

其中lzo、snappy需要操作系统安装native库

MR五个阶段:

  1. input阶段:获取输入数据进行分片作为map输出

1.1访问datanode中的数据反序列化,数据并进行切片,为每个切片分配map任务

1.2并发的执行这些任务

1.3通过recordReader读取切片的每一条记录,偏移值作为map的key,记录行作为map 的value,当做map方法的参数

  1. Map阶段:对每条数据解析成一条或多条记录
  2. Shuffle阶段:对中间数据控制,作为reduce输出

3.1map数据会先输出到缓冲区,当达到80%会溢写生成多个小文件

3.2溢写过程中会经历分区、排序的过程

3.3当最后一个文件溢写完成后,区与区文件就会进行合并、排序

3.4经过分区排序的大文件会按照不同的分区拷贝到相应的reduce中处理

  1. Reduce阶段:对相同key数据进行合并
  2. Output阶段:按照输出文件格式输出到指定目录
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Snappy HDFS MapReduce Hadoop