Docker + Hadoop 搭建完全分布式

简介: Docker + Hadoop 搭建完全分布式

系统部署

参考

Docker 下载:https://docs.docker.com/desktop/windows/install/


Docker 安装:https://www.runoob.com/docker/windows-docker-install.html


部署 Centos7

Docker 国内源

参考源



进入管理控制台 --> 产品与服务 --> 弹性计算 --> 容器镜像服务 --> 镜像加速器,复制自己的专属加速器地址。


添加


# Linux
vi /etc/docker/daemon.json
# MAC
请前往 Preferences -> Daemon 处设置


重启 docker


# Linux
systemctl restart docker


镜像部署

拉取


docker pull centos:centos7

检查本地镜像


docker images


启动

docker run -itd --name 「DIY Image Name」 centos:centos7 /bin/Bash

查看启动信息

docker ps

管理容器

docker start/kill/stop/rm 「CONTAINER ID」

进入容器

docker exec -it 「CONTAINER ID」 /bin/Bash


制作开发环境镜像

Centos 国内源

参考



基础工具安装

vim

Linux 最好用的文本编辑器

yum -y install vim

net-tools

Linux 网络管理工具

yum -y install net-tools

openssh-clients/openssh-server

ssh 客户端

yum -y install openssh-clients && yum -y install openssh-server

openssl

通过 SSL 保障,保证安全通信的软件库包

yum -y install openssl

wget

远程下载工具

yum -y install wget

开发工具安装

Mysql 安装

请参考我的另一篇文章:


《Hadoop 高并发集群 与 开发环境部署》第 5.1 小节


Java 安装

请参考我的另一篇文章:


《Hadoop 高并发集群 与 开发环境部署》第 5.2 小节


Python3 安装

请参考我的另一篇文章:


《Hadoop 高并发集群 与 开发环境部署》第 5.3 小节


Scala 安装

请参考我的另一篇文章:


《Hadoop 高并发集群 与 开发环境部署》第 5.4 小节


制作镜像

打包镜像

docker commit -a "「Image Name」" -m "「Comment」"  「CONTAINER ID」 「Image Name」:v「version」


开始生产集群

统一口径

创建网络

docker network create --subnet=192.168.10.1/24 「Net Name」

统一 IP 和 Host

NameNode
docker run -itd --name nn \
--privileged=true -p 50070:50070 -p 8080:8080\
--hostname nn \
--net hadoop --ip 192.168.10.10 \
--add-host dn1:192.168.10.11 \
--add-host dn2:192.168.10.12 \
-d 「Image Name」(记得带版本号)\
/usr/sbin/init


如果需要开放端口请添加-p参数内容为 容器内端口:映射至本机的端口

DataNode 1

docker run -itd --name dn1 \
--privileged=true \
--hostname dn1 \
--net hadoop --ip 192.168.10.11 \
--add-host nn:192.168.10.10 \
--add-host dn2:192.168.10.12 \
-d 「Image Name」(记得带版本号)\
/usr/sbin/init

DataNode 2

docker run -itd --name dn2 \
--privileged=true \
--hostname dn2 \
--net hadoop --ip 192.168.10.12 \
--add-host dn1:192.168.10.11 \
--add-host nn:192.168.10.10 \
-d 「Image Name」(记得带版本号)\
/usr/sbin/init


SSH 配置

请参考我的另一篇文章:


《Hadoop 高并发集群 与 开发环境部署》第 6.2.2 小节


Hadoop 完全分布式部署

准备

下载地址

wget https://dlcdn.apache.org/hadoop/common/hadoop-2.10.1/hadoop-2.10.1.tar.gz

准备目录

mkdir /usr/hadoop \
&& mkdir /usr/hadoop/tmp \
&& mkdir /usr/hadoop/hdfs/name \
&& mkdir /usr/hadoop/hdfs/data


环境变量请解压后自行配置


变量名请遵守:HADOOP_HOME


修改配置

地址:$HADOOP_HOME/etc/hadoop/


core-site.xml

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://nn:9000</value>
    </property>
</configuration>


hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/hadoop/hdfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/hadoop/hdfs/data</value>
    </property>
</configuration>


mapred-site.xml

复制 mapred-site.xml.template 为 mapred-site.xml


cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml
<configuration>
  <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
  </property>
   <property>
      <name>mapred.job.tracker</name>
      <value>http://nn:9001</value>
  </property>
</configuration>


yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>nn</value>
    </property>
</configuration>


masters

地址: $HADOOP_HOME/etc/hadoop/masters


内容:

nn

slaves

地址: $HADOOP_HOME/etc/hadoop/slaves


修改内容:

「datanode HOST 1」
「datanode HOST 2」
............
「datanode HOST n」


Hadoop-env.sh

前往该文件中添加 JAVA_HOME 避免出现识别不到 JDK 的情况


同步

使用 scp 命令同步所有变动文件


参考:

scp -r /usr/dt dn1:/usr/

检验

初始化 HDFS

hadoop namenode -format

启动 Hadoop

sh $HADOOP_HOME/sbin/start-all.sh

查看集群状态


hadoop dfsadmin -report


目录
相关文章
|
14天前
|
存储 分布式计算 Hadoop
Hadoop是一个强大的分布式系统基础架构
【6月更文挑战第17天】Hadoop是一个强大的分布式系统基础架构
115 53
|
9天前
|
分布式计算 资源调度 Hadoop
分布式系统详解--架构(Hadoop-克隆服务器)
分布式系统详解--架构(Hadoop-克隆服务器)
19 1
|
9天前
|
XML 分布式计算 Hadoop
分布式系统详解--框架(Hadoop-单机版搭建)
分布式系统详解--框架(Hadoop-单机版搭建)
31 0
分布式系统详解--框架(Hadoop-单机版搭建)
|
18天前
|
存储 分布式计算 安全
|
27天前
|
存储 分布式计算 Hadoop
使用Apache Hadoop进行分布式计算的技术详解
【6月更文挑战第4天】Apache Hadoop是一个分布式系统框架,应对大数据处理需求。它包括HDFS(分布式文件系统)和MapReduce编程模型。Hadoop架构由HDFS、YARN(资源管理器)、MapReduce及通用库组成。通过环境搭建、编写MapReduce程序,可实现分布式计算。例如,WordCount程序用于统计单词频率。优化HDFS和MapReduce性能,结合Hadoop生态系统工具,能提升整体效率。随着技术发展,Hadoop在大数据领域将持续发挥关键作用。
|
2月前
|
分布式计算 Hadoop 大数据
分布式计算框架比较:Hadoop、Spark 与 Flink
【5月更文挑战第31天】Hadoop是大数据处理的开创性框架,专注于大规模批量数据处理,具有高扩展性和容错性。然而,它在实时任务上表现不足。以下是一个简单的Hadoop MapReduce的WordCount程序示例,展示如何统计文本中单词出现次数。
83 0
|
9天前
|
存储 分布式计算 监控
分布式系统详解--框架(Hadoop-HDFS的HA搭建及测试)
分布式系统详解--框架(Hadoop-HDFS的HA搭建及测试)
21 0
|
9天前
|
分布式计算 资源调度 网络协议
分布式系统详解--框架(Hadoop--RPC协议)
分布式系统详解--框架(Hadoop--RPC协议)
13 0
|
9天前
|
分布式计算 Hadoop Java
分布式系统详解--框架(Hadoop--JAVA操作HDFS文件)
分布式系统详解--框架(Hadoop--JAVA操作HDFS文件)
17 0
|
9天前
|
分布式计算 Hadoop Shell
分布式系统详解--框架(Hadoop-基本shell命令)
分布式系统详解--框架(Hadoop-基本shell命令)
11 0