本文的内容是东拼西凑出来的,写给自己看的,还有调试的时候的一些报错的解决方式,本人菜鸡一只,如果有说错的地方,还望批评指出!

概述:

Yarn支持两种不同容器实现方式,一种是yarn容器,一种是Linux容器,据说还有一种Docker容器(但是Docker其实带不太动CM,不过apache还是没问题的),Linux容器较比Yarn容器具有更好的扩展性和隔离性。本文将讲述Linux容器的配置。

偶然有机会,自己测试Hadoop Yarn Linux Container Executor的配置,但是说实话之前没做过容器这块的东西,所以虽然配置成功但是不太明白这么做有什么意义。因此百度了几篇大神的文章,这里转一下,如有冒犯实在抱歉!

1、关于nodemanager开启不同的Container的介绍:(AlstonWilliams)https://www.jianshu.com/p/e79b6a10dc85

然后我从中看到了Cgroup的影子,我就开始好奇Cgroup又是个啥,继续搜索,找到了这个

2、关于Cgroup的介绍:(刘光华_zhou)http://blog.csdn.net/zhoudetiankong/article/details/76150199

如上,我发现了Cgroup大概的意思就是启动应用的时候限定该应用占用的cpu,因此我看到了另一位大神的一篇文章

3、hadoop升级Cgroup:(哪天改改)http://blog.csdn.net/fbj312/article/details/63762891

写的很好,我真的看明白了,也说了不少报错的解决!

4、hadoop Cgroup源码解读:(刘光华_zhou)http://blog.csdn.net/zhoudetiankong/article/details/76158696

然后我又看了看源码解读,做了下记录!

然后我就开始了我的测试:

说是测试,其实也没做什么主要是一些报错记录下(毕竟自己水平也是有限

报错一: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/modules/hadoop-2.5.0/bin/container-executor)

2018-03-14 12:39:23,852 FATAL org.apache.hadoop.yarn.server.nodemanager.NodeManager: Error starting NodeManager
org.apache.hadoop.yarn.exceptions.YarnRuntimeException: Failed to initialize container executorat org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:192)at org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:425)at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:472)
Caused by: java.io.IOException: Linux container executor not configured properly (error=1)at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:175)at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:190)... 3 more
Caused by: ExitCodeException exitCode=1: /opt/modules/hadoop-2.5.0/bin/container-executor: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/modules/hadoop-2.5.0/bin/container-executor)at org.apache.hadoop.util.Shell.runCommand(Shell.java:538)at org.apache.hadoop.util.Shell.run(Shell.java:455)at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:702)at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:169)... 4 more

这个网上的解决方法不一,大概有两种:

第一种是重新编译(我没试过):

尝试重新编译,找到Hadoop源代码,在$HADOOP_SRC/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager路径下,有一个pom.xml文件和src目录,直接使用maven编译,执行以下命令:

mvn package -Pdist,native -DskipTests -Dtar -Dcontainer-executor.conf.dir=$HADOOP_HOME/etc/hadoop

在编译好的target/native/usr/local/路径下可以找到编译好的container-executor,替换即可。

替换之后可以执行$HADOOP_HOME/bin/container-executor -checksetup,如果没有错误信息,基本上问题就解决了。

第二种是让机器支持GLIBC_2.14:https://www.cnblogs.com/erygreat/p/7223829.html(我用的是这种方式解决的)

报错二:/opt/modules/hadoop-2.5.0/etc/hadoop must be owned by root, but is owned by 500

2018-03-14 13:47:37,961 FATAL org.apache.hadoop.yarn.server.nodemanager.NodeManager: Error starting NodeManager
org.apache.hadoop.yarn.exceptions.YarnRuntimeException: Failed to initialize container executorat org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:192)at org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:425)at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:472)
Caused by: java.io.IOException: Linux container executor not configured properly (error=24)at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:175)at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:190)... 3 more
Caused by: ExitCodeException exitCode=24: File /opt/modules/hadoop-2.5.0/etc/hadoop must be owned by root, but is owned by 500at org.apache.hadoop.util.Shell.runCommand(Shell.java:538)at org.apache.hadoop.util.Shell.run(Shell.java:455)at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:702)at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:169)... 4 more

原因:这个是在${HADOOP_HOME}/etc/hadoop/container-executor.cfg配置文件的权限,和他上层目录的user(所属者)必须是root。

解决方式:chown root:root ${HADOOP_HOME}/etc/   (我就改了etc的权限为root:root)

然后我发现,报了这样的错!

Caused by: ExitCodeException exitCode=24: File /opt/modules/hadoop-2.5.0 must be owned by root, but is owned by 500

或者这样

ExitCodeException exitCode=24: File /opt/modules must be owned by root, but is owned by 500

然后我就明白了,应该让这个container-executor.cfg配置文件的所有上层目录都变成root,就是说opt,modules,hadoop-2.5.0,etc,hadoop这几个目录都要变成root:root(注意:其他的不用)

报错三:Caused by: ExitCodeException exitCode=22: Invalid permissions on container-executor binary.

2018-03-14 14:36:21,416 FATAL org.apache.hadoop.yarn.server.nodemanager.NodeManager: Error starting NodeManager
org.apache.hadoop.yarn.exceptions.YarnRuntimeException: Failed to initialize container executorat org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:192)at org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:425)at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:472)
Caused by: java.io.IOException: Linux container executor not configured properly (error=22)at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:175)at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:190)... 3 more
Caused by: ExitCodeException exitCode=22: Invalid permissions on container-executor binary.at org.apache.hadoop.util.Shell.runCommand(Shell.java:538)at org.apache.hadoop.util.Shell.run(Shell.java:455)at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:702)at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:169)... 4 more

原因:看起来是执行某一个脚本或者文件的时候,权限有问题!

解决:其实就是在${HADOOP_HOME}/bin下面的container-executor这个的权限有问题

执行 sudo chmod 6050 container-executor

这时候有可能出现另一种报错:

2018-03-15 11:43:09,610 FATAL org.apache.hadoop.yarn.server.nodemanager.NodeManager: Error starting NodeManager
org.apache.hadoop.yarn.exceptions.YarnRuntimeException: Failed to initialize container executorat org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:192)at org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:425)at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:472)
Caused by: java.io.IOException: Cannot run program "/opt/modules/hadoop-2.5.0/bin/container-executor": error=13, Permission deniedat java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)at org.apache.hadoop.util.Shell.runCommand(Shell.java:485)at org.apache.hadoop.util.Shell.run(Shell.java:455)at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:702)at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.init(LinuxContainerExecutor.java:169)at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceInit(NodeManager.java:190)... 3 more
Caused by: java.io.IOException: error=13, Permission deniedat java.lang.UNIXProcess.forkAndExec(Native Method)at java.lang.UNIXProcess.<init>(UNIXProcess.java:186)at java.lang.ProcessImpl.start(ProcessImpl.java:130)at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028)... 8 more

这个报错是这样的:

在etc/hadoop/container-executor.cfg这个配置文件里面写了

yarn.nodemanager.linux-container-executor.group=hadoop
yarn.nodemanager.local-dirs=/opt/modules/hadoop-2.5.0/yarn/local
yarn.nodemanager.log-dirs=/opt/modules/hadoop-2.5.0/yarn/log
banned.users=hdfs,yarn,mapred,bin

min.user.id=1000

所以${HADOOP_HOME}/bin下面的container-executor的权限应该如下:

sudo chown root:hadoop container-executor

sudo chmod 6050 container-executor

====================华丽的分割线=========================


hadoop cgroup cpu资源计算方法:

比如一台机器是nodemanger节点,16核cpu,实际该机器cpu资源为1600%。设置yarn.nodemanager.resource.percentage-physical-cpu-limit为90,则nodemanager可用的cpu资源为16*0.9=14.4,则nodemanger所占用的cpu资源最高为1440%。另外,如果yarn.nodemanager.resource.cpu-vcores配置虚拟cpu核数为12,则这样的话该nodemanger上分配的一个container最多可以使用的cpu资源为1440%/12。

文章的最后,再转载一篇关于hadoop使用kerberos增加权限验证功能的帖子:(nextuser)http://www.aboutyun.com/blog-1330-933.html

kerberos应该也是大数据容器的知识,简单来讲就是做个安全机制,让用户或者应用要请求集群数据或者资源的时候做一个校验,具体我也说不清楚,还在学习中!

本人菜鸡一只,谢谢各位大神写的文章!!!

Hadoop Yarn Linux Container Executor配置相关推荐

  1. Hadoop Yarn内存使用优化配置

    第一部分Hadoop Yarn内存使用优化配置 在Hadoop2.0中, YARN负责管理MapReduce中的资源(内存, CPU等)并且将其打包成Container. 这样可以精简MapReduc ...

  2. Hadoop Yarn生产环境核心配置参数

  3. Hadoop Yarn配置参数整理(非常全面)

    RM与NM相关参数 ResourceManager 参数名称 作用 默认值 yarn.resourcemanager.address ResourceManager 对客户端暴露的地址.客户端通过该地 ...

  4. Hadoop - YARN NodeManager 剖析、NodeManger内部架构、分布式缓存、目录结构、状态机管理、Container 生命周期剖、资源隔离

    一 概述 NodeManager是运行在单个节点上的代理 ,它管理Hadoop集群中单个计算节点,功能包括与ResourceManager保持通信,管理Container的生命周期.监控每个Conta ...

  5. linux container框架,理解和配置LinuxContainerExecutor

    最近在研究如何为Hadoop开启基于Kerberos的安全配置,经过千辛万苦配置好后本以为到了见证奇迹的时刻,但是卡在NodeManger无法启动,折磨的死去活来.经历了各种百度.google后依然无 ...

  6. Hadoop YARN配置参数剖析(4)—Fair Scheduler相关参数

    首先在yarn-site.xml中,将配置参数yarn.resourcemanager.scheduler.class设置为org.apache.hadoop.yarn.server.resource ...

  7. 深入理解Hadoop YARN中的Container概念

    在学习Hadoop  YARN-Hadoop 2.0新引入的通用资源管理系统过程中,总会遇到Container这一概念,由于中文资料的缺乏,很多人对Container这一概念仍非常的模糊.它与Linu ...

  8. Linux centos 6配置hadoop 集群搭建笔记教程

    一.安装JDK 1.上传jdk-8u121-linux-x64.tar.gz文件到/opt目录 2.解压jdk文件 tar -zxvf jdk-8u121-linux-x64.tar.gz -C /u ...

  9. Linux中安装配置hadoop集群

    原文:http://www.cnblogs.com/lijingchn/p/5574476.html 一. 简介 参考了网上许多教程,最终把hadoop在ubuntu14.04中安装配置成功.下面就把 ...

  10. CDH 版本Hadoop Yarn配置容量调度器(默认是公平调度器)

    配置中进行如下调整: 其实就是在在yarn-site.xm中添加yarn.resourcemanager.scheduler.class,修改成容量调度器: <property><n ...

最新文章

  1. windows 上rsync客户端使用方法
  2. Silverlight与Flex的比较选择
  3. 《Google软件测试之道》- Google软件测试介绍
  4. 启动tomcat报错Caused by: org.apache.catalina.LifecycleException: No UserDatabase component
  5. HDU 1711 -Number Sequence(KMP)
  6. [转载]能改变你的世界观的组图——从十亿光年到一飞米
  7. 使用logrotate分割tomcat日志
  8. day9-继承式多线程
  9. 2019百度之星 Polynomial
  10. RunLoop已入门?不来应用一下?
  11. 开发中常用日志搜索技巧
  12. svn 回退/更新/取消至某个版本命令详解
  13. 如何通过WOL(Wake On Lan)唤醒电脑
  14. php时间转换位周月,php日周月统计代码
  15. 高亮蓝光油溶性ZnCdS/ZnS量子点(硫化锌镉/硫化锌)
  16. Vue 链接生成二维码
  17. Win10工具栏显示桌面的几种方法
  18. 电源设计中最常见的四种滤波电路原理及特点解析
  19. 【恩墨学院】为什么用尽了办法你的系统性能还是不见改善?
  20. 平头哥 TG7100C 试玩。

热门文章

  1. 中国股票市场化整为零,然后聚沙成塔
  2. windows怎么设置始终以管理员身份运行
  3. U盘文件数据恢复工具如何使用
  4. http网站快捷免费升级到https
  5. 北大30岁女博导获2019 IEEE青年成就奖,全球仅三人,深耕微纳电子、神经形态计算
  6. 挂机机器人虚拟服务器,[机制|聊天]BotMaker —— 在你的服务器轻松创建机器人[1.8-1.13.2]...
  7. Backtrader量化平台教程(五)Signal
  8. PAT备考经验相关信息
  9. CC26x2R1笔记(8)CCS9.2 cc26xx环境的搭建
  10. php日期函数实际应用,日期函数如何在PHP中使用