栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

windows平台使用Docker搭建分布式hadoop集群

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

windows平台使用Docker搭建分布式hadoop集群

先修篇

下载Docker可参考该博客的Docker安装
安装Docker可能遇到的一些问题可参考该博客的Docker安装问题

操作环境

  • windows : 10
  • Docker : 4.7.0
  • 将要拉取的镜像 : centos 7.6.1810
1. 安装centos 7.6镜像 1.1 搜索centos 7.6镜像
docker search centos7

1.2 拉取镜像
docker pull centos:7.6.1810
1.3 验证镜像安装成功
docker images

1.4 创建桥接网络(Docker默认使用桥接,此处亦使用桥接) 1.4.1 将网络名称命名为hadoop
docker network create -d bridge hadoop
1.4.2 查看网络hadoop
docker network inspect hadoop

1.5 运行镜像成容器
# 将本地目录A挂载至镜像centos:7.6.1810,并以特权模式在后台启动容器(命名为centos7)
docker run -v E:COURSEspark:/home -itd --privileged --name centos7 centos:7.6.1810 /usr/sbin/init


docker run参数

  • -v windows本地目录挂载至容器centos7的目录下
  • -itd 后台启动
  • –privileged 特权模式
  • –name 对容器起名
# 连接当前运行容器,获取bash
docker exec -it centos7 /bin/bash
2. 为搭建hadoop做准备 2.1 配置centos镜像

阿里centos 镜像源

2.1.1 备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2.1.2 下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
2.1.3 生成缓存
yum makecache
2.2 为root用户设置密码
yum -y install passwd
passwd root

2.3 安装工具

可不执行该语句

yum -y install vim passwd openssh-clients openssh-server net-tools
2.3.1 安装vim
yum install -y vim
2.2.2 安装open-ssh
yum install -y openssh-server openssh-clients

ssh-keygen命令常用选项:

  • -t TYPE:指定密钥加密类型
  • -P PASSWORD:指定私钥加密的密码,建议为空
  • -f FILENAME:指定密钥保存位置
  1. 配置ssh免密登录
ssh-keygen -t rsa -P ""
  1. 将公钥追加到authorized_keys 文件中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  1. 编辑文件
    PermitRootLogin yesPubkeyAuthentication yes的注释去掉
  2. 设置 SSH 服务为自启动
systemctl enable sshd.service
  1. 启动 SSH 服务
systemctl start sshd.service
  1. 免密登录自己(验证ssh是否配置成功)
ssh 127.0.0.1

2.2.3 安装JAVA

方式一 使用yum源安装

yum search java| grep jdk
yum install -y java-1.8.0-openjdk*
2.2.3.1. 寻找JAVA安装位置

第二条和第三条命令中具体ls 哪个目录, 视上一步输出结果而定

which java
ls -lr /usr/bin/java
ls -lr /etc/alternatives/java

2.2.3.2 由①寻得java安装目录为/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/jre/bin/java 2.2.3.3 配置有关java环境变量
vim /etc/profile

在末尾添加如下内容:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
2.2.3.4 验证
source /etc/profile
echo $JAVA_HOME

方式二 压缩包式安装

第一步 : Oracle JDK官网下载至(之前启动容器时挂载的目录A)

tar -zxvf /home/jdk-8u331-linux-x64.tar.gz -C /usr/local/
mv /usr/local/jdk-8u331-linux-x64 /usr/local/java

第二步 : 配置有关java环境变量

vim /etc/profile

在末尾添加如下内容:

export JAVA_HOME=/usr/local/java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

第三步 : 验证

source /etc/profile
echo $JAVA_HOME

2.2.4 将hadoop3.2.2解压至/usr/local目录下

此前启动容器时,将目录A(E:COURSEspark文件夹)挂载至容器的/home下
hadoop-3.2.3.tar.gz清华镜像站

tar -zxvf /home/hadoop-3.2.2.tar.gz -C /usr/local/
mv /usr/local/hadoop-3.2.2 /usr/local/hadoop
3. 搭建hadoop集群 3.1 修改文件 3.1.1 /etc/profile
vim /etc/profile

在末尾添加如下内容:

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_HOME=$HADOOP_HOME 
export HADOOP_PREFIX=$HADOOP_HOME 
export HADOOP_HDFS_HOME=$HADOOP_HOME 
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME 
export HADOOP_INSTALL=$HADOOP_HOME 
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native 
export HADOOP_CONF_DIR=$HADOOP_HOME 
export HADOOP_LIBEXEC_DIR=$HADOOP_HOME/libexec 
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop
export HDFS_DATANODE_USER=root
export HDFS_DATANODE_SECURE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export HDFS_NAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

使文件/etc/profile生效:

source /etc/profile
3.1.2 $HADOOP_HOME/etc/hadoop/hadoop-env.sh
vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh

在末尾添加如下内容:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64
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
3.1.3 $HADOOP_HOME/etc/hadoop/core-site.xml
vim $HADOOP_HOME/etc/hadoop/core-site.xml

将原文件的替换为如下内容:


    
        fs.default.name
        hdfs://node01:9000
    
    
        hadoop.tmp.dir      
        /home/hadoop/tmp
    
    
        io.file.buffer.size
        131702
    


3.1.4 $HADOOP_HOME/etc/hadoop/hdfs-site.xml
vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml

将原文件的替换为如下内容:


    
        dfs.namenode.name.dir
        file:/home/hadoop/hdfs_name
    
    
        dfs.datanode.data.dir
        file:/home/hadoop/hdfs_data
    
    
        dfs.replication
        2
    
    
        dfs.namenode.secondary.http-address
        node01:9001
    
    
        dfs.webhdfs.enabled
        true
    

3.1.5 $HADOOP_HOME/etc/hadoop/mapred-site.xml
vim $HADOOP_HOME/etc/hadoop/mapred-site.xml

将原文件的替换为如下内容:


	
        mapreduce.framework.name
        yarn
    
    
        mapreduce.jobhistory.address
        node01:10020
    
    
        mapreduce.jobhistory.webapp.address
        node01:19888
    
        
        mapreduce.application.classpath
        
            /usr/local/hadoop/etc/hadoop,
            /usr/local/hadoop/share/hadoop/common/*,
            /usr/local/hadoop/share/hadoop/common/lib/*,
            /usr/local/hadoop/share/hadoop/hdfs/*,
            /usr/local/hadoop/share/hadoop/hdfs/lib/*,
            /usr/local/hadoop/share/hadoop/mapreduce/*,
            /usr/local/hadoop/share/hadoop/mapreduce/lib/*,
            /usr/local/hadoop/share/hadoop/yarn/*,
            /usr/local/hadoop/share/hadoop/yarn/lib/*
        
    

3.1.6 $HADOOP_HOME/etc/hadoop/yarn-site.xml
vim $HADOOP_HOME/etc/hadoop/yarn-site.xml

将原文件的替换为如下内容:


    
  		yarn.resourcemanager.hostname
        node01
    
    
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    
    
        yarn.nodemanager.auxservices.mapreduce.shuffle.class
        org.apache.hadoop.mapred.ShuffleHandler
    
    
        yarn.resourcemanager.address
        node01:8032
    
    
        yarn.resourcemanager.scheduler.address
        node01:8030
    
    
        yarn.resourcemanager.resource-tracker.address
        node01:8031
    
    
        yarn.resourcemanager.admin.address
        node01:8033
    
    
        yarn.resourcemanager.webapp.address
        node01:8088
    

3.1.7 $HADOOP_HOME/etc/hadoop/workers
vim $HADOOP_HOME/etc/hadoop/workers

将原文件的替换为如下内容:

node02
node03
3.2 从容器中保存镜像
# 当前容器 可使用命令 docker ps 查看镜像ID
docker commit -m “hadoop” -a “hadoop“ 当前容器 目标镜像

本人此处命令为

docker commit -m “Deploy Hadoop based on centos” -a “CMCST“ centos7 hadoop_centos

docker commit :从容器创建一个新的镜像。

语法

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明说明
-a提交的镜像作者;
-c使用Dockerfile指令来创建镜像;
-m提交时的说明文字;
-p在commit时,将容器暂停
3.3 启动hadoop 3.3.1 运行Master节点: node01
docker run -itd --privileged --network hadoop -h "node01" --name "node01" -p 9870:9870 -p 8088:8088 -p 50070:50070 -p 9001:9001 -p 8030:8030 -p 8031:8031 -p 8032:8032 hadoop_centos /usr/sbin/init
3.3.2 运行Worker节点: node02
docker run -itd --privileged --network hadoop -h "node02" --name "node02" hadoop_centos /usr/sbin/init
3.3.3 运行Worker节点: node03
docker run -itd --privileged --network hadoop -h "node03" --name "node03" hadoop_centos /usr/sbin/init
3.3.4 修改文件/etc/hosts

获取node01、node02、node03的terminal

分别打开三个cmd窗口,分别执行

docker exec -it node01 /bin/bash
docker exec -it node02 /bin/bash
docker exec -it node03 /bin/bash

获取node01、node02、node03的IP地址

docker network inspect 网络名称
docker network inspect hadoop

在node01、node02、node03中修改文件/etc/hosts

vim /etc/hosts

在文件首部添加如下内容

172.18.0.2 node01
172.18.0.3 node02
172.18.0.4 node03
3.3.4 格式化[node1下]
/usr/local/hadoop/bin/hadoop namenode -format
3.3.5 启动hadoop集群[node1下]
/usr/local/hadoop/sbin/start.all.sh
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/843145.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号