1、Hadoop是什么?

答: hadoop是一个由Apache基金会所发布的用于大规模集群上的分布式系统并行编程基础框架。目前已经是大数据领域最流行的开发架构。并且已经从HDFS、MapReduce、Hbase三大核心组件成长为一个具有60多个组件构成的庞大生态,可以满足大数据采集、存储、开发、分析、算法、建模等方方面面

2、hadoop核心组件是什么?

答:HDFS:分布式文件系统,,是一个高度容错性的系统,能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。
Yarn:Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,为集群在利用率、资源统一管理和数据共享等方面提供支持
MapReduce:分布式离线并行框架,在离线的时候可以对项目进行分布式计算,在项目中时候用MapReduce对离线数据进行清洗

3、Hadoop配置文件以及简单的Hadoop集群部署?

答:(1)配置文件:
core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
hadoop-env.sh、yarn-env.sh、mapred-env.sh、slaves
(2)简单的集群搭建过程:
JDK安装
配置SSH免密钥
配置hadoop核心文件
格式化namenode

4、HDFS读写流程?

读流程:
1.client客户端调用DistributedFileSystem.create()方法。
2.底层调用ClientProtical.create()方法,并创建文件的操作记录到editlog中,返回一个HDFSDateOutPutStream对象,底层时对DFSOutStream进行包装。
3.nameNode收到数据元(默认为128M),NameNode返回一个LocalBlock对象,建立数据流管道写数据块
4.建立管道后,HDFS客户端可以向管道流内写数据,它将数据切为一个个packet,然后按dataNode就近原则和,忙与不忙进行发送,dataNode。
5.dataNode成功接受后,通过ACK验证后向nameNode汇报,nameNode会更新数据节点的对应关系,以及I am alive
6.完成操作后,客户端关闭输出流
写流程:
1.Client调用FileSystem.create(filePath)方法,去与Namenode进行rpc通信, check该路径的文件
是否存在以及有没有权限创建该文件 ,假如ok,就创建一个新文件,但是并不关联任何block,返回一
个FSDataOutputStream对象;(假如not ok,就返回错误信息,所以写代码要try-catch)
2.Client调用FSDataOutputStream对象的write()方法,会将第一个块写入第一个Datanode,第一个
Datanode写完传给第二个节点,第二个写完传给第三节点,当第三个节点写完返回一个ack packet给
第二个节点,第二个返回一个ack packet给第一个节点,第一个节点返回ack packet给
FSDataOutputStream对象,意思标识第一个块写完,副本数为3;然后剩余的块依次这样写;
3.当向文件写入数据完成后,Client调用FSDataOutputStream.close()方法,关闭输出流,flush缓存
区的数据包;
4.再调用FileSystem.complete()方法,告诉Namenode节点写入成功。

5、MapReduce切片机制是什么样的?

答:1、简单地按照文件的内容长度进行切片
2、切片大小,默认等于Block大小
3、切片时不考虑数据集整体,而是逐个对每一个文件单独切片

6、Yarn的Job提交流程?

答:1.客户端向ResourceManagement 提交 运行的请求 (hadoop jar xxxx.jar)
2.ResourceManager进行检查,没有问题的时候,向客户端返回一个共享资源的路径以及JobId
3.客户端向HDFS提交资源,将共享资源放入共享路径下:(/tmp/hadoop-yarn/staging-dir/xxxxxxxx)
4.客户端向ResourceManager反馈共享资源放置完毕,进行job的正式提交
5.ResourceManager为这个job分配一个节点,并在这个节点上启动MRAppMaster任务
6.ResourceManager到对应的节点上去启动container容器用于装载MRAppMaster
7.MRAppMaster对job进行初始化,生成一个job工作簿,job的工作簿记录着maptask和reduce的运行进度和状态
8.MRAppMaster向ResourceManager申请maptask和reducetask的运行的资源,先发maptask然后发reducetask
9.ResourceManager向MRAppMaster返回maptask和reduce的资源节点

7、Yarn的默认调度器和区别?

答:主要分三类调度器:
FIFO调度器:先进先出,同一个队列只有一个任务在执行
容量调度器(Capacity Scheduler):多队列,每个队列内部先进先出,同一时间队列中只有一个任务在执行。队列并行度为队列个数
公平调度器(Fair Sceduler):多队列,每个队列内部按照缺额大小分配资源启动任务,同一时间队列中有多个任务执行。队列并行度大于等于队列的个数

8、LZO压缩?

答:Hadoop默认不支持LZO压缩,如果需要支持LZO压缩,需要添加jar包,并在Hadoop的core-site.xml文件中添加相关压缩配置

9、Hadoop参数调优?

答:1.在hdfs-site.xml文件中配置多目录。提前配置好,需要更改目录需要重新启动集群
2.NameNode有一个工作线程池,用来处理不同DataNode的并发心跳以及客户端并发的元数据操作
3.编写日志存储路径dfs.namenode.edits.dir设置与镜像文件存储路径dfs.namenode.name.dir 尽量分开,达到最低写入延迟
4.服务器上Yarn可以使用的物理机,默认为8192MB,如果节点内存不足8G,则通过 yarn.nodemanager.resource.memory-mb来减少这个值
5.单个任务可申请最多的物理内存量,通过 yarn.scheduler.maximum-allocation-mb 默认为8192

10、Hadoop宕机?

答:1.如果MR造成系统宕机,要控制Yarn同时运行的任务数,和每个任务申请最大的内存。调优参数yarn-scheduler.maxinum-allocation-ab,默内存为8192MB
2.写入文件过量造成NameNode宕机,调高kafka的存储大小,控制kafka到HDFS的写入速度。高峰期的时候用kafka进行缓存,高峰期过去数据同步自动跟上