Hadoop精华问答 | 如何设置单个任务占用的内存量和CPU数目?

640?wx_fmt=png

我们很荣幸能够见证Hadoop十年从无到有,再到称王。感动于技术的日新月异时,让我们再来看看关于Hadoop的精华问答。


640?wx_fmt=gif1

Q:默认情况下,各个节点的负载不均衡(任务数目不同),有的节点很多任务在跑,有的没有任务,怎样让各个节点任务数目尽可能均衡呢?


A: 默认情况下,资源调度器处于批调度模式下,即一个心跳会尽可能多的分配任务,这样,优先发送心跳过来的节点将会把任务领光(前提:任务数目远小于集群可以同时运行的任务数量),为了避免该情况发生,可以按照以下说明配置参数:

如果采用的是fair scheduler,可在yarn-site.xml中,将参数yarn.scheduler.fair.max.assign设置为1(默认是-1,)

如果采用的是capacity scheduler(默认调度器),则不能配置,目前该调度器不带负载均衡之类的功能。

当然,从hadoop集群利用率角度看,该问题不算问题,因为一般情况下,用户任务数目要远远大于集群的并发处理能力的,也就是说,通常情况下,集群时刻处于忙碌状态,没有节点一直空闲着。


640?wx_fmt=gif2

Q:某个节点上任务数目太多,资源利用率太高,怎么控制一个节点上的任务数目?


A:一个节点上运行的任务数目主要由两个因素决定,一个是NodeManager可使用的资源总量,一个是单个任务的资源需求量,比如一个NodeManager上可用资源为8 GB内存,8 cpu,单个任务资源需求量为1 GB内存,1cpu,则该节点最多运行8个任务。

NodeManager上可用资源是由管理员在配置文件yarn-site.xml中配置的,相关参数如下:

yarn.nodemanager.resource.memory-mb:总的可用物理内存量,默认是8096

yarn.nodemanager.resource.cpu-vcores:总的可用CPU数目,默认是8

对于MapReduce而言,每个作业的任务资源量可通过以下参数设置:

mapreduce.map.memory.mb:物理内存量,默认是1024

mapreduce.map.cpu.vcores:CPU数目,默认是1

默认情况,各个调度器只会对内存资源进行调度,不会考虑CPU资源,你需要在调度器配置文件中进行相关设置。


640?wx_fmt=gif3

Q:如何设置单个任务占用的内存量和CPU数目?


A:对于MapReduce而言,每个作业的任务资源量可通过以下参数设置:

mapreduce.map.memory.mb:物理内存量,默认是1024

mapreduce.map.cpu.vcores:CPU数目,默认是1

需要注意的是,默认情况,各个调度器只会对内存资源进行调度,不会考虑CPU资源,你需要在调度器配置文件中进行相关设置。


640?wx_fmt=gif4

Q:用户给任务设置的内存量为1000MB,为何最终分配的内存却是1024MB?


A:为了易于管理资源和调度资源,Hadoop YARN内置了资源规整化算法,它规定了最小可申请资源量、最大可申请资源量和资源规整化因子,如果应用程序申请的资源量小于最小可申请资源量,则YARN会将其大小改为最小可申请量,也就是说,应用程序获得资源不会小于自己申请的资源,但也不一定相等;如果应用程序申请的资源量大于最大可申请资源量,则会抛出异常,无法申请成功;规整化因子是用来规整化应用程序资源的,应用程序申请的资源如果不是该因子的整数倍,则将被修改为最小的整数倍对应的值,公式为ceil(a/b)*b,其中a是应用程序申请的资源,b为规整化因子。

以上介绍的参数需在yarn-site.xml中设置,相关参数如下:

yarn.scheduler.minimum-allocation-mb:最小可申请内存量,默认是1024

yarn.scheduler.minimum-allocation-vcores:最小可申请CPU数,默认是1

yarn.scheduler.maximum-allocation-mb:最大可申请内存量,默认是8096

yarn.scheduler.maximum-allocation-vcores:最大可申请CPU数,默认是4

对于规整化因子,不同调度器不同,具体如下:

FIFO和Capacity Scheduler,规整化因子等于最小可申请资源量,不可单独配置。

Fair Scheduler:规整化因子通过参数yarn.scheduler.increment-allocation-mb和yarn.scheduler.increment-allocation-vcores设置,默认是1024和1。

通过以上介绍可知,应用程序申请到资源量可能大于资源申请的资源量,比如YARN的最小可申请资源内存量为1024,规整因子是1024,如果一个应用程序申请1500内存,则会得到2048内存,如果规整因子是512,则得到1536内存。


640?wx_fmt=gif5

Q:我们使用的是Fairscheduler,配置了多个队列,当用户提交一个作业,指定的队列不存在时,Fair Scheduler会自动创建一个新队列而不是报错(比如报错:队列XXX不存在),如何避免这种情况发生?


A:在yarn-site.xml中设置yarn.scheduler.fair.allow-undeclared-pools,将它的值配置为false(默认是true)。


640?wx_fmt=png

小伙伴们冲鸭,后台留言区等着你!

关于Hadoop,今天你学到了什么?还有哪些不懂的?除此还对哪些话题感兴趣?快来留言区打卡啦!留言方式:打开第XX天,答:……

同时欢迎大家搜集更多问题,投稿给我们!风里雨里留言区里等你~


福利

1、扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


640?wx_fmt=jpeg

2、公众号后台回复:白皮书,获取IDC最新数据白皮书整理资料!


推荐阅读:

  • 开了个会:破局企业云通信,华为加速 Buff 开发者!

  • 没有一家公司可以逃避边缘计算 | 技术头条

  • 她高中发明著名算法,保送清华姚班,斯坦福 AI 实验室负责人高徒 | 人物志

  • GitHub 日收 12,000 星,微软新命令行工具引爆程序员圈!

  • 华为员工年薪 200 万!真相让人心酸!

  • 天才程序员:25 岁进贝尔实验室,32 岁创建信息论  琥珀  极客宝宝  5天前

  • 安全顾问反水成黑客, 靠瞎猜盗得5000万美元的以太币, 一个区块链大盗的另类传奇

  • 人造器官新突破!美国科学家3D打印出会“呼吸”的肺 | Science


640?wx_fmt=png真香,朕在看了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis-Plus_自定义sql

查询专栏:自定义查询sql 文章目录1. 在mapper接口中定义接口2. 在xml文件中书写sql3. 全局配置3.1 配置xml的位置3.2 配置实体类的位置4. 在实体类中测试5. 控制台输出1. 在mapper接口中定义接口 /*** 查询所有 有条件会自动拼接在where 后边当条件 单表操作** pa…

qt中下拉列表使用函数setCurrentText()设置当前显示值不能设置成功

解决方法 下拉列表设置当前显示的值,没有设置成功,是因为还需在设置前要设置下拉列表的可编辑属性为true,否则直接使用 函数setCurrentText()设置不能成功。 const QString & strDefultSid m_sidStrList[0];//字…

Gartner:PaaS 和平台架构领域的 4 大趋势 | 技术头条

戳蓝字“CSDN云计算”关注我们哦!技术头条:干货、简洁、多维全面。更多云计算精华知识尽在眼前,get要点、solve难题,统统不在话下!Gartner公司已列出了2019年及以后影响平台即服务(PaaS)技术和平…

MyBatis-Plus_分页查询

查询专栏:myabtis 实现的分页为什么还要分页插件? 文章目录1. 创建分页插件2. 测试分页3. 自定义分页4. 测试自定义分页方法5. 控制台输出6. 多表操作1. 创建分页插件 Configuration public class MybatisPlusConfig {Beanpublic PaginationInterceptor…

qt设置滚动区域的滚动条的样式

引言 当窗口的控件太多,不能一下完全显示,就可以采用滚动区域来添加控件,这样添加的控件,可以通过滑动滚动区域的滚动条来浏览所有的控件。下面就大致记录一下滚动区域的滚动条的样式怎么设置。 实现 直接上设置滚动区域的滚动…

MyBatis-Plus_更新操作

查询专栏:MP默认查询原则 查询的是数据库列名非实体类属性 文章目录Component public class UserMapperUpdateTest extends MybatisPlusSamplesChapter1ApplicationTests {Resourceprivate UserMapper userMapper;Testpublic void updateById(){User user new User…

什么叫云原生应用?| 技术头条

戳蓝字“CSDN云计算”关注我们哦!技术头条:干货、简洁、多维全面。更多云计算精华知识尽在眼前,get要点、solve难题,统统不在话下!作者:吕建伟转自:阿朱说(1)从Function到…

qt中设置父窗口中某一控件样式后,子窗口中某一控件也随父控件样式

引言 创建的窗口中含有滚动区域,滚动区域创建了很多按钮,点击按钮后弹出一个弹框,当设置了滚动区域的中心窗口的背景样式后,之前设置好的点击后按钮弹出框的背景样式也跟随着变化了。 方法 究其原因是因为滚动区域的窗口与点击…

MyBatis-Plus_删除操作

删除专栏 文章目录Component public class UserMapperDelTest extends MybatisPlusSamplesChapter1ApplicationTests {Resourceprivate UserMapper userMapper;/*** 根据 ID 删除*/Testpublic void delById() {int rows userMapper.deleteById(1094592041087729666L);System.o…

拙见之drawPath()与fillPath

阐述 此文仅记录标题中说的函数drawPath与fillPath的一点区别。 编写项目的过程中发现drawPath可以根据对画笔和画刷的设置,所绘制的图形含有边框和内部填充颜色,而fillPath即使设置了画笔和画刷的颜色,只会在绘制的图形中填充颜色&#xff…

MyBatis-Plus_AR 模式

查询专栏&#xff1a;MP默认查询原则 查询的是数据库列名非实体类属性 文章目录AR 模式1. 实体类对象继承Model2. 接口服务类继承baseMapper接口3. 测试ARAR 模式 1. 实体类对象继承Model EqualsAndHashCode(callSuper false) Data public class User extends Model<User…

500位开发者要在杭州搞事情!CTA峰会嘉宾全阵容揭秘

戳蓝字“CSDN云计算”关注我们哦&#xff01;扫描二维码&#xff0c;立享折扣。5 月 26 日- 5 月 27 日&#xff0c;由中国 IT 社区 CSDN 与数字经济人才发展中心联合主办的第一届 CTA 核心技术及应用峰会将在杭州国际博览中心召开。首届 CTA 核心技术及应用峰会将围绕人工智能…

记录一种多个按钮中每次只能选中一个的实现方式

阐述 本文旨在说明实现的思路。 当窗口创建很多QPushButton或者QPushButton的子类的时候&#xff0c;若要实现在众多的按钮中&#xff0c;每次被点击的按钮被选中&#xff0c;下一次点击另一个按钮的时候&#xff0c;上一个被选中的按钮恢复被选中之前的颜色&#xff0c;可以使…

MyBatis-Plus_通用service

通用service 文章目录1. 接口类继承 IService2. 接口实现类中继承ServiceImpl1. 接口类继承 IService<T> public interface UserService extends IService<User> { }2. 接口实现类中继承ServiceImpl<M,T> Service public class UserServiceImpl extends Se…

Storm精华问答 | Spark与Storm的区别有哪些?

戳蓝字“CSDN云计算”关注我们哦&#xff01;Storm是Twitter开源的分布式实时大数据处理框架&#xff0c;被业界称为实时版Hadoop。随着越来越多的场景对Hadoop的MapReduce高延迟无法容忍&#xff0c;比如网站统计、推荐系统、预警系统、金融系统等&#xff0c; 大数据实时处理…

Qt中颜色选择框输出所选中的颜色值

引言 颜色选择框可以选择自己喜欢的颜色&#xff0c;然后点击确定按钮&#xff0c;对应的在相应的代码中可以获取所选择的颜色&#xff0c;将选中的颜色以能够看懂的方式输出&#xff0c;这里就可以用所选颜色的r,g,b值&#xff0c;即输出对应的红&#xff0c;绿&#xff0c;蓝…

Git回滚代码到某个commit

回退命令&#xff1a; $ git reset --hard HEAD^ 回退到上个版本 $ git reset --hard HEAD~3 回退到前3次提交之前&#xff0c;以此类推&#xff0c;回退到n次提交之前 $ git reset --hard commit_id 退到/进到 指定commit的sha码

中国 CDN 编年史

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;CDN的全称是&#xff08;Content Delivery Network&#xff09;&#xff0c;即内容分发…

qt中实现绘制图形与截图

引言 实现可以选择线型&#xff0c;线宽&#xff0c;颜色&#xff0c;是否填充图形来绘制各种常见的图形&#xff0c;同时可以选择矩形区域来实现截图。 效果 绘图的效果如上&#xff0c;截图的效果&#xff1a; 实现 项目使用的qt5.13.2,编译器为MSVC2017_64bit&#xff…

Spring基础环境搭建

创建一个父工程springdubbo&#xff0c;3个子工程分别为服务端provider&#xff0c;客户端consumer &#xff0c;接口api 选择都选择maven quickstart即可 在main目录下面创建resources文件夹&#xff0c;并且让idea识别&#xff0c;选择中右击&#xff1a; 给父工程添加依赖…