Hadoop总结
HDFS
NameNode
Node元数据管理, Node-Block映射关系BlocksMap, 由NN汇报
NameSpace管理, File-Block映射关系FSImage, 持久化到HDFS
NN管理,网络拓扑结构,Rack-Node, NetworkTopology
LeaseManager, 同步文件写操作, 一个Lease对应一个Client以及一个FSPath.
元数据增删改查操作
safemode重构NN内存结构
SNN
进行fsimage与editlog合并,减轻NN负担
NN HA
HDFS Federation
https://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-name-node/
DataNode
向NN汇报Block Info, 接受Client对Block的读写。
一次写入,多出读取
CacheManager
写过程:
pipeline, 所有副本都成功后才返回成功
读过程:
获取lease, 从NN获取数据位置,从DN读数据, 循环获取元数据、读取数据
Yarn
RM
RM的职责? 保存了哪些状态?
1、 管理NM, 获取集群可用资源
2、 接受Application Client请求,Submit/Kill/Query Application等
3、 ApplicationMaster管理,为AppMaster分配资源等
yarn-site.xml
yarn.resourcemanager.address, 与yarn client通信地址, 发送submit/kill Application等管理Application的请求
yarn.resourcemanager.resource-tracker, 与NM通信地址,管理NM
yarn.resourcemanager.scheduler.address, 与ApplicationMaster通信地址,接受AppMaster资源申请、管理AppMaster等
yarn.resourcemanager.admin.address, 与管理员通信地址
yarn.resourcemanager.webapp.address, RM web ui地址
yarn.resourcemanager.resource-tracker.client.thread-count, 服务NM线程数
yarn.resourcemanager.scheduler.client.thread-count, 服务AppMaster线程数
yarn.resourcemanager.nodes.include-path /
yarn.resourcemanager.nodes.exclude-path, NM黑白名单
yarn.resourcemanager.nodemanagers.heartbeat-interval-ms, NM心跳间隔
NM
NM的职责? 保存了哪些状态?
1、与RM通信管理Container,汇报结点健康状态,结点上可用资源,监控Container
2、接受ApplicationMaster命令,启动/停止Container
yarn-site.xml
管理Node资源,监控Container
配置Node资源参数:
cpu:yarn.nodemanager.resource.cpu-vcores,一般一个物理core对应一到两个vcore
memery: yarn.nodemanager.resource.memory-mb, 小于Node物理内存,一般物理内存80%
vitural-memery: yarn.nodemanager.vmem-pmem-ratio,可使用虚拟内存与物理内存比例,即是整个node最大v-memory大小,也是每个worker可使用v-mermory最大大小
yarn.nodemanager.aux-services,NM上运行的辅助服务,mapreduce_shuffle可运行MR,spark_shuffle可运行Spark Application
yarn.nodemanager.local-dirs,container运行时可使用的本地目录,一般用于存储中间结果等
yarn.nodemanager.log-dirs, contailner运行时存放日志的本地目录
yarn.nodemanager.log.retain-seconds,不启动log-aggregation时,本地container log可保存时间
根据Node上可用资源及可运行Container个数配置Container资源参数,Application运行时申请的worker内存和cpu应处于Container定义的资源范围内
Container最小内存:yarn.scheduler.minimum-allocation-mb
Container最大内存:yarn.scheduler.maximum-allocation-mb
Container最小Core: yarn.scheduler.minimum-allocation-vcores
Container最大Core: yarn.scheduler.maximum-allocation-vcores
Scheduler
yarn-site.xml
yarn.resourcemanager.scheduler.class, FIFO, Capacity Scheduler和Fair Scheduler
Fair Scheduler
yarn.scheduler.fair.allocation.file, Fair队列定义位置
队列定义:
对应名、资源、
权限
Application
yarn-site.xml
yarn.application.classpath: Application container classpath
Application Log
yarn.log-aggregation-enable, 是否启动log-aggregation, 若启动,Application日志会保存到HDFS
yarn.nodemanager.remote-app-log-dir, Application日志保存到HDFS路径主目录
yarn.nodemanager.remote-app-log-dir-suffix, Application日志保存到HDFS副目录
yarn.log-aggregation.retain-seconds, HDFS上日志保留时间
yarn.log-aggregation.retain-check-interval-seconds,检查HDFS日志间隔
RM HA
RM HA一般将RM内存状态存储到zk, 记录了已提交的Application及Application Context
yarn.resourcemanager.ha.enabled
yarn.resourcemanager.cluster-id
yarn.resourcemanager.ha.rm-ids
yarn.resourcemanager.zk-address
yarn.resourcemanager.hostname
MR
mapred-site.xml
mapreduce.framework.name, 配置成yarn
MRAppMaster
yarn.app.mapreduce.am.resource.mb, MRAppMaster物理内存
yarn.app.mapreduce.am.resource.cpu-vcores, MRAppMaster v-core数量
mapreduce.am.max-attempts,
MRWorker
Job
mapreduce.job.name, Job名
mapreduce.job.priority,Job优先级
mapreduce.job.queuename, Job提交队列
mapreduce.task.io.sort.mb,Map/Reduce Task排序缓冲区大小
mapreduce.reduce.shuffle.parallelcopies, shuffle拷贝线程数
mapred.child.env, worker环境变量,
MapWorker
mapreduce.map.memory.mb, map物理内存大小,介于container最小值与最大值之间
mapreduce.map.cpu.vcores, map core数量
mapreduce.map.java.opts, map worker启动参数
mapreduce.map.maxattempts
mapreduce.map.speculative
mapreduce.map.sort.spill.percent, Map溢出写文件占缓冲器阈值
mapred.compress.map.output, map端输出是否压缩
apreduce.map.output.compress.codec, map端输出压缩格式
ReduceWorker
mapreduce.reduce.memory.mb, reduce物理内存大小,介于container最小值与最大值之间
mapreduce.reduce.cpu.vcores, reduce core数量
mapreduce.reduce.java.opts, reduce worker启动参数
mapreduce.reduce.maxattempts
mapreduce.reduce.speculative
container执行的命令?
影响MR性能参数:
MRClient
MRClient可覆盖mapred-site.xml中配置的Job/Map/Reduce相关的参数, 这样只会对当前Job有效。
mapreduce.job.reduces
mapreduce.client.submit.file.replication=2
MRJobHistory
JobHistory提供了MR Application的信息,主要有AppMaster产生,比如Application提交时间、结束时间、Counter信息等,具体的Task日志则有每个NM自己负责。 通过Histroy Server可获取Job概览信息。
mapreduce.jobhistory.address, 内部RPC地址
mapreduce.jobhistory.webapp.address, JobHistory web ui地址
mapreduce.jobhistory.intermediate-done-dir, Application信息中间目录
mapreduce.jobhistory.done-dir, Application信息存放位置
TimelineServer
通用JobHistory