Docker搭建Hadoop集群

news2024/11/25 11:49:07

目录

1.拉取centos镜像

2.基础镜像配置(基于centos构建hadoopbase镜像)

3.集群环境配置

1.创建3个容器

2.配置网络

3.配置主机和ip的映射关系

4.配置3个节点的免密登录

4.搭建hadoop集群

1.安装hadoop

2.修改配置文件

3.分发Hadoop及配置文件my_env.sh

5.启动集群


集群规划:

 常用命令:

查看当前存在的 Docker 容器:docker ps -a

查看当前存在的 Docker 镜像:docker images

删除 Docker 容器:docker rm [容器ID或名称]

删除 Docker 镜像:docker rmi [镜像ID或名称]

关闭已经启动的 Docker 容器:docker stop [容器ID或名称]

前期准备,安装pipework和网桥

安装pipework:

安装网桥:yum install -y bridge-utils

1.拉取centos镜像

输入命令:docker pull centos:7.5.1804

2.基础镜像配置(基于centos构建hadoopbase镜像)

1.创建docker-hadoop文件夹

2.上传jdk安装包

在文件夹下创建Dockerfile文件

并将配置粘贴进去

FROM centos:7.5.1804
#安装JDK
RUN mkdir -p /opt/software && mkdir -p /opt/service
ADD jdk-8u311-linux-x64.tar.gz /opt/service
#安装语言包
RUN yum -y install kde-l10n-Chinese glibc-common vim
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
RUN echo "LANG=zh_CN.UTF-8" >>/etc/locale.conf
#解决login环境变量失效问题
RUN touch /etc/profile.d/my_env.sh
RUN echo -e "export LC_ALL=zh_CN.UTF-8\nexport JAVA_HOME=/opt/service/jdk1.8.0_311\nexport PATH=\$PATH:\$JAVA_HOME/bin" >>/etc/profile.d/my_env.sh
#安装ssh服务
#更换国内阿里云yum源
RUN curl -o /etc/yum.repos.d/Centos-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
RUN sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/Centos-Base.repo
RUN yum makecache
#安装sshd
RUN yum install -y openssh-server openssh-clients vim net-tools lrzsz
RUN sed -i '/^HostKey/'d /etc/ssh/sshd_config
RUN echo 'HostKey /etc/ssh/ssh_host_rsa_key'>>/etc/ssh/sshd_config
#生成 ssh-key
RUN ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key
#更改root用户名登陆密码为
RUN echo 'root:123456' | chpasswd
#声明22端口
EXPOSE 22
#容器运行时启动sshd
RUN mkdir -p /opt
RUN echo '#!/bin/bash' >> /opt/run.sh
RUN echo '/usr/sbin/sshd -D'>> /opt/run.sh
RUN chmod +x /opt/run.sh
CMD ["/opt/run.sh"]

 执行命令构建镜像:docker build -t hadoopbase:1.0 ./

 执行命令查看镜像:docker images

3.集群环境配置

1.创建3个容器

执行命令进行容器创建:

docker create -it --name hadoop102 -h hadoop102 hadoopbase:1.0

docker create -it --name hadoop103 -h hadoop103 hadoopbase:1.0

docker create -it --name hadoop104 -h hadoop104 hadoopbase:1.0

如下图:

2.配置网络

执行以下命令,在/usr/local/bin/目录下创建docker.sh文件,并将配置信息粘贴进去

#!/bin/bash
#启动容器
docker start hadoop102
docker start hadoop103
docker start hadoop104
#搭建网桥
brctl addbr br0; \
ip link set dev br0 up; \
ip addr del 192.168.88.108/24 dev ens33; \
ip addr add 192.168.88.108/24 dev br0; \
brctl addif br0 ens33; \
ip route add default via 192.168.88.1 dev br0
#睡5秒钟
sleep 5
#给容器配置ip和网关
pipework br0 hadoop102 192.168.88.102/24@192.168.88.1
pipework br0 hadoop103 192.168.88.103/24@192.168.88.1
pipework br0 hadoop104 192.168.88.104/24@192.168.88.1

安装结束后执行docker.sh

执行完成后,通过XShell链接3个容器如下:

3.配置主机和ip的映射关系

在102下输入vim /etc/hosts,如下:

192.168.88.102 hadoop102
192.168.88.103 hadoop103
192.168.88.104 hadoop104

 修改后如下:

在103和104中重复相同的操作

4.配置3个节点的免密登录

在hadoop102中生成公钥和私钥,输入ssh-keygen -t rsa  然后回车回车回车即可

继续在hadoop102中输入ssh-copy-id hadoop102进行配置,回车,yes,输入密码即可

继续输入命令ssh-copy-id hadoop103进行配置

继续输入命令ssh-copy-id hadoop104进行配置

 

 输入ssh hadoop103进行验证,成功登入,exit退回102

 验证成功后,相同的操作在Hadoop103和Hadoop104中进行配置

4.搭建hadoop集群

1.安装hadoop

将事先下载好的Hadoop3.1.3.tar.gz文件上传到hadoop102的/opt/software/目录下

解压并copy到/opt/service/这个目录下,如下:

将hadoop添加到环境变量中

 保存退出后执行source /etc/profile.d/my_env.sh

2.修改配置文件

修改core-site.xml文件

输入命令:cd /opt/service/hadoop-3.1.3/etc/hadoop/

进入该路径中,输入vim core-site.xml,将下面的配置信息编辑进去

<!-- 指定NameNode的地址 -->
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:8020</value>
</property>
<!-- 指定hadoop数据的存储目录 -->
<property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/service/hadoop-3.1.3/data</value>
</property>
<!-- 配置HDFS网页登录使用的静态用户为root -->
<property>
        <name>hadoop.http.staticuser.user</name>
        <value>root</value>
</property>

修改hdfs-site.xml        输入vim hdfs-site.xml

将下面的配置信息编辑进去

<!-- nn web端访问地址-->
<property>
	<name>dfs.namenode.http-address</name>
	<value>hadoop102:9870</value>
</property>
<!-- 2nn web端访问地址-->
<property>
	<name>dfs.namenode.secondary.http-address</name>
	<value>hadoop104:9868</value>
</property>
<!-- 测试环境指定HDFS副本的数量1 -->
<property>
	<name>dfs.replication</name>
	<value>1</value>
</property>

修改yarn-site.xml

输入vim yarn-site.xml        把下面的配置信息编辑进去  保存退出

<!-- 指定MR走shuffle-->
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址-->
<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>hadoop103</value>
</property>
<!-- 环境变量的继承 -->
<property>
	<name>yarn.nodemanager.env-whitelist</name>
	<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<!-- yarn容器允许分配的最大最小内存-->
<property>
	<name>yarn.scheduler.minimum-allocation-mb</name>
	<value>512</value>
</property>
<property>
	<name>yarn.scheduler.maximum-allocation-mb</name>
	<value>2048</value>
</property>
<!-- yarn容器允许管理的物理内存大小-->
<property>
	<name>yarn.nodemanager.resource.memory-mb</name>
	<value>4096</value>
</property>
<!-- 关闭yarn对虚拟内存的限制检查-->
<property>
	<name>yarn.nodemanager.vmem-check-enabled</name>
	<value>false</value>
</property>
<!-- 开启日志聚集功能 -->
<property>
	<name>yarn.log-aggregation-enable</name>
	<value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>
	<name>yarn.log.server.url</name>
	<value>http://hadoop102:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天(7*24*60*60) -->
<property>
	<name>yarn.log-aggregation.retain-seconds</name>
	<value>604800<</value>
</property>

修改mapred-site.xml文件

输入vim mapred-site.xml把下面的配置信息编辑进去

<!-- 指定MapReduce程序运行在Yarn 上 -->
<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
	<name>mapreduce.jobhistory.address</name>
	<value>hadoop102:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
	<name>mapreduce.jobhistory.webapp.address</name>
	<value>hadoop102:19888</value>
</property>

 修改workers

输入vim workers把localhost删掉,换成下面的配置信息

hadoop102
hadoop103
hadoop104

3.分发Hadoop及配置文件my_env.sh

执行命令

scp -r /opt/service/hadoop-3.1.3 hadoop103:/opt/service

scp -r /opt/service/hadoop-3.1.3 hadoop104:/opt/service

将hadoop分发到hadoop103和hadoop104中

执行命令

scp -r /etc/profile.d/my_env.sh hadoop103:/etc/profile.d

scp -r /etc/profile.d/my_env.sh hadoop104:/etc/profile.d

将my_env.sh分发到hadoop103和hadoop104中,分发完成后分别在103和104中执行

source /etc/profile.d/my_env.sh

5.启动集群

命令:

hdfs namenode -format

vim /opt/service/hadoop-3.1.3/etc/hadoop/hadoop-env.sh

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

配置完成后执行命令 start-dfs.sh  启动hdfs

将刚配置的文件分发到hadoop103和104中

scp -r /opt/service/hadoop-3.1.3/etc/hadoop/hadoop-env.sh hadoop103:/opt/service/hadoop-3.1.3/etc/hadoop

scp -r /opt/service/hadoop-3.1.3/etc/hadoop/hadoop-env.sh hadoop104:/opt/service/hadoop-3.1.3/etc/hadoop

然后在hadoop103上执行start-yarn.sh启动yarn

至此集群启动完成

查看web端hdfs,网址:http://192.168.88.102:9870/

查看yarn,网址 :http://192.168.88.103:8088/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/684773.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用CLion创建Cmake项目,使用GoogleTest和GoogleMock对代码进行测试

文章目录 1、环境准备2、CLion创建项目3、编写测试用例4、复杂测试用例 1、环境准备 注意版本匹配&#xff0c;我本地是g 8.1.0 的&#xff0c;最开始装了GoogleTest最新版1.10.0结果发现不能用&#xff0c;又回去下载旧的版本。g 8.1.0 应该可以使用 Google Test 1.8.1 版本。…

HLW8032交流电参数模块采样原理讲解

目录 一、文章概述 二、采样说明 1.采样方式 1.1隔离采样 电流型电压互感器&#xff1a; 1.2非隔离采样 2.采样范围 3.采样精度 三、数据说明 四、HLW8032模块说明 一、文章概述 本博文主要讲解HLW8032交流电参数模块的采样原理以及设计说明&#xff0c;才疏学浅&am…

微服务系列文章之 SpringCloud面试

1、什么是 Spring Cloud&#xff1f; Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序&#xff0c;提供与外部系统的集成。Spring cloud Task&#xff0c;一个生命周期短暂的微服务框架&#xff0c;用于快速构建执行有限数据处理的应用程序。 2、使…

团体程序设计天梯赛-练习集L2篇⑦

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;Hello大家好呀&#xff0c;我是陈童学&#xff0c;一个与你一样正在慢慢前行的普通人。 &#x1f3c0;个人主页&#xff1a;陈童学哦CSDN &#x1f4a1;所属专栏&#xff1a;PTA &#x1f381;希望各…

奇异值分解MVDR算法功率谱估计MATLAB完整程序分享

clear ;close all;clc; 产生输入信号 N 1024; %样本点数 snr[20 25 30]; %信噪比 n0:N-1; %数据轴 g100; %蒙特卡诺仿真次数 M14; %阶数 Pmvdr_szeros(3,1024); %存放MVDR谱 signal1 exp(1i*0.1…

Oracle-DG备库应用查询不到数据问题处理

背景: 一套准备上线的Oracle 11G RAC主备集群&#xff0c;应用报告说部分模块测试发现在备库查不到新插入的数据&#xff0c;而且问题发生的频率很高&#xff0c;需确认主备之间同步是否存在问题&#xff0c;此套主备之间同步采用SYNCAFFIRM模式 问题分析: 接到问题之后&#…

2022(二等奖)C2464植物保护管理系统

作品介绍 一、需求分析 1. 应用背景 森林是陆地生态系统的主体&#xff0c;是人类生存与发展的物质基础。以森林为主要经营对象的林业&#xff0c;不仅承担着生态建设的主要任务&#xff0c;而且承担着提供多种林产品的重大使命。进入21世纪&#xff0c;人类正在继农业文明和…

libevent(12)bufferevent的基础知识

一、bufferevent的基本概念 bufferevent 是 libevent 中的一个事件缓冲 IO&#xff0c;内部实现了基本 socket recv/send 操作 &#xff0c;用户只需要调用 bufferevent 的 API 即可实现数据的读写。 &#xff08;1&#xff09;缓冲区&#xff1a;每个 bufferevent 都有一个读…

Effective第三版 中英 | 避免使用终结方法和清理方法

文章目录 Effective第三版前言避免使用终结方法和清理方法&#xff08;Avoid finalizers and cleaners&#xff09;总结 Effective第三版 前言 大家好&#xff0c;这里是 Rocky 编程日记 &#xff0c;喜欢后端架构及中间件源码&#xff0c;目前正在阅读 effective-java 书籍。…

基于SpringBoot+vue的家乡特色推荐系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

【C语言督学训练营 第十五天】常用的查找算法----顺序查找、二分查找、二叉排序树

文章目录 前言一、顺序查找1,思想2.代码实战 二、二分查找1.思想2.代码实战 三、二叉排序树1.建树思想2.删除节点思想3.代码实战 考研真题实战 前言 本篇博客会介绍到数据结构中常用到的查找算法&#xff0c;合理的使用查找算法可以让我们很轻松找到自己想要的答案。本小节必须…

Java异常面试题

什么是Java异常机制 Java异常机制是java语言为我们提供一种异常处理机制&#xff0c;在java语言中&#xff0c;异常本身是一个类&#xff0c;产生异常就是创建异常对象并抛出这个异常对象&#xff0c;程序发生异常情况之后程序会抛出封装了错误信息的异常对象&#xff0c;程序…

python-线性规划

线性规划&#xff1a;定义&#xff1a;1 线性规划&#xff08;Linear programming,简称LP&#xff09;&#xff0c;是运筹学中研究较早、发展较快、应用广泛、方法较成熟的一个重要分支&#xff0c;是辅助人们进行科学管理的一种数学方法&#xff0c;是研究线性约束条件下线性…

WPF 零基础入门笔记(2):控件模板+数据模版

文章目录 文章合集地址WPF控价模版解决重复嵌套标签书写的问题实战 WPF数据绑定解决界面和业务数据沟通的问题 WPF数据模版数据模板解决数据的样式设置&#xff08;以CellTemplate为例&#xff09;数据模板和控件模板的区别ItemTemplate 元素模板ItemTemplate是用于绝大部分控件…

CAT1模块 EC800M HTTP使用总结记录

分享记录一下 CAT1 模块EC800 HTTP 协议使用流程 ...... by 矜辰所致目录 前言一、基础说明1.1 CAT1 与 4G1.2 EC800M 模块1.3 HTTP 二、开始使用2.1 硬件设计部分2.2 模块上电流程2.3 PDP 上下文2.3.1 什么是 SGSN 和 GGSN &#xff1f; 三、 HTTP 流程3.1 客户端3.1.1 PDP 上…

UFS 13 - Logical Unit Management

UFS 13 - Logical Unit Management 1 Introduction2 Logical Unit features3 Logical Unit Configuration 基于UFS 3.1 标准文档阐述 UFS 1-UFS架构简介1 UFS 2 -UFS架构简介2 UFS 3 - UFS RPMB UFS 4 - UFS Boot UFS 5 - UFS UIC Layer: MIPI M-PHY UFS 6 - UAP – SCSI Comma…

机器人工程创新类课程补充说明-2023-2

仅供参考 之前一篇&#xff1a;机器人工程创新类课程补充说明-2023- 自主学习→自主研究→自主创新&#xff0c;这是一个循序渐进的过程&#xff0c;着急没用的&#xff0c;大部分学生&#xff0c;都卡在第一个阶段&#xff0c;自主学习的效率比较低&#xff0c;并且成果不突出…

【C++ 程序设计】第 6 章:多态与虚函数

目录 一、多态的基本概念 &#xff08;1&#xff09;多态 &#xff08;2&#xff09;虚函数 &#xff08;3&#xff09;通过基类指针实现多态 &#xff08;4&#xff09;通过基类引用实现多态 &#xff08;5&#xff09;* 多态的实现原理 二、多态实例 三、多态的使用 …

docker启动的jenkins拉取gitee项目构建并部署

docker启动的jenkins拉取gitee项目构建并部署 docker 拉取jenkins https://hub.docker.com/r可以search不同的jenkins版本docker pull jenkins/jenkins创建挂载目录 /home/jenkins_home加权限chmod 777 /home/jenkins_homedocker run -di --namejenkins -p 9999:8080 -v /hom…

【json-server】centos线上环境搭建全攻略

▒ 目录 ▒ &#x1f6eb; 问题描述环境 1️⃣ 安装json-server安装nvm安装node安装json-server 2️⃣ json-server 使用创建json数据踩坑&#xff1a;指定host关闭防火墙云后台修改安全组规则最终命令行 &#x1f6ec; 结论&#x1f4d6; 参考资料 &#x1f6eb; 问题 描述 开…