1、HDFS:
1.HDFS为什么不适合存储大量小文件?
答:1.大量文件的元数据占用NameNode大量内存空间
2.磁盘寻道时间超过读取时间
--------------------------------------------------------------------------------------------------------------------------------------------
2.HDFS 何时离开安全模式?
答:ActiveNameNode启动时HDFS进入安全模式只读,datanode主动汇报可用block的可用情况
即上报率=可用block数量/namenode元数据记录的block数>=99.9%时离开安全模式
--------------------------------------------------------------------------------------------------------------------------------------------
何时触发安全模式?
1.namenode磁盘不够;2.DataNode无法启动;3.namenode重启;4.block上报率低阈值;5.日至报错;6.强制关机
--------------------------------------------------------------------------------------------------------------------------------------------
3.ActiveNN与standbyNN的切换?
答:QJM机制实现最终一致,允许延迟,journalnode(2N+1)只要N+1个写入成功即可,他写edits编辑日志
文件,activeNN挂掉standbyNN状态变为active
--------------------------------------------------------------------------------------------------------------------------------------------
4.HDFS写文件过程?
答:1.客户端请求上传文件,输入命令;
2.检查HDFS目录,允许上传;
3.客户端将文件切块block并请求namenode;
4.namenode返回datanode信息;
5.客户端与datanode建立传输,写成功后通知namenode;/先写数据再写日志
6.更新edits编辑日志(立即)和fsimage文件(定期)写入namenode,同时写入journalnode,最后写入内存(最新);
7.后面standbyNN与activeNN定期同步。
--------------------------------------------------------------------------------------------------------------------------------------------
5.HDFS优缺点?
优点:高可用(nameNode HA),高容错(冗余多副本),高扩展(10k),海量数据,成本低
缺点:大量小文件不可存,不支持并发写入,不支持低延时,不支持随机写
--------------------------------------------------------------------------------------------------------------------------------------------
6.HDFS元数据俩种存储方式?
内存元数据:namenode
文件元数据:edits+fsimage
--------------------------------------------------------------------------------------------------------------------------------------------
7.HDFs最小文件存储单元 block?
1.存储在datanode,大小默认128M,多副本、均匀分布在多个datanode(默认三个副本);
2.block放置策略:副本1放在clinet 副本2放在另一台机架,副本3放在和副本2一起的另外节点,其他随意;
3.block文件 命名:“ blk blk_文件大小”
--------------------------------------------------------------------------------------------------------------------------------------------
8.HDFS各个角色
1.ActiveNN作用:
唯一的集群管理节点;管理HDFS文件系统命名空间;维护元数据信息(文件位置、权限、块信息等);处理客户端请求;管理块策略
2.standbyNN作用:
备份master节点宕机后替换activeNN;周期同步activeNN的edits文件,并定期合并fsimage文件和edits到本地磁盘;
3.nameNode作用:
存储元数据(fsimage+edits),fsimage(文件块信息、位置、目录、副本数),edits(文件操作记录)
4.dataNode作用:
Slive工作节点;存储数据block;定期与namenode心跳汇报block信息(集群启动有可用block数汇报);客户端的数据读写操作;
--------------------------------------------------------------------------------------------------------------------------------------------
9.HDFS高可用?
通过QJM机制部署2N+1个journalNode节点,N+1个操作成功(写edits)即可,利用ZK选举Active节点
--------------------------------------------------------------------------------------------------------------------------------------------
2、YARN
1.yarn与mapreduce的关系?
答:
1.yarn是资源调度框架,mapreduce是分布式计算框架;
2.yarn将jobTracker的资源管理和任务调度划分开了,通过ResourceManager进行资源的统一管理和分配,
ApplicationManager进行解析mapreduce程序然后变成一个个小任务,需要多少资源向ResourceManager请求,
然后nodeManager和applicationManager协作分配containner执行任务。
--------------------------------------------------------------------------------------------------------------------------------------------
2.如何部署yarn RM NM和hdfs的datanode namenode节点?
答:1.dataNode和nodeManager放在一起
2.yarn的ResourceManager单独放
3.俩个active不放在一起,standby节点放在别的节点
4.namenode 和RM 至少俩个
--------------------------------------------------------------------------------------------------------------------------------------------
3.Yarn三个角色ResourceManager/applicationManager/nodeManager介绍?
ResourceManager:统一管理集群的所有资源,分配资源给applicationManager,接受nodemanager资源上报信息
applicationManager:管理应用程序,申请资源,任务调度
nodeManager:管理单个节点资源,上报资源使用,管理container生命周期
--------------------------------------------------------------------------------------------------------------------------------------------
4.ResourceManagerHA高可用?
1个activeRM 多个standby RM;ZK选举ActiveRM,宕机后主备切换;
--------------------------------------------------------------------------------------------------------------------------------------------
5.yarn的资源调度策略?
1.FiFo Scheduler:先进先出,不灵活,利用率低;
2.capacity Scheduler:提前做预算;多个队列共享资源;空闲资源优先给实际资源/预算资源小的队列;
特点:弹性分配;多租户;多层次;保证容量
3.fair scheduler:见面分一半 资源抢占;占用资源小于最低资源限制 则强制停止其他队列任务;队列中有任务等待,则根据权重分配
--------------------------------------------------------------------------------------------------------------------------------------------
3、MapReduce
1.mapreduce核心思想?
1.分治思想;2.移动计算而不是移动数据
--------------------------------------------------------------------------------------------------------------------------------------------------
2.特点:计算跟着数据走,批处理,高容错,扩展好
--------------------------------------------------------------------------------------------------------------------------------------------------
3.MR的几个阶段?
split:Split的大小默认 等于 Block大小,决定map任务数量;
map:split切片输入,key-value输出
reduce:由若干Reduce任务组成,数量由程序指定
shuffle:中间环节,包括分区(哈希取模)将map中间结果输出到buffer区,然后分区排序,当达到阈值溢将
一个临时文件写到磁盘上,map任务结束前临时文件合并为一个map文件,fetch等
Partition决定了Map任务输出的每条数据放入哪个分区,交给哪个Reduce任务处理
• Reduce任务的数量决定了Partition数量
• Partition编号 = Reduce任务编号 =“key hashcode % reduce task number”
--------------------------------------------------------------------------------------------------------------------------------------------------
Hadoop1和2的区别?
1.1有单点故障,资源描述简单,负载太重;2融合yarn 高可用,高扩展,资源有专门的角色管理,任务和资源分开
--------------------------------------------------------------------------------------------------------------------------------------------------
4.mapreduce key-value输入输出的原因?
答:
1.通用数据格式
2.shuffle过程要排序合并,哈希取模可以决定分区partition
--------------------------------------------------------------------------------------------------------------------------------------------------
5.shuffle是调优关键?
答:shuffle的过程:先写内存(内存中先分区后排序) 然后溢写硬盘 再合并(大文件的分区排序)
4、Spark
1.RDD?
数据集拆分;数据存储在内存或者磁盘;多分区;失效自动重构;转换操作构造
--------------------------------------------------------------------------------------------------------------------------------------------------
2.RDD俩种依赖?
窄依赖(父RDD中的分区最多只能被一个子RDD的一个分区使用)和宽依赖(子RDD依赖于所有父RDD)
--------------------------------------------------------------------------------------------------------------------------------------------------
3.spark 角色?
1.driver;main函数在里面
2.sparContext:加载配置信息,初始化运行环境,创建DAGScheduler和TaskScheduler
3.Executor:可以有多个 多线程
4.task:
--------------------------------------------------------------------------------------------------------------------------------------------------
4.spark的几种运行模式?
1.local:单机运行,spark以多线程形式运行在本地;
2.standlone:集群运行(规模不大)
3.yarn-client/yarn-cluster(生产环境);
--------------------------------------------------------------------------------------------------------------------------------------------------
5.spark运行过程:
生成逻辑查询计划-物理查询计划-任务调度-执行任务
--------------------------------------------------------------------------------------------------------------------------------------------------
6.mapreduce比起saprk优缺点:
答:1.通用性强
2.mapreduce对现实的描述过于简单只有map,reduce俩个,spark细分rdd,分多个partition
5、Sqoop
Sqoop:用于rdbms和hadoop之间的数据导入导出
1.1和2版本的对比:
1.不安全,但是简单快速高效,2.增加安全机制,多用户,集中管理,稳定性和速度都不好
--------------------------------------------------------------------------------------------------------------------------------------------------
6、Flume
1.数据流模式:source---channel(可以缓存)---sink
2.事务机制:支持重读重写
3.agent:jvm的运行单元,将外部数据送到目的地,内涵一个数据流,以event作为数据单元进行传输
4.1个souece对应多个channel,1channel对应1个sink
5.flume单层架构(数据暴露,安全性差,产生许多小文件),多层架构(安全但是复杂)
--------------------------------------------------------------------------------------------------------------------------------------------------
7、Kafka
1.kafka的几个角色?
broker:server;
topic:消息贴标签组成一类 分类的过程,同一类,方便处理,有了topic
就可以隔离其他类数据,他是一个逻辑概念;
partiion:物理概念要落盘 不可更改只读,一个topic多个分区,一个分区一个目录,
一个分区代表一个文件夹 一个分区多个副本 放在不同的broker上;
zk:broker的负载均衡,leader的选举,元数据存储,CG之间的rebalance,配置管理等;
--------------------------------------------------------------------------------------------------------------------------------------------------
2.kafka的partiton是一个先进先出队列,写入消息追加尾部,消费消息在队列头部;
--------------------------------------------------------------------------------------------------------------------------------------------------
3.kafka的CG内部的cosumer是互斥的,不同CG之间是共享消息的;
--------------------------------------------------------------------------------------------------------------------------------------------------
4.kafka最小数据存储单元是segment,它包含(offset.index offset.timeindex,offset.log)三个文件,offset
是消息在分区中的唯一标识,他是有序的。
offset.index数据格式:偏移量,位置;
offset.timeindex数据格式:时间,偏移量;
--------------------------------------------------------------------------------------------------------------------------------------------------
5.kafka机制:
消息在broker中(server)按照topic分类,打上标签;然后 每个topic划分为多个partition,每个partition进行
多个备份副本;多个consumer组成CG 进行订阅消费数据
--------------------------------------------------------------------------------------------------------------------------------------------------
6.队列在资源调度的作用?
答:共享集群资源,隔离任务
--------------------------------------------------------------------------------------------------------------------------------------------------
7.kafka分了topic和partition作用?
答:利用多分区多副本实现高可用,一个topic(逻辑概念)代表一类数据,一个topic分为多个partition(物理概念),
一个partition为一个文件夹表示一种业务
--------------------------------------------------------------------------------------------------------------------------------------------------
8.kafka partition leader 和follower如何工作》?
答:partition leader 是选举出来的主要负责一个分区的读写;follower同步分区信息到各个副本
--------------------------------------------------------------------------------------------------------------------------------------------------
9.zookeeper为什么不亲自负责kafka的partition和副本之间的leader的选举?
答:通过Zookeeper,从Kafka集群中选举出一个Broker作为Kafka Controller Leader
• Kafka Controller Leader负责管理Kafka集群的分区和副本状态,避免分区副本直接在Zookeeper
上注册Watcher和竞争创建临时Znode,导致Zookeeper集群负载过重,Kafka Controller Leader通过ISR(分区和备份列表)来选举
partition Leader
--------------------------------------------------------------------------------------------------------------------------------------------------