基于docker搭建简单的三节点hadoop集群

前期准备

事先准备一台安装docker了的虚拟机或者服务器

参考链接

参考链接:https://www.jianshu.com/p/30604c820e9d
但是该博客的搭建是伪分布式的hadoop集群,本文章是搭建真正的三节点hadoop集群

搭建步骤

获取镜像

docker pull sequenceiq/hadoop-docker

启动hadoop容器

docker run -it --name Master -h Master -p 50070:50070 5c3cc170c6bc /bin/bash
docker run -it --name Slave1 -h Slave1 -p 50071:8088 5c3cc170c6bc /bin/bash
docker run -it --name Slave2 -h Slave2 -p 50072:50070 5c3cc170c6bc /bin/bash

配置地址映射

将以上地址配置到各个容器的/etc/hosts文件中(注意各个容器的ip地址正确)

172.17.0.3      Master
172.17.0.4      Slave1
172.17.0.5      Slave2

配置hadoop环境变量

export HADOOP_HOME=hadoop文件路径
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

修改完之后需要运行脚本使得环境变量生效:
运行命令:source /etc/profile(如果登入容器发现环境变量消失了,可以再运行一次该命令。我在配置的时候是每次登入容器都会执行一次该命令的)

在所有容器中开启ssh服务

  • 开启ssh服务:
/etc/rc.d/init.d/sshd start
  • 设置开机启动ssh
chkconfig --level 2345 sshd on

配置ssh免密登录

doker容器登录不用密码,所以他们天然就实现了免密登录。如果需要配置免密登录的话参考:https://blog.csdn.net/weixin_49060400/article/details/108037854?spm=1001.2014.3001.5506 中的免密登录部分

编写配置文件

  • 这5个文件都在 hadoop安装目录/etc/hadoop/ 下
core-site.xml
<configuration>
 <property>
   <name>fs.defaultFS</name>
   <value>hdfs://Master:9000</value>
 </property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/hadoop/tmp</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/hadoop/data</value>
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>/hadoop/name</value>
  </property>
<!-- nn web端访问地址 -->
<property>
      <name>dfs.namenode.http-address</name>
      <value>Master:9870</value>
</property>

<!-- 2nn web端访问地址 -->
<property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>Master:9868</value>
</property>
</configuration>
mapred-site.xml
<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>
yarn-site.xml
<configuration>
 <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>Slave1</value>
</property>
</configuration>
slaves(这里不能有多余的字符)
Master
Slave1
Slave2

格式化nameNode

  • fs.defaultFS属性对应的主机,以上配置为在Master结点执行
hadoop namenode -format

启动hdfs

  • fs.defaultFS属性对应的主机,以上配置为在Master结点执行
$HADOOP_HOME/sbin/start-dfs.sh

启动yarn集群

  • yarn.resourcemanager.hostname属性对应的主机,以上配置为在Slave1中执行
$HADOOP_HOME/sbin/start-yarn.sh

检验是否成功

查看hdfs是否启动成功

点击以下链接:物理主机地址:50070
出现以下界面为成功:
在这里插入图片描述

查看yarn集群是否启动成功

点击以下链接:物理主机地址:50071
出现以下界面为成功:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是基于Docker搭建节点Hadoop集群的详细教程: 1. 安装DockerDocker Compose 首先您需要在每个节点上安装DockerDocker Compose。您可以使用以下命令来进行安装: ``` sudo apt-get update sudo apt-get install docker.io sudo systemctl start docker sudo systemctl enable docker sudo curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose ``` 2. 创建Docker镜像 在每个节点上,您需要创建一个Docker镜像。您可以使用以下命令来创建Docker镜像: ``` sudo docker pull sequenceiq/hadoop-docker:2.7.0 ``` 3. 创建Docker Compose文件 在每个节点上,您需要创建一个Docker Compose文件。您可以使用以下模板文件来创建Docker Compose文件: ``` version: '2.7' services: namenode: image: sequenceiq/hadoop-docker:2.7.0 container_name: namenode hostname: namenode ports: - "8088:8088" - "50070:50070" - "8020:8020" volumes: - ./hadoop:/opt/hadoop-2.7.0 environment: - CLUSTER_NAME=hadoop-cluster - NODE_TYPE=namenode datanode1: image: sequenceiq/hadoop-docker:2.7.0 container_name: datanode1 hostname: datanode1 ports: - "50075:50075" volumes: - ./hadoop:/opt/hadoop-2.7.0 environment: - CLUSTER_NAME=hadoop-cluster - NODE_TYPE=datanode datanode2: image: sequenceiq/hadoop-docker:2.7.0 container_name: datanode2 hostname: datanode2 ports: - "50075:50075" volumes: - ./hadoop:/opt/hadoop-2.7.0 environment: - CLUSTER_NAME=hadoop-cluster - NODE_TYPE=datanode ``` 在此文件中,您需要定义三个服务:namenode、datanode1、datanode2。您需要在每个服务中指定Docker镜像名称、容器名称、主机名、端口号、数据卷和环境变量。您需要将此文件保存为docker-compose.yml。 4. 启动集群 接下来,您需要在每个节点上使用以下命令来启动集群: ``` sudo docker-compose up -d ``` 这将启动集群并在后台运行。 5. 验证集群 最后,您需要验证Hadoop集群是否成功启动。您可以使用以下命令来验证: ``` sudo docker exec -it namenode bash hadoop fs -mkdir /test hadoop fs -ls / ``` 如果您在上述命令中看到/test目录,则表明您成功地启动Hadoop集群。 希望这个教程对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值