写在前面


一、大数据全栈

头两节讲完HDFS & MapReduce,这一部分聊一聊它们之间的“人物关系”。

其中也讨论下k8s的学习必要性。

Ref: [Distributed ML] Yi WANG's talk

二、知识点

容器技术与Kubernetes

Goto: 3 万容器,知乎基于Kubernetes容器平台实践

Goto: 如何学习、了解kubernetes?

Goto: 选K8S是对的,但是用不好就是你的不对了

Yarn资源管理


一、重要概念

  • ResouceManager
  • ApplicationMaster
  • NodeManager
  • Container
  • JobHistoryServer
  • Timeline Server

JobHistoryServer

所有node启动如下命令,能记录mapreduce应用程序的记录。(对作业信息进行记录)

mr-jobhistory-daemon.sh start historyserver

Timeline Server

写与第三方结合的日志服务数据(比如spark等),是更细粒度的信息记录。。

任务在哪个队列中运行;

运行任务时设置的用户是哪个用户;

二、启动流程

Ref: 实战案例玩转Hadoop系列11--运行Map Reduce程序

在真实的生产环境中,MAP REDUCE程序应该提交到Yarn集群上分布式运行,这样才能发挥出MAP REDUCE分布式并行计算的效果。

MAP REDUCE程序提交给Yarn执行的过程如下:

1、客户端代码中设置好MAP REDUCE程序运行时所要使用的Mapper类、Reducer类、程序Jar包所在路径、Job名称、Job输入数据的切片信息、Configuration所配置的参数等资源,统一提交给Yarn所指定的位于HDFS上的Job资源提交路径;

2、客户端向Yarn中的Resource Manager请求运行Jar包中MRAppMaster进程的资源容器Container;

分配application id、输出是否存在、输入 --> split(一个分片对应一个map task)

3、Yarn将提供Container的任务指派给某个拥有空闲资源的 Node Manager节点,Node Manager接受任务后创建资源容器(即所谓的Container);

容器所需分配的“资源描述信息” ---> 某个空闲的Node Manager节点 ---> 启动一个contrainer

4、客户端向创建好容器的Node Manager发送启动MRAppMaster进程的shell脚本命令,启动MRAppMaster;

5、MRAppMaster启动后,读取 job相关配置及程序资源,向Resource Manager请求N个资源容器来启动若干个Map Task进程和若干个Reduce Task进程,并监控这些Map Task进程和Reduce Task进程的运行状态;

6、当整个Job的所有Map Task进程和Reduce Task进程任务处理完成后,整个Job的所有进程全部注销,Yarn则销毁Container,回收运算资源。

三、Yarn调度器

FIFO Scheduler

Capacity Scheduler

Fair Scheduler

新建一个capacity-scheduler.xml,也要同步拷贝到其他node中。

<configuration>

  <property>

    <name>yarn.scheduler.capacity.root.queues</name>

    <value>prod,dev</value>

  </property>

  <property>

    <name>yarn.scheduler.capacity.root.dev.queues</name>

    <value>hdp,spark</value>

  </property>

  <property>

    <name>yarn.scheduler.capacity.root.prod.capacity</name>

    <value>40</value>

  </property>

    <property>

    <name>yarn.scheduler.capacity.root.dev.capacity</name>

    <value>60</value>

  </property>

    <property>

    <name>yarn.scheduler.capacity.root.dev.maximum-capacity</name>

    <value>75</value>

  </property>

  <property>

    <name>yarn.scheduler.capacity.root.dev.hdp.capacity</name>

    <value>50</value>

  </property>

    <property>

    <name>yarn.scheduler.capacity.root.dev.spark.capacity</name>

    <value>50</value>

  </property>

</configuration>

MR程序中添加代码:

Configuration configuration = new Configuration();
configuration.set("mapreduce.job.queuename", "hdp")
Job job = Job.getInstance(configuration, WordCountMain.class.getSimpleName());

Cluster UI在运行的MR查看:

Kubernetes


Ref:Big Data: Google Replaces YARN with Kubernetes to Schedule Apache Spark

Ref: Running Spark on Kubernetes

Ref: Running Spark on YARN

The Kubernetes scheduler is currently experimental. In future versions, there may be behavioral changes around configuration, container images and entrypoints.  - 2019/10/28

既然这样,暂时不提。

End.

[Hadoop] Yarn & k8s的更多相关文章

  1. Hadoop YARN 100-1知识点

    0 YARN中实体 资源管理者(resource manager, RM) 长时间运行的守护进程,负责管理集群上资源的使用 节点管理者(node manager, NM) 长时间运行的守护进程,在集群 ...

  2. hadoop yarn running beyond physical memory used

    老是报物理内存越界,kill container,然后把yarn.scheduler.minimum-allocation-mb设成2048就好了 跟这个yarn.nodemanager.pmem-c ...

  3. Hadoop YARN配置参数剖析—RM与NM相关参数

    注意,配置这些参数前,应充分理解这几个参数的含义,以防止误配给集群带来的隐患.另外,这些参数均需要在yarn-site.xml中配置. 1.    ResourceManager相关配置参数 (1) ...

  4. Hadoop Yarn内存资源隔离实现原理——基于线程监控的内存隔离方案

    注:本文以hadoop-2.5.0-cdh5.3.2为例进行说明.   Hadoop Yarn的资源隔离是指为运行着不同任务的“Container”提供可独立使用的计算资源,以避免它们之间相互干扰.目 ...

  5. hadoop错误org.apache.hadoop.yarn.exceptions.YarnException Unauthorized request to start container

    错误: 14/04/29 02:45:07 INFO mapreduce.Job: Job job_1398704073313_0021 failed with state FAILED due to ...

  6. hadoop Yarn 编程API

    客户端编程库: 所在jar包: org.apache.hadoop.yarn.client.YarnClient 使用方法: 1 定义一个YarnClient实例: private YarnClien ...

  7. MapReduce扩展:应用程序如何运行于Hadoop Yarn之上

    1. 背景   “应用程序运行于Hadoop Yarn之上”的需求来源于微博运维数据平台中的调度系统,即调度系统中的任务需要运行于Hadoop Yarn之上.这里的应用程序可以简单理解为一个普通的进程 ...

  8. Hadoop yarn配置参数

    参照site:http://hadoop.apache.org/docs/r2.6.0/hadoop-yarn/hadoop-yarn-common/yarn-default.xml 我们在配置yar ...

  9. Hadoop YARN ERROR 1/1 local-dirs are bad *, 1/1 log-dirs are bad *

    转 http://blog.csdn.net/u012303571/article/details/46913471   查看 nodemanager 日志发下 如下信息   2015-07-16 1 ...

随机推荐

  1. python主要模块 和 常用方法简览

    ******************** PY核心模块方法 ******************** os模块: os.remove() 删除文件 os.unlink() 删除文件 os.rename ...

  2. TensorFlow指定GPU/CPU进行训练和输出devices信息

    TensorFlow指定GPU/CPU进行训练和输出devices信息 1.在tensorflow代码中指定GPU/CPU进行训练 with tf.device('/gpu:0'): .... wit ...

  3. How to export Overload functions from DLL?

    Library that exports functions library liba; procedure F(X: Integer); stdcall; overload; begin end; ...

  4. Java&Python&Appium 驱动APP及Desired Capabilities配置

    一.摘要 本篇博文,将阐述如何将环境&代码&APP联系起来工作 二.Java代码 我们先看一段真实的java代码,我将他放在了TestNG框架的@BeforeTest里,执行这段即可启 ...

  5. Java实验1 - 类的继承(super)- 创建checkaccount继承account

    笔记总结: /** 任务81: 继承性,(降低代码亢余度) * 1.class 子类A Extends 父类B,(private 的内容无法被继承) * 2. 方法可以覆盖(Overrides), 注 ...

  6. Sleep-Join方法理解

    package cn.mayday.test; public class JoinTest { public static void main(String[] args) { try { int c ...

  7. 让你的python代码优雅地道的小技巧

    转载地址:http://www.lightxue.com/transforming-code-into-beautiful-idiomatic-python 用了python这么久,逐渐才了解到pyt ...

  8. JS数组的交集、并集、差集,数组去重,获取两个数组重复的元素,去除两个数组相同的元素

    let arr1=[1,2,3,4,5,6] let arr2=[4,5,6,7,8,9] // 并集 数组去重 let RemoveSame=[...new Set([...arr1,...arr2 ...

  9. Qbxt 模拟赛 Day4 T2 gcd(矩阵乘法快速幂)

    /* 矩阵乘法+快速幂. 一开始迷之题意.. 这个gcd有个规律. a b b c=a*x+b(x为常数). 然后要使b+c最小的话. 那x就等于1咯. 那么问题转化为求 a b b a+b 就是斐波 ...

  10. 【poj1182】食物链--并查集扩展域

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 109341   Accepted: 33191 Description 动物 ...