ubuntu操作系统中docker下Hadoop分布式前置环境配置实验

版本:

centos7

hadoop 3.1.3

java JDK:1.8

集群规划:

|------|-------------------|----------------------------|---------------------------|
| | master | slave1 | slave2 |
| HDFS | NameNode DataNode | DataNode | SecondryNameNode DataNode |
| YARN | NodeManager | ResourceManage NodeManager | NodeManager |

1.docker容器:

把普通用户加入到docker组:

bash 复制代码
sudo  gpasswd -a $USER docker
newgrp docker

配置docker容器源:

bash 复制代码
 sudo vim /etc/docker/daemon.json
bash 复制代码
{
  "registry-mirrors" : [
    "http://registry.docker-cn.com",
    "http://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com",
    "https://nfesww3w.mirror.aliyuncs.com"
  ],
  "insecure-registries" : [
    "registry.docker-cn.com",
    "docker.mirrors.ustc.edu.cn"
  ],
  "debug" : true,
  "experimental" : true
}

重启docker服务:

bash 复制代码
sudo systemctl restart docker

查看docker状态:

bash 复制代码
ps -ef | grep docker

拉取centos7:7.5.1804镜像:

bash 复制代码
docker pull centos:7.5.1804

查看镜像:

bash 复制代码
docker images

创建容器:

bash 复制代码
docker run --name master -it centos:7.5.1804 /bin/bash
docker run --name slave1 -it centos:7.5.1804 /bin/bash
docker run --name slave2 -it centos:7.5.1804 /bin/bash

查看容器:

bash 复制代码
docker ps -a

启动容器:

bash 复制代码
docker start a08b

进入容器:

bash 复制代码
docker exec -it a08b00fdc6ce /bin/bash

2.配置ssh做免密登录:

由于最小化centos7,需安装 net-tools ,vim,openssh-server,oppenssh-clients

bash 复制代码
yum install -y net-tools
yum install -y vim
yum install -y  openssh-server
yum install -y  openssh-clients

查看每个容器中的ip

master:172.17.0.3

slave1:172.17.0.4

slave2:172.17.0.2

设置root密码为aaaaaa:

复制代码
sudo passwd

修改/etc/hosts:

bash 复制代码
vi /etc/hosts
bash 复制代码
172.17.0.4      slave1
172.17.0.2      slave2
172.17.0.3      master
                       

配置ssh公钥和私钥:(一路回车)

bash 复制代码
ssh-keygen -t rsa

暂时不知docker启动ssh方法

bash 复制代码
ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key
bash 复制代码
usr/sbin/sshd -D

启动后会卡住退出重启

ps -e 查看后台sshd服务已启动:

配置所有节点免密登录(包括自己):

bash 复制代码
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-di slave2

3.配置JAVA_HOME环境:

master :在/opt/目录下分别创建software和module文件夹:

bash 复制代码
 mkdir /opt/softwore
bash 复制代码
 mkdir /opt/module

将ubuntu的jdk拷贝到master /opt/software上:

bash 复制代码
docker cp jdk-8u212-linux-x64.tar.gz master:/opt/software

解压jdk到 /opt/module下:

bash 复制代码
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/

配置JAVA_HOME环境变量:

bash 复制代码
vi /etc/profile.d/my_env.sh

添加:

XML 复制代码
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

加载配置文件:

bash 复制代码
source /etc/profile

使用 java -version查看环境变量是否配置完成:

JAVA_HOME环境变量配置完毕

4 .配置hadoop_HOME环境:

将物理机的jar包拷贝到master/opt/module下:

bash 复制代码
docker cp hadoop-3.1.3.tar.gz master:/opt/software

解压到/opt/module 目录下:

bash 复制代码
 tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/

配置环境变量:

bash 复制代码
vi /etc/profile.d/my_env.sh
bash 复制代码
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

加载配置文件:

bash 复制代码
source /etc/profile

用hadoop -version查看环境是否配置完成:

HADOOP_HOME环境变量配置完成

注意:

注意 配置完成后 同步给其他节点

XML 复制代码
scp -r 要发送的内容 主机名:src

5.HADOOP_配置文件:

cd /opt/module/hadoop-3.1.3/etc/hadoop

core-site.xml:

XML 复制代码
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9820</value>
</property>
<property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
</property>

yarn-site.xml:

XML 复制代码
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>
<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>slave1</value>
</property>

<property>
	<name>yarn.nodemanager.env-whitelist</name>
	<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<property>
	<name>yarn.scheduler.minimum-allocation-mb</name>
	<value>512</value>
</property>
<property>
	<name>yarn.scheduler.maxmum-allocation-mb</name>
	<value>4096</value>
</property>
<property>
	<name>yarn.nodemanager.resource.memory-mb</name>
	<value>4096</value>
</property>
<property>
	<name>yarn.nodemanager.pmem-check-enabled</name>
	<value>false</value>
</property>
<property>
	<name>yarn.nodemanager.vmem-check-enabled</name>
	<value>false</value>
</property>

hdfs-site.xmlL:

XML 复制代码
<property>
	<name>dfs.namenode.name.http-address</name>
	<value>master:9870</value>
</property>
<property>
	<name>dfs.namenode.secondary.http-address</name>
	<value>slave2:9868</value>
</property>

maperd-site.xml:

XML 复制代码
<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>

配置完成后同步给其他节点

XML 复制代码
scp -r hadoop slave1:/opt/moder/hadoop3.1.3/etc

6.启动hadoop:

格式化hadoop :

XML 复制代码
hdfs namenode -format

在hadoop3.1.3下多出data和logs两个文件

格式化成功

启动 hadoop

在master节点下:

XML 复制代码
start-dfs.sh

好,启动失败

这是由于权限问题:

在每个节点增加用户:

XML 复制代码
useradd bigdata
passwd bigdata 111111

增加/opt /module的权限:

XML 复制代码
chown bigdata:bigdata /module

并使用bigdata用户给每个节点执行ssh免密

注意在每个节点都要执行

再次在master上启动:

XML 复制代码
start-dfs.sh

在slave1上启动:

XML 复制代码
start-yarn.sh

hadoop启动成功

总结:

hadoop 启动失败 datanode 挂掉两台

docker端口问题

相关推荐
G_H_S_3_1 小时前
【网络运维】Docker 存储:镜像层与数据卷的管理应用
linux·运维·网络·docker
❀͜͡傀儡师4 小时前
docker一键部署网页版Win11系统
运维·docker·容器
我爱学习好爱好爱4 小时前
Prometheus监控栈 监控数据库mysql
docker·grafana·prometheus
萌萌哒草头将军5 小时前
AudioDock:服务器和 NAS 音频播放最棒的软件!🚀🚀🚀
服务器·docker·node.js
IsPrisoner6 小时前
从 Docker 到 Kubernetes:一次“工程视角”的 K8s 核心概念深度梳理
docker·容器·kubernetes
2501_941148157 小时前
从边缘节点到云端协同的分布式缓存一致性实现原理实践解析与多语言代码示例分享笔记集录稿
笔记·分布式·物联网·缓存
看-清7 小时前
Docker离线安装部署xxl-job流程
运维·docker·容器
孤岛悬城8 小时前
47 Docker镜像编排
docker·容器·云计算
回家路上绕了弯8 小时前
分布式事务SAGA模式详解:长事务与复杂流程的柔性事务方案
分布式·后端
隔壁阿布都9 小时前
Docker 安装 MySQL 8.0
mysql·docker·容器