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端口问题

相关推荐
行思理27 分钟前
Docker 应该如何学习 分四个阶段
学习·docker·容器
兜兜风d'28 分钟前
RabbitMQ 七种工作模式全解析
分布式·rabbitmq
菜鸡儿齐1 小时前
kafka高可靠性
分布式·kafka
..Move...1 小时前
Docker应用部署tomcat和nginx
nginx·docker·tomcat
兜兜风d'4 小时前
RabbitMQ 持久性详解
spring boot·分布式·rabbitmq·1024程序员节
blammmp4 小时前
RabbitMQ :概述,Web界面介绍,快速上手,工作模式
java·分布式·rabbitmq
Jenwein4 小时前
Linux中使用docker的网络问题
后端·docker
Empty_7775 小时前
Ceph分布式存储
分布式·ceph
有谁看见我的剑了?5 小时前
Rocky 9 安装 Elasticsearch分布式集群基于非安全特性
分布式·安全·elasticsearch
java_logo5 小时前
Docker 部署 Debian 全流程教程
linux·运维·docker·容器·debian