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


目录
相关文章
|
2月前
|
分布式计算 NoSQL Java
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
46 2
|
2月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
50 1
|
2月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
52 1
|
2月前
|
分布式计算 Hadoop 网络安全
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
38 1
|
2月前
|
存储 机器学习/深度学习 缓存
Hadoop-07-HDFS集群 基础知识 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
Hadoop-07-HDFS集群 基础知识 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
51 1
|
2月前
|
分布式计算 资源调度 Hadoop
Hadoop-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看
Hadoop-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看
52 1
|
2月前
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
51 0
|
4月前
|
存储 分布式计算 算法
探索Hadoop的三种运行模式:单机模式、伪分布式模式和完全分布式模式
在配置Hadoop集群之前,了解这三种模式的特点、适用场景和配置差异是非常重要的。这有助于用户根据个人需求和资源情况,选择最适合自己的Hadoop运行模式。在最初的学习和开发阶段,单机模式和伪分布式模式能为用户提供便利和成本效益。进而,当用户要处理大规模数据集时,完全分布式模式将是理想的选择。
234 2
|
4月前
|
存储 分布式计算 Hadoop
【揭秘Hadoop背后的秘密!】HDFS读写流程大曝光:从理论到实践,带你深入了解Hadoop分布式文件系统!
【8月更文挑战第24天】Hadoop分布式文件系统(HDFS)是Hadoop生态系统的关键组件,专为大规模数据集提供高效率存储及访问。本文深入解析HDFS数据读写流程并附带示例代码。HDFS采用NameNode和DataNode架构,前者负责元数据管理,后者承担数据块存储任务。文章通过Java示例演示了如何利用Hadoop API实现数据的写入与读取,有助于理解HDFS的工作原理及其在大数据处理中的应用价值。
112 1
|
4月前
|
存储 缓存 分布式计算