macOS Big Sur系统基于docker部署Hadoop集群

博主部署环境的时候,本地系统环境版本为:macOS Big Sur 11.3.1

1. 集群环境要求

类别 版本
OS centos7
jdk jdk1.8
hadoop Hadoop2.9.2

2. 集群规划

集群服务器名称 IP 集群规划
linux001 172.16.0.2 namenode,datanode,nodemanager
linux002 172.16.0.3 Datanode,nodemanager
linux003 172.16.0.4 Datanode,nodemanager,ResourceManager,SecondNamenode

3. 环境准备

3.1 从docker-hub拉去系统镜像

docker pull centos:7

3.2 配置集群子网网络

docker network create --subnet=172.16.0.0/16 hadoopnetgroup

3.3 启动容器

docker run -d --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup --name hadoop-linux001 -h linux001 --net hadoopnetgroup --ip 172.16.0.2 -P -p 50070:50070 -p 8088:8088 centos:7 /usr/sbin/init

3.4 上传jdk安装包和hadoop的安装包到容器中

提前在镜像容器中/opt目录下创建所需要的目录

lagou/software --用于存放软件安装包

lagou/servers。 --用于安装需要的软件(jdk和hadoop)

docker cp jdk-8u231-linux-x64.tar.gz hadoop_linux001:/opt/lagou/software
docker cp hadoop-2.9.2.tar.gz hadoop_linux001:/opt/lagou/software 

jdk和hadoop的下载地址我放在了网盘里(由于笔者的mac系统是macOS Big Sur,是arm64架构的,所以jdk用的是jdk-8u291-linux-aarch64.tar.gz)

链接: https://pan.baidu.com/s/1rJH947bQzLNBnjNuMsDJFw 密码: ujqg

3.5解压安装jdk和hadoop

tar -zxvf jdk-8u231-linux-x64.tar.gz -C /opt/lagou/servers/
tar -zxvf hadoop-2.9.2.tar.gz -C /opt/lagou/servers/

3.6配置环境变量

##使用vi打开~/.bashrc,在文件末尾加上一下内容(docker容器在加载配置文件的是针对profile里面的修改不会自动加载,需要修改到.bashrc)

##JAVA_HOME
export JAVA_HOME=/opt/lagou/servers/jdk1.8.0_291
export PATH=:$JAVA_HOME/bin:$PATH

##HADOOP_HOME 
export HADOOP_HOME=/opt/lagou/servers/hadoop-2.9.2 
export PATH=$PATH:$HADOOP_HOME/bin 
export PATH=$PATH:$HADOOP_HOME/sbin


安装完成后,通过source命令使配置文件生效

source /etc/profile

校验安装结果是否正确:

java -version
截屏2021-05-11 23.35.20-0747577.png
hadoop version
截屏2021-05-11 23.39.00.png

以上能看到版本信息,就代表目前安装成功。

3.7 hadoop集群配置

集群配置

Hadoop集群配置 = HDFS集群配置 + MapReduce集群配置 + Yarn集群配置

  1. HDFS集群配置

    • 将JDK路径明确配置给HDFS(修改hadoop-env.sh)

      export JAVA_HOME=/opt/lagou/servers/jdk1.8.0_291
      
    • 指定NameNode节点以及数据存储目录(修改core-site.xml)

      
      
          fs.defaultFS
          hdfs://linux001:9000
      
      
      
          hadoop.tmp.dir
          /opt/lagou/servers/hadoop-2.9.2/data/tmp
      
      
  • 指定SecondaryNameNode节点(修改hdfs-site.xml)

    
    
        dfs.namenode.secondary.http-address
        linux003:50090
    
    
    
        dfs.replication
        3
    
    
  • 指定DataNode从节点(修改etc/hadoop/slaves文件,每个节点配置信息占一行)
  1. MapReduce集群配置

    • 将JDK路径明确配置给MapReduce(修改mapred-env.sh)

    • 指定MapReduce计算框架运行Yarn资源调度框架(修改mapred-site.xml)

      ##先通过cp命令copy一份配置
      cp mapred-site.xml.template mapred-site.xml
      
      vi mapred-site.xml
      
      
      
          mapreduce.framework.name
          yarn
      
      
  1. Yarn集群配置

    • 将JDK路径明确配置给Yarn(修改yarn-env.sh)

    • 指定ResourceManager老大节点所在计算机节点(修改yarn-site.xml)

      
      
          yarn.resourcemanager.hostname
          linux003
      
      
      
          yarn.nodemanager.aux-services
          mapreduce_shuffle
      
      
  • 指定NodeManager节点(会通过slaves文件内容确定,hdfs配置的时候已经修改过,无需重复配置

3.8保存容器配置,制作镜像文件

  1. 查看docker 容器CONTAINER ID

    docker ps -a
    
  2. 停止容器

    docker stop 5f2a776cd8ae
    
  3. 保存容器为新的镜像

    docker commit 5f2a776cd8ae hadoop-centos-master:v1.0
    
  4. 通过新的镜像文件启动集群

    docker run -d --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup --name hadoop-linux001 -h linux001 --net hadoopnetgroup --ip 172.16.0.2 -P -p 50070:50070 -p 8088:8088 hadoop-centos-master:v1.0 /usr/sbin/init
    
    docker run -d --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup --name hadoop-linux002 -h linux002 --net hadoopnetgroup --ip 172.16.0.3 -P hadoop-centos-master:v1.0 /usr/sbin/init
    
    docker run -d --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup --name hadoop-linux003 -h linux003 --net hadoopnetgroup --ip 172.16.0.4 -P hadoop-centos-master:v1.0 /usr/sbin/init
    
    

    到这里,集群基本安装完毕,剩下的就是调试和测试了。

3.9 安装其他工具

hadoop还需要依托一些工具才可以正常管理各个节点,所以下面我会列出一些我知道需要安装的工具,以供参考。

yum -y install wget
yum makecache               ##换源后建立本地缓冲区

#安装openssh

yum -y install openssh openssh-server openssh-clients

##启动sshd服务
systemctl start sshd

#配置ssh免密登陆

ssh-keygen -t rsa -P ""     ##生成rsa密钥   一路回车即可
cd ~/.ssh
cat id_rsa.pub >authorized_keys

#文件生成之后用scp将公钥文件分发到集群slave节点

ssh root@linux002 'mkdir ~/.ssh'
ssh root@linux003 'mkdir ~/.ssh'
scp ~/.ssh/authorized_keys root@linux002:~/.ssh
scp ~/.ssh/authorized_keys root@linux003:~/.ssh

#验证免密登陆是否成功

#安装网络工具

yum install -y net-tools    

#安装rsync用于后续同步脚本

yum install -y rsync
rsync --daemon

4. 启动集群

4.1 格式化hdfs

hadoop namenode -format     

看到common.Storage: Storage directory /opt/lagou/servers/hadoop-2.9.2/data/tmp/dfs/name has been successfully formatted.表示格式化成功。

截屏2021-05-12 00.31.40.png

4.2 启动hdfs

cd $HADOOP_HOME/sbin
sh start-dfs.sh

#jsp检查启动情况

截屏2021-05-12 10.13.35.png

#同理检查linux002和linux003

#通过页面也能查看hdfs启动情况

访问地址:http://localhost:50070

截屏2021-05-12 10.19.28.png

4.3启动yarn

sh start-yarn.sh

#检查yarn启动情况同样适用jps可以查看

截屏2021-05-12 10.27.15.png

页面查看yarn

截屏2021-05-12 10.33.08.png

异常问题处理记录:

问题:java -version或者hadoop version出现/lib64/ld-linux-x86-64.so.2: No such file or directory

解决方案:检查内核,使用正确的内核版本jdk的包。

检查命令:arch

你可能感兴趣的:(macOS Big Sur系统基于docker部署Hadoop集群)