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月前
|
存储 分布式计算 算法
探索Hadoop的三种运行模式:单机模式、伪分布式模式和完全分布式模式
在配置Hadoop集群之前,了解这三种模式的特点、适用场景和配置差异是非常重要的。这有助于用户根据个人需求和资源情况,选择最适合自己的Hadoop运行模式。在最初的学习和开发阶段,单机模式和伪分布式模式能为用户提供便利和成本效益。进而,当用户要处理大规模数据集时,完全分布式模式将是理想的选择。
81 2
|
2月前
|
存储 分布式计算 Hadoop
【揭秘Hadoop背后的秘密!】HDFS读写流程大曝光:从理论到实践,带你深入了解Hadoop分布式文件系统!
【8月更文挑战第24天】Hadoop分布式文件系统(HDFS)是Hadoop生态系统的关键组件,专为大规模数据集提供高效率存储及访问。本文深入解析HDFS数据读写流程并附带示例代码。HDFS采用NameNode和DataNode架构,前者负责元数据管理,后者承担数据块存储任务。文章通过Java示例演示了如何利用Hadoop API实现数据的写入与读取,有助于理解HDFS的工作原理及其在大数据处理中的应用价值。
58 1
|
2月前
|
存储 缓存 分布式计算
|
4月前
|
存储 分布式计算 Hadoop
Hadoop是一个强大的分布式系统基础架构
【6月更文挑战第17天】Hadoop是一个强大的分布式系统基础架构
150 53
|
2月前
|
Java Nacos Docker
"揭秘!Docker部署Seata遇上Nacos,注册成功却报错?这些坑你不得不防!一网打尽解决秘籍,让你的分布式事务稳如老狗!"
【8月更文挑战第15天】在微服务架构中,Nacos搭配Seata确保数据一致性时,Docker部署Seata后可能出现客户端连接错误,如“can not connect to services-server”。此问题多由网络配置不当、配置文件错误或版本不兼容引起。解决策略包括:调整Docker网络设置确保可达性;检查并修正`file.conf`和`registry.conf`中的Nacos地址和端口;验证Seata与Nacos版本兼容性;修改配置后重启服务;参考官方文档和最佳实践进行配置。通过这些步骤,能有效排除故障,保障服务稳定运行。
71 0
|
4月前
|
分布式计算 资源调度 Hadoop
分布式系统详解--架构(Hadoop-克隆服务器)
分布式系统详解--架构(Hadoop-克隆服务器)
48 1
|
4月前
|
XML 分布式计算 Hadoop
分布式系统详解--框架(Hadoop-单机版搭建)
分布式系统详解--框架(Hadoop-单机版搭建)
67 0
分布式系统详解--框架(Hadoop-单机版搭建)
|
4月前
|
存储 分布式计算 安全
|
4月前
|
存储 分布式计算 Hadoop
使用Apache Hadoop进行分布式计算的技术详解
【6月更文挑战第4天】Apache Hadoop是一个分布式系统框架,应对大数据处理需求。它包括HDFS(分布式文件系统)和MapReduce编程模型。Hadoop架构由HDFS、YARN(资源管理器)、MapReduce及通用库组成。通过环境搭建、编写MapReduce程序,可实现分布式计算。例如,WordCount程序用于统计单词频率。优化HDFS和MapReduce性能,结合Hadoop生态系统工具,能提升整体效率。随着技术发展,Hadoop在大数据领域将持续发挥关键作用。
|
5月前
|
分布式计算 Hadoop 大数据
分布式计算框架比较:Hadoop、Spark 与 Flink
【5月更文挑战第31天】Hadoop是大数据处理的开创性框架,专注于大规模批量数据处理,具有高扩展性和容错性。然而,它在实时任务上表现不足。以下是一个简单的Hadoop MapReduce的WordCount程序示例,展示如何统计文本中单词出现次数。
166 0
下一篇
无影云桌面