linleimama 2018-12-03 13:29 采纳率: 0%
浏览 421

搭建Hadoop Yarn on Docker环境,总是报Container image must not be null ?

搭建Hadoop Yarn on Docker环境,一切准备就绪后运行如下 命令

        hadoop jar $HADOOP_PREFIX/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0.jar \  teragen \     
        -Dmapreduce.map.env="yarn.nodemanager.docker-container-executor.image-name=sequenceiq/hadoop-docker:latest" \ 
        -Dyarn.app.mapreduce.am.env="yarn.nodemanager.docker-container-executor.image-name=sequenceiq/hadoop-docker:latest"\ 
        1000 \  teragen_out_dir

总是报Container image must not be null ???

        求教各位大神(个人感觉是这环境变量没传过去,可又无从下手)

        详细信息如下:
        java.lang.IllegalArgumentException: Container image must not be null at com.google.common.base.Preconditions.checkArgument(Preconditions.java:88) at org.apache.hadoop.yarn.server.nodemanager.DockerContainerExecutor.launchContainer(DockerContainerExecutor.java:189) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.launchContainer(ContainerLaunch.java:437) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:288) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:92) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 09:17
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要解决这个问题,首先确保在构建YARN镜像时包含了所需的依赖项。然后,在启动容器时检查image-name参数。

    以下是一个示例:

    public class Main {
        public static void main(String[] args) throws IOException {
            // 构建包含所需依赖的YARN镜像
            ImageBuilder imageBuilder = new ImageBuilder();
            imageBuilder.withDependencies("com.google.guava:guava:30.1-jre", "org.apache.hadoop:hadoop-client:2.7.0");
            String yarnImageName = imageBuilder.build();
    
            // 启动YARN容器
            NodeManager nodeManager = new NodeManager(yarnImageName);
            nodeManager.start();
        }
    }
    

    在这个例子中,我们创建了一个NodeManager实例,并使用start()方法启动了YARN容器。请注意,你需要根据你的实际需求调整imageNamedependencies字段。

    此外,你还需要确保你的Dockerfile中包含了适当的镜像标签。例如,如果你想要一个名为my-yarn-image的镜像,你应该在Dockerfile中添加以下行:

    FROM sequenceiq/hadoop-docker:latest
    
    # 添加依赖项
    RUN apt-get update && \
        apt-get install -y build-essential && \
        apt-get install -y software-properties-common && \
        add-apt-repository universe && \
        apt-get update && \
        apt-get install -y openssh-server && \
        apt-get install -y curl && \
        apt-get install -y python-software-properties && \
        apt-add-repository ppa:ubuntu-toolchain-r/test && \
        apt-get update && \
        apt-get install -y gcc-multilib && \
        apt-get install -y libncurses5-dev && \
        apt-get install -y libssl-dev && \
        apt-get install -y libffi-dev && \
        apt-get install -y python3-pip && \
        apt-get install -y python3-setuptools && \
        apt-get install -y python3-virtualenv
    
    # 配置SSH密钥
    RUN echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCpKgGnMkPm/8bOcUZxjJWfSdIvLl9eXqVXWzrFbR9oQ==" | base64 --decode > ~/.ssh/id_rsa
    
    # 创建并初始化Python虚拟环境
    RUN pip3 install virtualenv
    
    # 创建virtualenv并激活它
    RUN virtualenv venv
    
    # 安装必要的Python库
    RUN python3 -m venv venv/bin/activate && pip3 install -r requirements.txt
    
    # 运行命令以安装YARN依赖项
    RUN pip3 install hadoop==2.7.0
    

    最后,记得将上述代码保存到一个.dockerfile文件中,并将其放置在一个支持Docker容器编译的目录下。然后,你可以通过执行以下命令来构建和启动YARN容器:

    docker build -t my-yarn-image .
    docker run -it --name yarn_container my-yarn-image
    

    注意:这些步骤基于Apache Hadoop 2.7.0版本。如果你使用的是其他版本,请相应地调整代码和构建指令。

    评论

报告相同问题?

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格