Hadoop系列二

写在前面

生产上,集群的机器,总内存的75%,25%留给系统、Linux机制、以及防止OOM-killer。
oom-killer机制
当LInux服务器某个进程使用内存超标,Linux机器为了保护自己,主动杀死你的进程,释放内存。
tmp目录 30天机制

数据本地化

生产上部署一般遵循存储技术一体,就是计算时发现本节点有数据不需要网络传输,这种一般叫做数据本地化。

2.1 container容器

container容器是虚拟的概念,其实是一组memory+cpu vcore资源的组合。
在内存够的情况下,适当增加cpu vcore带来计算效率的提示。
运行在nm进程上的机器上。
关于Yarn的调优,就是调container

2.1.1 container内存
假设只有DN、NM,机器一共128G内存
预设DN=2G,NM=4G,剩下的全部给container容器,真正干活的是他。
生产如何调优container参数?

以下是CDH默认参数

yarn.nodemanager.resource.memory-mb  8G 分配给container总的内存
yarn.scheduler.minimum-allocation-mb 1G 每个container默认可得最小内存
yarn.scheduler.maximum-allocation-mb 96G 每个container默认可得最大内存

container内存会自动增加,默认1G递增 CDH中可通过参数调整,但是一般不去改
2.2 container vcore
yarn自己设计引入概念 是虚拟core
设计初衷是考虑不同的机器的cpu性能不一样,每个cpu计算能力都不同
比如某个cpu是另外一个物理cpu的2倍,这时通过设置第一个物理cpu的虚拟core来弥补这个差异。
第一台机器 强悍 pcore:vocre = 1:2 16core:32vcore
第二台机器 不强悍 pcore:vcore = 1:1
为什么要设置 vcore 1:2呢?
container需要vcore 并发任务是靠vcore

2.3 生产如何设置 突破口
cloudera公司推荐,一个container的vcore最好不要超过5个,我司生产上设置为4
yarn.scheduler.maximum-allcocation-vcores 4 极限情况下,只有32/4=8 个container

2.4 整合memory cpu
确定 4 vcore 8 个container
yarn.
但是spark

作业:假如该节点还有其他组建,比如Hbase RS节点,那么该如何设置参数?
256G内存
cpu物理core 32核
Hbase RS = 30G
DN
NM
以上6个参数如何设置?

2.2 面试题 MapReduce 2.X 架构设计/ MR on Yarn的流程

ResourceManager 主 rm
ApplicationsManager 应用管理器 作业 程序
ResourceScheduler 资源调度器
提交程序给Yarn计算平台时,可以指定要多少资源(内存+cpu),如果没制定,默认给分配最小的conatiner的内存,一般是1G,上产上调成2G,资源不够可以动态加,但也有个上限,否则会触发OOM机制,造成Linux机器夯住。

NodeManager 从 nm
1、client向rm调交应用程序(jar),其中已经包含ApplicationMaster主程序和启动程序。
ApplicationMaster相当于main方法。
2、ApplicationsManager 会为job分配第一个container,运行
3、applicationmaster向ApplicationsManager注册,就可以看到job的运行状态。
4、ApplicationMaster采用轮询的方式通过RPC协议向ResourceScheduler,申请和领取资源(哪台nm多少个内存,多少cpu vcore)
以上是启动 application master(应用的主程序),领取到资源
5、一旦ApplicationMaster拿到资源列表,就和对应的nm进程通信,要求启动的任务task 计算代码
6、NM为任务设置好运行环境(container容器里 包含jar包等资源),将启动命令写在脚本,将脚本写在计算的jar包
7、各个任务task通过RPC协议向ApplicationMaster汇报自己的进度和状态。当task运行失败,会在其他container重启任务。
8、当所有task运行完成后,applicationMaster向ApplicationsManager注销和关闭。这时在页面看是作业是不是完成了,完成的是成功还是失败的。
以上四步,运行任务,直到任务完成。

请问,作业的主程序运行在哪个节点上 NM

拓展sla 5个9

你可能感兴趣的:(hadoop,hadoop)