windows平台使用Docker搭建分布式hadoop集群
先修篇
下载Docker可参考该博客的Docker安装
安装Docker可能遇到的一些问题可参考该博客的Docker安装问题
操作环境
- windows : 10
- Docker : 4.7.0
- 将要拉取的镜像 : centos 7.6.1810
1. 安装centos 7.6镜像
1.1 搜索centos 7.6镜像
docker search centos7
1.2 拉取镜像
docker pull centos:7.6.1810
1.3 验证镜像安装成功
docker images
1.4 创建桥接网络(Docker默认使用桥接,此处亦使用桥接)
1.4.1 将网络名称命名为hadoop
docker network create -d bridge hadoop
1.4.2 查看网络hadoop
docker network inspect hadoop
1.5 运行镜像成容器
# 将本地目录A挂载至镜像centos:7.6.1810,并以特权模式在后台启动容器(命名为centos7)
docker run -v E:\COURSE\spark:/home -itd --privileged --name centos7 centos:7.6.1810 /usr/sbin/init
docker run参数
- -v windows本地目录挂载至容器centos7的目录下
- -itd 后台启动
- –privileged 特权模式
- –name 对容器起名
# 连接当前运行容器,获取bash
docker exec -it centos7 /bin/bash
2. 为搭建hadoop做准备
2.1 配置centos镜像
阿里centos 镜像源
2.1.1 备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2.1.2 下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
2.1.3 生成缓存
yum makecache
2.2 为root用户设置密码
yum -y install passwd
passwd root
2.3 安装工具
可不执行该语句
yum -y install vim passwd openssh-clients openssh-server net-tools
2.3.1 安装vim
yum install -y vim
2.2.2 安装open-ssh
yum install -y openssh-server openssh-clients
ssh-keygen命令常用选项:
- -t TYPE:指定密钥加密类型
- -P PASSWORD:指定私钥加密的密码,建议为空
- -f FILENAME:指定密钥保存位置
- 配置ssh免密登录
ssh-keygen -t rsa -P ""
- 将公钥追加到authorized_keys 文件中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- 编辑文件/etc/ssh/sshd_config
vim /etc/ssh/sshd_config
将PermitRootLogin yes、PubkeyAuthentication yes的注释去掉
4. 设置 SSH 服务为自启动
systemctl enable sshd.service
- 启动 SSH 服务
systemctl start sshd.service
- 免密登录自己(验证ssh是否配置成功)
ssh 127.0.0.1
2.2.3 安装JAVA
方式一 使用yum源安装
yum search java| grep jdk
yum install -y java-1.8.0-openjdk*
2.2.3.1. 寻找JAVA安装位置
第二条和第三条命令中具体ls 哪个目录, 视上一步输出结果而定
which java
ls -lr /usr/bin/java
ls -lr /etc/alternatives/java
2.2.3.2 由①寻得java安装目录为/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64/jre/bin/java
2.2.3.3 配置有关java环境变量
vim /etc/profile
在末尾添加如下内容:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
2.2.3.4 验证
source /etc/profile
echo $JAVA_HOME
方式二 压缩包式安装
第一步 : Oracle JDK官网下载至(之前启动容器时挂载的目录A)
tar -zxvf /home/jdk-8u331-linux-x64.tar.gz -C /usr/local/
mv /usr/local/jdk-8u331-linux-x64 /usr/local/java
第二步 : 配置有关java环境变量
vim /etc/profile
在末尾添加如下内容:
export JAVA_HOME=/usr/local/java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
第三步 : 验证
source /etc/profile
echo $JAVA_HOME
2.2.4 将hadoop3.2.2解压至/usr/local目录下
此前启动容器时,将目录A(E:\COURSE\spark文件夹)挂载至容器的/home下
hadoop-3.2.3.tar.gz清华镜像站
tar -zxvf /home/hadoop-3.2.2.tar.gz -C /usr/local/
mv /usr/local/hadoop-3.2.2 /usr/local/hadoop
3. 搭建hadoop集群
3.1 修改文件
3.1.1 /etc/profile
vim /etc/profile
在末尾添加如下内容:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_PREFIX=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_CONF_DIR=$HADOOP_HOME
export HADOOP_LIBEXEC_DIR=$HADOOP_HOME/libexec
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop
export HDFS_DATANODE_USER=root
export HDFS_DATANODE_SECURE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export HDFS_NAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
使文件/etc/profile生效:
source /etc/profile
3.1.2 $HADOOP_HOME/etc/hadoop/hadoop-env.sh
vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
在末尾添加如下内容:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
3.1.3 $HADOOP_HOME/etc/hadoop/core-site.xml
vim $HADOOP_HOME/etc/hadoop/core-site.xml
将原文件的<configuration></configuration>替换为如下内容:
<configuration><property><name>fs.default.name</name><value>hdfs://node01:9000</value></property><property><name>hadoop.tmp.dir</name> <value>/home/hadoop/tmp</value></property><property><name>io.file.buffer.size</name><value>131702</value></property>
</configuration>
3.1.4 $HADOOP_HOME/etc/hadoop/hdfs-site.xml
vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml
将原文件的<configuration></configuration>替换为如下内容:
<configuration><property><name>dfs.namenode.name.dir</name><value>file:/home/hadoop/hdfs_name</value></property><property><name>dfs.datanode.data.dir</name><value>file:/home/hadoop/hdfs_data</value></property><property><name>dfs.replication</name><value>2</value></property><property><name>dfs.namenode.secondary.http-address</name><value>node01:9001</value></property><property><name>dfs.webhdfs.enabled</name><value>true</value></property>
</configuration>
3.1.5 $HADOOP_HOME/etc/hadoop/mapred-site.xml
vim $HADOOP_HOME/etc/hadoop/mapred-site.xml
将原文件的<configuration></configuration>替换为如下内容:
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><value>node01:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>node01:19888</value></property><property><name>mapreduce.application.classpath</name><value>/usr/local/hadoop/etc/hadoop,/usr/local/hadoop/share/hadoop/common/*,/usr/local/hadoop/share/hadoop/common/lib/*,/usr/local/hadoop/share/hadoop/hdfs/*,/usr/local/hadoop/share/hadoop/hdfs/lib/*,/usr/local/hadoop/share/hadoop/mapreduce/*,/usr/local/hadoop/share/hadoop/mapreduce/lib/*,/usr/local/hadoop/share/hadoop/yarn/*,/usr/local/hadoop/share/hadoop/yarn/lib/*</value></property>
</configuration>
3.1.6 $HADOOP_HOME/etc/hadoop/yarn-site.xml
vim $HADOOP_HOME/etc/hadoop/yarn-site.xml
将原文件的<configuration></configuration>替换为如下内容:
<configuration><property><name>yarn.resourcemanager.hostname</name><value>node01</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value></property><property><name>yarn.resourcemanager.address</name><value>node01:8032</value></property><property><name>yarn.resourcemanager.scheduler.address</name><value>node01:8030</value></property><property><name>yarn.resourcemanager.resource-tracker.address</name><value>node01:8031</value></property><property><name>yarn.resourcemanager.admin.address</name><value>node01:8033</value></property><property><name>yarn.resourcemanager.webapp.address</name><value>node01:8088</value></property>
</configuration>
3.1.7 $HADOOP_HOME/etc/hadoop/workers
vim $HADOOP_HOME/etc/hadoop/workers
将原文件的替换为如下内容:
node02
node03
3.2 从容器中保存镜像
# 当前容器 可使用命令 docker ps 查看镜像ID
docker commit -m “hadoop” -a “hadoop“ 当前容器 目标镜像
本人此处命令为
docker commit -m “Deploy Hadoop based on centos” -a “CMCST“ centos7 hadoop_centos
docker commit :从容器创建一个新的镜像。
语法
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明 | 说明 |
---|---|
-a | 提交的镜像作者; |
-c | 使用Dockerfile指令来创建镜像; |
-m | 提交时的说明文字; |
-p | 在commit时,将容器暂停 |
3.3 启动hadoop
3.3.1 运行Master节点: node01
docker run -itd --privileged --network hadoop -h "node01" --name "node01" -p 9870:9870 -p 8088:8088 -p 50070:50070 -p 9001:9001 -p 8030:8030 -p 8031:8031 -p 8032:8032 hadoop_centos /usr/sbin/init
3.3.2 运行Worker节点: node02
docker run -itd --privileged --network hadoop -h "node02" --name "node02" hadoop_centos /usr/sbin/init
3.3.3 运行Worker节点: node03
docker run -itd --privileged --network hadoop -h "node03" --name "node03" hadoop_centos /usr/sbin/init
3.3.4 修改文件/etc/hosts
获取node01、node02、node03的terminal
分别打开三个cmd窗口,分别执行
docker exec -it node01 /bin/bash
docker exec -it node02 /bin/bash
docker exec -it node03 /bin/bash
获取node01、node02、node03的IP地址
docker network inspect 网络名称
docker network inspect hadoop
在node01、node02、node03中修改文件/etc/hosts
vim /etc/hosts
在文件首部添加如下内容
172.18.0.2 node01
172.18.0.3 node02
172.18.0.4 node03
3.3.4 格式化[node1下]
/usr/local/hadoop/bin/hadoop namenode -format
3.3.5 启动hadoop集群[node1下]
/usr/local/hadoop/sbin/start.all.sh
windows平台使用Docker搭建分布式hadoop集群相关推荐
- windows平台使用Docker搭建分布式Spark 与 hadoop集群
若不关心具体搭建过程,只想运行分布式集群,请直接前往3.2开始 (本人已上传镜像至服务器) 续前节 windows平台使用Docker搭建分布式hadoop集群 安装分布式Spark篇 1. 运行wi ...
- 学习Docker容器网络模型 - 搭建分布式Zookeeper集群
ZooKeeper是一个流行的分布式协调服务.它提供了两种不同的部署方式:单机模式和分布式模式.其中单机模式的部署非常简单,网上也有很多资料,我们今天会利用Docker搭建分布式Zookeeper集群 ...
- 使用Docker Swarm搭建分布式爬虫集群
转载自 使用Docker Swarm搭建分布式爬虫集群 在爬虫开发过程中,你肯定遇到过需要把爬虫部署在多个服务器上面的情况.此时你是怎么操作的呢?逐一SSH登录每个服务器,使用git拉下代码,然后运 ...
- 高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南
原文:http://my.oschina.net/wstone/blog/365010#OSC_h3_13 (WJW)高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南 [X] ...
- 从零搭建生产Hadoop集群(五)——CDH集群修改主机名与IP
从零搭建生产Hadoop集群(五)--CDH集群修改主机名与IP 一.概述 二.完整步骤 1.官网推荐步骤: (1)验证下SSL/TLS认证是否所有服务都有配备,确认创建新的SSL/TLS认证. (2 ...
- [416]使用Docker Swarm搭建分布式爬虫集群
在爬虫开发过程中,你肯定遇到过需要把爬虫部署在多个服务器上面的情况.此时你是怎么操作的呢?逐一SSH登录每个服务器,使用git拉下代码,然后运行?代码修改了,于是又要一个服务器一个服务器登录上去依次更 ...
- 完全分布式Hadoop集群搭建
环境说明 操作系统:CentOS 8 x86_64 Hadoop版本:2.10.1 节点数:3 服务器规划: node1 node2 node3 199.188.166.111 199.188.166 ...
- 配置伪分布式hadoop集群(附常见配置问题)
配置伪分布式hadoop并运行wordcount程序 ps:本教程在虚拟机和阿里云服务器上都配置成功,建议使用虚拟机(容易成功).本实验最后将运行hadoop自带的wordcount程序用以检验配置是 ...
- Hadoop详解(五)——ZooKeeper详解,ZooKeeper伪分布搭建和集群搭建,Hadoop集群搭建,sqoop工具的使用
ZooKeeper简介 什么是ZooKeeper? ZooKeeper是Google的Chubby一个开源的实现,是Hadoop分布式协调服务. 它包含了一个简单的原语集,分布式应用程序可以基于它实现 ...
- Hadoop(六)搭建分布式HBase集群
接上一章节,在单机版的HBase中,HMaster,HRegionServer,Zookeeper都在一个JVM进程中运行,通过两个阶段来搭建.学习分布式的HBase,伪分布式和分布式. 一,伪分布式 ...
最新文章
- STM32F1与STM32F0在GPIO_TypeDef 寄存器方面的不同
- 新事务不能登记到指定的事务处理器中异常的处理----MSDTC的正确配置
- python3安装mysqlclient_Python3 安装mysqlclient错误处理(MAC版)
- oracle dg snapshot,Oracle Broker Snapshot Standby测试
- Java(4)---Java 对象和类
- html标题代码字号,HTML 标题
- WSL1安装GUI界面
- apache+gzip+ssl网页压缩率50%
- 【Python实例第31讲】递归的特征消除法
- MongoDB在Windows环境下部署
- 华云数据收购国际超融合软件厂商Maxta全部资产
- B/S、C/S架构与视频对话技术
- 论文翻译:Associative Embedding:End-to-End Learning for Joint Detection and Grouping
- Sprite Atlas与Sprite Mask详解
- C语言的字符串的联接
- 如何合理选择 PLC
- WAP手机上的问卷调查系统的构建
- 关于动词ます形的相关知识延伸
- 刷机后连接上wifi提示网络访问受限时间不同步问题解决方法小米8刷魔趣WIFI无法联网解决方法
- 要怎么才能有效降低论文的查重率呢?
热门文章
- 彻底删除双系统的解决办法(UEFI启动)
- spss变量视图转数据视图_教大家SPSS如何导入数据进行分析
- html设置背景图片颜色,CSS设置背景图片及背景颜色示例
- ambari mysql 开机自动启动_ambari的服务启动顺序如何设置
- 幂级数展开求积分_蛮力硬推定积分基本公式
- Microsoft Office Word无法执行语言识别怎么办
- python黑白方格画
- Python 使用openpyxl处理Excel文件
- msxml6 C++
- 应用计算机测定线性电阻伏安特性实验结论,线性电阻和非线性电阻伏安特性曲线测定实验报告(共8篇).docx...