docker快速搭建hadoop集群(2023.3.27)

JDK下载地址

hadoop下载地址

Docker Engine 下载概览

1.构建java与hadoop的基础镜像

  1. 新建目录mkdir docker-hadoop

  2. 使用rz -E 上传jdk1.8tar.gz压缩包和hadoop3.1.3的压缩包

  3. 编辑Dockerfile文件,构建一个带ssh、java、hadoop、vim环境的centos镜像

    FROM centos:7.5.1804
    # 安装jdk、hadoop到/opt/service
    ADD jre-8u361-linux-x64.tar.gz hadoop-3.1.3.tar.gz /opt/service/
    # 设置工作目录
    WORKDIR /opt/service
    
    # 安装ssh服务并更换阿里云yum源
    RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo && \
    	sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo && \
    	yum makecache && \
    	yum install -y openssh-server openssh-clients vim && \
    	sed -i '/^HostKey/'d /etc/ssh/sshd_config && \
    	echo 'HostKey /etc/ssh/ssh_host_rsa_key' >> /etc/ssh/sshd_config && \
    	# 生成密匙
    	ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key && \
    	# 更改root用户登录密码
    	echo 'root:123456' | chpasswd && \
    	echo '#!/bin/bash'>>/opt/run.sh && \
    	echo '/usr/sbin/sshd -D'>> /opt/run.sh && \
    	chmod +x /opt/run.sh	
    # 暴露22端口
    EXPOSE 22
    CMD ["/opt/run.sh"]
    

    运行docker build -t centos_hadoop:1.0 .,生成镜像。

2.构建docker-compose

  1. 编辑docker-compose.yml,搭建三个节点的集群

    hadoop102 hadoop103 hadoop104
    HDFS NameNode | DataNode DataNode SecondaryNameNode | DataNode
    YARN NodeManager ResourceManager | NodeManager NodeManager

Hadoop 3.x 中常用的端口如下:

  • 9870:NameNode Web 界面(HDFS)
  • 8088:ResourceManager Web 界面(YARN)
  • 9864:DataNode Web 界面(HDFS)
  • 8042:NodeManager Web 界面(YARN)
    docker-compose.yml
version: "3"
services:
  hadoop102:
    image: centos_hadoop:1.0
    container_name: hadoop102
    ports:
      - 9870:9870
      - 9000:9000
    hostname: hadoop102
    networks:
         my_network:
            ipv4_address: 172.19.0.102
    
  hadoop103:
    image: centos_hadoop:1.0
    container_name: hadoop103
    ports:
      - 9864:9864
      - 8088:8088
    hostname: hadoop103
    networks:
         my_network:
            ipv4_address: 172.19.0.103

  hadoop104:
    image: centos_hadoop:1.0
    container_name: hadoop104
    hostname: hadoop104
    networks:
         my_network:
            ipv4_address: 172.19.0.104
     

networks:
  my_network:
    ipam:
      driver: default
      config:
        - subnet: "172.19.0.0/16"

编辑好后使用docker-compose config -q 检查是否有错误输出,有错误请修改。
无错误使用docker-compose up -d 启动集群。

3.设置hadoop的配置并分发到其他机器

  1. 由于Dockerfile中ENV设置的环境变量在ssh登录环境中会失效,所以用下面的方法解决

    使用docker exec -it hadoop102 bash 进入hadoop102 ,

    vim /etc/profile.d/my_env.sh

    export HDFS_NAMENODE_USER=root
    export HDFS_DATANODE_USER=root
    export HDFS_SECONDARYNAMENODE_USER=root
    export YARN_RESOURCEMANAGER_USER=root
    export YARN_NODEMANAGER_USER=root
    
    export JAVA_HOME=/opt/service/jre1.8.0_361
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值