Hadoop 面试知识点整理

Hadoop 面试知识点整理

整理来源

  • https://www.cnblogs.com/yunkaifa/p/3538154.html
  • http://www.aboutyun.com/thread-5337-1-1.html

一句话知识点

  1. 负责 HDFS 数据存储:Datanode
  2. HDfS 中的 block 默认保存几份:默认3份
  3. 通常与 NameNode 在一个节点启动:Jobtracker
  4. HDFS 默认 Block Size:64MB,2.2后默认调整为 128MB
  5. 集群的最主要瓶颈:磁盘 IO 集群瓶颈为什么是磁盘io
  6. SecondaryNameNode:目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间
  7. 可以作为集群的管理软件:Puppet/Pdsh/Zookeeper 什么是Zookeeper
  8. 配置机架感知:1. 如果一个机架出问题,不会影响数据读写 2. 写入数据的时候会写到不同机架的 DataNode 中 3. MapReduce 会根据机架获取离自己比较近的网络数据 hadoop机架感知
  9. Hadoop运行模式:单机版/伪分布式/分布式(Standalone, Pseudo-distribution, Fully-distribution)
  10. Cloudera提供安装 CDH 的方法:Cloudera manager/Tarball/Yum/Rpm Hadoop CDH四种安装方式总结
  11. Block Size 是可以修改的
  12. 如果 NameNode 意外终止,SecondaryNameNode是帮助恢复,而不是替代 SecondaryNameNode恢复Namenode
  13. DataNode 不通过长连接与 NameNode 保持通信
  14. Slave 节点要存储数据,不是磁盘越大越好;因为一旦 slave 节点宕机,数据恢复是一个难题
  15. Hadoop 默认调度器策略为 FIFO Hadoop集群三种作业调度算法
  16. NameNode 在处理 client的每次读写请求时,不需要从磁盘读取 metadata,因为所有数据都在内存中,硬盘上的只是序列化的结果,只有每次 namenode 启动的时候才会读取。

master/slave

hadoop的集群是基于master/slave模式,namenode和jobtracker属于master,datanode和tasktracker属于slave,master只有一个,而slave有多个

SecondaryNameNode

SecondaryNameNode内存需求和NameNode在一个数量级上,所以通常secondary NameNode(运行在单独的物理机器上)和NameNode运行在不同的机器上。

JobTracker/TaskTracker

JobTracker 对应于 NameNode
TaskTracker 对应于 DataNode
DataNode 和NameNode 是针对数据存放来而言的
JobTracker和TaskTracker是对于MapReduce执行而言的

MR主要概念一:JobClient

JobClient会在用户端通过JobClient类将应用已经配置参数打包成jar文件存储到hdfs,
并把路径提交到Jobtracker,然后由JobTracker创建每一个Task(即MapTask和ReduceTask)
并将它们分发到各个TaskTracker服务中去执行

MR主要概念二:JobTracker

JobTracker是一个master服务,软件启动之后JobTracker接收Job,负责调度Job的每一个子任务task运行于TaskTracker上,
并监控它们,如果发现有失败的task就重新运行它。一般情况应该把JobTracker部署在单独的机器上。

JobTracker三:TaskTracker

TaskTracker是运行在多个节点上的slaver服务。TaskTracker主动与JobTracker通信,接收作业,并负责直接执行每一个任务。
TaskTracker都需要运行在HDFS的DataNode上

Client 端上传文件

  • Client向NameNode发起文件写入的请求。
  • NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。
  • Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。

Ganglia Nagios 集群监控告警软件

  • Ganglia是伯克利开发的一个集群监控软件。可以监视和显示集群中的节点的各种状态信息
  • Nagios,就是一款精于预警、通知的软件。通过将Ganglia和Nagios组合起来,把Ganglia采集的数据作为Nagios的数据源

Hadoop 配置文件

Hadoop的基础配置文件是hadoop-default.xml,默认建立一个Job的时候会建立Job的Config,Config首先读入hadoop-default.xml的配置,然后再读入hadoop-site.xml的配置(这个文件初始的时候配置为空),hadoop-site.xml中主要配置需要覆盖的hadoop-default.xml的系统级配置。

关于随机读写

HDFS:只支持随机读
HBase/Lucene:支持随机读写

  • HBase提供随机读写,来解决Hadoop不能处理的问题。HBase自底层设计开始即聚焦于各种可伸缩性问题:表可以很“高”,有数十亿个数据行;也可以很“宽”,有数百万个列;水平分区并在上千个普通商用机节点上自动复制。表的模式是物理存储的直接反映,使系统有可能提高高效的数据结构的序列化、存储和检索。

文件写入 Client/nn/dn 关系

HDFS体系结构简介及优缺点

  • Client向NameNode发起文件写入的请求。
  • NameNode根据文件大小和文件块配置情况,返回给Client它所管理部分DataNode的信息。
  • Client将文件划分为多个Block,根据DataNode的地址信息,按顺序写入到每一个DataNode块中。

文件读取 client/nn/dn 关系

NameNode、DataNode和Client三者之间协作关系

  • Client向NameNode发起文件读取的请求。
  • NameNode返回文件存储的DataNode的信息。
  • Client读取文件信息。

Block 位置信息

DataNode是文件存储的基本单元,它将Block存储在本地文件系统中,保存了Block的Meta-data,同时周期性地将所有存在的Block信息发送给NameNode。

hadoop dfsadmin -report

可以快速定位出哪些节点down掉了,HDFS的容量以及使用了多少,以及每个节点的硬盘使用情况。

Namenode 单点问题

Hadoop中Namenode单点故障的解决方案

map槽(map slot)

map slot 只是一个逻辑值 ( org.apache.hadoop.mapred.TaskTracker.TaskLauncher.numFreeSlots ),而不是对应着一个线程或者进程
slot是线程还是进程讨论

input split 是不是 block?

InputFormat的数据划分、Split调度、数据读取三个问题的浅析

集群内存设置

hadoop为各个守护进程(namenode,secondarynamenode,jobtracker,datanode,tasktracker)统一分配的内存在hadoop-env.sh中设置,参数为HADOOP_HEAPSIZE,默认为1000M。
hadoop集群内存设置

ClusterID

ClusterID用于标识集群中所有的节点。当格式化一个Namenode,需要提供这个标识符或者自动生成。这个ID可以被用来格式化加入集群的其他Namenode。
hadoop集群添加namenode的步骤及常识

你可能感兴趣的:(Hadoop 面试知识点整理)