大数据云计算——Docker环境下部署Hadoop集群及运行集群案列

大数据云计算——Docker环境下部署Hadoop集群及运行集群案列


本文着重介绍了在Docker环境下部署Hadoop集群以及实际案例中的集群运行。首先,文章详细解释了Hadoop的基本概念和其在大数据处理中的重要性,以及为何选择在Docker环境下部署Hadoop集群。接着,阐述了在Docker中配置和启动Hadoop集群所需的步骤和技术要点。
在展示部署过程中,文章包含了针对Docker容器的Hadoop组件设置,并指导读者如何通过Docker Compose或其他相关工具建立一个多节点的Hadoop集群。特别强调了节点间的通信和配置,确保集群可以有效协同工作。
进一步,本文通过案例描述了在已搭建的Hadoop集群上运行的具体应用场景。案例可能涉及到数据存储、MapReduce任务或其他Hadoop支持的数据处理方式。这些案例旨在展示Hadoop集群在实际大数据处理中的应用和价值。
通过本文,读者可以深入了解如何利用Docker环境快速搭建Hadoop集群,并通过案例展示集群的运行过程,为大数据云计算中的Hadoop应用提供了实用的指导和参考。

首先查看版本环境(docker中没有下载docker和docker-compose的可以看我上一篇博客
Linux 安装配置Docker 和Docker compose 并在docker中部署mysql和中文版portainer图形化管理界面

查看docker和docker-compose版本:

 docker version
docker-compose version

OK,环境没问题,我们正式开始Docker中部署hadoop

<Docker中部署Hadoop>

更新系统

sudo apt update

sudo apt upgrade

国内加速镜像下载修改仓库源

创建或修改 /etc/docker/daemon.json 文件

sudo vi /etc/docker/daemon.json
{"registry-mirrors": [ "http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com","https://kfp63jaj.mirror.aliyuncs.com"]
}

重载docker让CDN配置生效

sudo systemctl daemon-reload
sudo systemctl restart docker

抓取ubuntu 20.04的镜像作为基础搭建hadoop环境

sudo docker pull ubuntu:20.04

使用该ubuntu镜像启动,填写具体的path替代

sudo docker run -it -v <host-share-path>:<container-share-path> ubuntu

例如

sudo docker run -it -v ~/hadoop/build:/home/hadoop/build ubuntu

 

容器启动后,会自动进入容器的控制台

在容器的控制台安装所需软件

apt-get update

apt-get upgrade

 安装所需软件

apt-get install net-tools vim openssh-server

 

/etc/init.d/ssh start

让ssh服务器自动启动

vi ~/.bashrc

在文件的最末尾按O进入编辑模式,加上:

/etc/init.d/ssh start

 

按ESC返回命令模式,输入:wq保存并退出。

让修改即刻生效

source ~/.bashrc

配置ssh的无密码访问

ssh-keygen -t rsa

连续按回车

cd ~/.ssh
cat id_rsa.pub >> authorized_keys

进入docker中ubuntu里面的容器

docker start 11f9454b301f
docker exec -it clever_gauss  bash

安装JDK 8

hadoop 3.x目前仅支持jdk 7, 8

apt-get install openjdk-8-jdk

在环境变量中引用jdk,编辑bash命令行配置文件

vi ~/.bashrc

在文件的最末尾加上

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/export PATH=$PATH:$JAVA_HOME/bin

让jdk配置即刻生效

source ~/.bashrc

测试jdk正常运作

java -version

将当前容器保存为镜像

sudo docker commit <CONTAINER ID> <IMAGE NAME> #自己起的镜像名字

 sudo docker commit 11f9454b301f  ubuntu204 #我的是ubuntu204

 可以看到该镜像已经创建成功,下次需要新建容器时可直接使用该镜像

注意!!!此过程的两个相关路径如下(不要搞混了):
<host-share-path>指的是~/hadoop/build
<container-share-path>指的是/home/hadoop/build

下载hadoop,下面以3.2.3为例

https://hadoop.apache.org/releases.html

cd  ~/hadoop/build
wget https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.2.3/hadoop-3.2.3.tar.gz

(这种方法能下载但是会出现下载的包大小不对,我们可以用第二种方法)

方法二:

在自己电脑浏览器输入下载https://dlcdn.apache.org/hadoop/common/hadoop-3.2.3/hadoop-3.2.3.tar.gz

下载到自己电脑上 通过winscp上传到虚拟机中

然后有安装包的目录打开终端, 输入

sudo mv hadoop-3.2.3.tar.gz ~/hadoop/build

移动文件到目录 ~/hadoop/build

在容器控制台上解压hadoop(就是之前创建的容器的控制台,不是自己的控制台!

docker start 11f9454b301f
docker exec -it clever_gauss  bash
cd /home/hadoop/build
tar -zxvf hadoop-3.2.3.tar.gz -C /usr/local

 

安装完成了,查看hadoop版本

cd /usr/local/hadoop-3.2.3
./bin/hadoop version

为hadoop指定jdk位置

vi etc/hadoop/hadoop-env.sh

查找到被注释掉的JAVA_HOME配置位置,更改为刚才设定的jdk位置

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/

hadoop联机配置

配置core-site.xml文件

vi etc/hadoop/core-site.xml

加入:

<configuration><property><name>hadoop.tmp.dir</name><value>file:/usr/local/hadoop-3.2.3/tmp</value><description>Abase for other temporary directories.</description></property><property><name>fs.defaultFS</name><value>hdfs://master:9000</value></property>
</configuration>

配置hdfs-site.xml文件

vi etc/hadoop/hdfs-site.xml

加入

<configuration><!--- 配置保存Fsimage位置 --><property><name>dfs.namenode.name.dir</name><value>file:/usr/local/hadoop-3.2.3/namenode_dir</value></property><!--- 配置保存数据文件的位置 --><property><name>dfs.datanode.data.dir</name><value>file:/usr/local/hadoop-3.2.3/datanode_dir</value></property><property><name>dfs.replication</name><value>3</value></property>
</configuration>

MapReduce配置

该配置文件的定义:

https://hadoop.apache.org/docs/r<Hadoop版本号>/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

配置mapred-site.xml文件

vi etc/hadoop/mapred-site.xml

加入: 

<configuration><!--- mapreduce框架的名字 --><property><name>mapreduce.framework.name</name><value>yarn</value></property><! -- 设定HADOOP的位置给yarn和mapreduce程序 --><property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value></property><property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value></property><property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value></property>
</configuration>

配置yarn-site.xml文件

vi etc/hadoop/yarn-site.xml

 加入

<configuration>
<!-- Site specific YARN configuration properties --><!-- 辅助服务,数据混洗 --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.resourcemanager.hostname</name><value>master</value></property>
</configuration>

服务启动权限配置

配置start-dfs.sh与stop-dfs.sh文件

vi sbin/start-dfs.sh 和 vi sbin/stop-dfs.sh
vi sbin/start-dfs.sh
HDFS_DATANODE_USER=rootHADOOP_SECURE_DN_USER=hdfsHDFS_NAMENODE_USER=rootHDFS_SECONDARYNAMENODE_USER=root

继续修改配置文件

vi sbin/stop-dfs.sh
HDFS_DATANODE_USER=rootHADOOP_SECURE_DN_USER=hdfsHDFS_NAMENODE_USER=rootHDFS_SECONDARYNAMENODE_USER=root

配置start-yarn.sh与stop-yarn.sh文件

vi sbin/start-yarn.sh 和 vi sbin/stop-yarn.sh
vi sbin/start-yarn.sh
YARN_RESOURCEMANAGER_USER=rootHADOOP_SECURE_DN_USER=yarnYARN_NODEMANAGER_USER=root

vi sbin/stop-yarn.sh
YARN_RESOURCEMANAGER_USER=rootHADOOP_SECURE_DN_USER=yarnYARN_NODEMANAGER_USER=root

 核心文件一定不能配错,否则后面会出现很多问题!

配置完成,保存镜像

docker ps

docker commit 11f9454b301f ubuntu-myx

保存的镜像名为 ubuntu-myx

 

启动hadoop,并进行网络配置

打开三个宿主控制台,启动一主两从三个容器

master

打开端口映射:8088 => 8088

sudo docker run -p 8088:8088 -it -h master --name master ubuntu-myx

启动节点worker01

sudo docker run -it -h worker01 --name worker01 ubuntu-myx

节点worker02

sudo docker run -it -h worker02 --name worker02 ubuntu-myx

分别打开三个容器的/etc/hosts,将彼此的ip地址与主机名的映射信息补全(三个容器均需要如此配置)

vi /etc/hosts

使用以下命令查询ip

ifconfig

添加信息(每次容器启动该文件都需要调整)

172.17.0.3      master

172.17.0.4      worker01

172.17.0.5      worker02

 

检查配置是否有效

ssh master
ssh worker01
ssh worker02

master 连接worker01节点successfully:

worker01节点连接master 成功:

  worker02连接worker01节点successfully:

在master容器上配置worker容器的主机名

cd /usr/local/hadoop-3.2.3
vi etc/hadoop/workers

删除localhost,加入

worker01

worker02

网络配置完成

启动hadoop

在master主机上

cd /usr/local/hadoop-3.2.3
./bin/hdfs namenode -format

正常启动 

启动服务

./sbin/start-all.sh

效果如下表示正常

在hdfs上建立一个目录存放文件

假设该目录为:/home/hadoop/input

./bin/hdfs dfs -mkdir -p /home/hadoop/input
./bin/hdfs dfs -put ./etc/hadoop/*.xml /home/hadoop/input

查看分发复制是否正常

./bin/hdfs dfs -ls /home/hadoop/input

运行案例:

在hdfs上建立一个目录存放文件

例如

./bin/hdfs dfs -mkdir -p /home/hadoop/wordcount

把文本程序放进去

./bin/hdfs dfs -put hello /home/hadoop/wordcount

查看分发情况

./bin/hdfs dfs -ls /home/hadoop/wordcount

运行MapReduce自带wordcount的示例程序(自带的样例程序运行不出来,可能是虚拟机性能的问题,这里就换成了简单的wordcount程序)

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.3.jar wordcount /home/hadoop/wordcount /home/hadoop/wordcount/output

 运行成功:

 

运行结束后,查看输出结果

./bin/hdfs dfs -ls /home/hadoop/wordcount/output
./bin/hdfs dfs -cat /home/hadoop/wordcount/output/*

 至此,Docker部署hadoop成功!跟着步骤走一般都没有什么问题。

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

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

相关文章

12.HTML5新特性

HTML5新特性 1.介绍 它是万维网的核心语言、标准通用标记语言下的一个应用超文本标记语言&#xff08;HTML&#xff09;的第五次重大修改。用于取代 HTML4 与 XHTML 的新一代标准版本&#xff0c;所以叫HTML5 HTML5 在狭义上是指新一代的 HTML 标准&#xff0c;在广义上是指…

云原生之深入解析K8s中的微服务项目设计与实现

一、微服务项目的设计 ① 微服务设计的思想 一个单片应用程序将被构建、测试并顺利地通过这些环境。事实证明&#xff0c;一旦投资于将生产路径自动化&#xff0c;那么部署更多的应用程序似乎就不再那么可怕了。请记住&#xff0c;CD的目标之一就是让部署变得无聊&#xff0c…

【亲测可用】实在太快了!如何在Linux下5分钟快速安装MongoDB

简介 MongoDB 是一款介于关系数据库和非关系数据库之间的产品&#xff0c;是非关系数据库当中功能最丰富&#xff0c;最像关系数据库的。他支持的数据结构非常松散&#xff0c;是类似json的bson格式&#xff0c;因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询…

如何参与开源项目

大家好&#xff0c;受卡哥邀请&#xff0c;和大家分享一下开源活动的相关经验。首先简要自我介绍一下&#xff0c;我目前在一所985研二在读&#xff0c;主要学习大数据方向&#xff0c;从去年开始参与开源活动近一年时间&#xff0c;也对多个Apache框架有所贡献。 由于学校或专…

2023最新Java获取微博cookie,可用于爬取文章(扫码登录)

目录 文章最下面含有完整main类代码&#xff0c;和完整控制层代码 一、发送请求获取图片和qrid 二、发送请求确认二维码已被正确扫描 三、携带拿到的alt&#xff0c;发送登录请求&#xff0c;获取cookie 四、main类完整方法代码 五、控制层接口完整代码 文章最下面含有完整…

IP与子网掩码之间的关系

子网掩码用于确认IP所在的网段&#xff0c;网络位与子网掩码相匹配 如果有另一台主机想要与这个IP地址进行通信&#xff0c;这时需要看两台主机的IP地址是否处于同一网段&#xff0c;处于同一网段才能相互ping通。 那么怎么判断是否处于同一网段呢&#xff1f;我们就看子网掩…

提升团队效率,防止员工飞单私单的秘诀!

在如今竞争激烈的商业环境中&#xff0c;每个企业都追求更高的销售业绩和客户满意度。然而&#xff0c;有些员工可能会利用V信等社交工具进行私下交易&#xff0c;导致公司的利益损失和客户信任的瓦解。所以&#xff0c;如何防止员工飞单私单成为了一个需要解决的问题。 在这里…

解决POI导入内部错误方式

目录 1、错误报文&#xff1a; 2、解决方案 参考 3、本人采用的是在配置文件中忽略该报错&#xff0c; 1、错误报文&#xff1a; WARN o.a.poi.openxml4j.opc.ZipPackage - Entry _rels/ is not valid, so this part wont be add to the package. org.apache.poi.openxml4…

FL Studio20官方版怎么下载安装?2024最新版图文详细教程

水果音乐制作软件FL Studio2024是一款功能强大的软件音乐制作环境或数字音频工作站&#xff08;DAW&#xff09;&#xff0c;本文主要针对FL Studio 2024怎么安装&#xff1f;来为大家带来了水果软件FL Studio 2024安装图文详细教程&#xff01;水果音乐制作软件FL Studio2024版…

智能分析/可视化安防监控系统EasyCVR风光互补远程视频监控方案

一、背景需求 在一些偏远地区&#xff0c;也具有视频监控的需求。但是这类场景中&#xff0c;一般无法就近获取市电&#xff0c;如果要长距离拉取市电&#xff0c;建设的成本非常高且长距离传输有安全隐患&#xff0c;因此风光互补远程视频监控方案的需求也较多。利用风光电转…

在 JMeter 中使用 JSON 提取器提取特定条件下的值

当你需要在 JMeter 中对接收到的 JSON 响应进行处理时&#xff0c;JSON 提取器是一个非常有用的工具。在本文中&#xff0c;我们将讨论如何使用 JSON 提取器来提取特定条件下的值&#xff0c;以满足你的需求。 问题描述 假设你收到了以下 JSON 格式的响应结果&#xff1a; {…

selenium 执行js后拿不到返回值的原因

1.js代码报错&#xff0c;可以把代码放到浏览器控制台中执行查看具体报错信息&#xff1b; 2.如果js中使用了ajax调用&#xff0c;最后return出去请求的结果值&#xff0c;记得把参数async设置为false;async默认设置为true&#xff0c;如果你的返回结果在请求的后面程序不会等待…

TCP/IP 四层体系结构

目录 ​编辑 导言&#xff1a; 应用层 1. HTTP&#xff08;超文本传输协议&#xff09; 2. FTP&#xff08;文件传输协议&#xff09; 3. SMTP&#xff08;简单邮件传输协议&#xff09; 4. POP3&#xff08;邮局协议第3版&#xff09; 5. IMAP&#xff08;互联网消息访…

Spit Problem

题目名字 Spit Problem 题目链接 题意 输入n个数字&#xff0c;表示a[i]和b&#xff0c;每个a[i]对应一个b&#xff0c;当a[j]a[i]b且a[j]ba[i];则输出yes没有就no 思路 1.遍历输出n个二维数组 2. 如题意所示写出条件 算法一&#xff1a; 实现步骤 如果有的话输出yes之后直接…

Python安装报错: This environment is externally managed

error: externally-managed-environment This environment is externally managed ╰─> To install Python packages system-wide, try apt installpython3-xyz, where xyz is the package you are trying toinstall.这个错误信息表示当前Python环境是由系统外部管理的&…

System 2 Attention:可以提高不同LLM问题的推理能力

推理正在成为大型语言模型(llm)关注的下一个主要领域。尽管llm拥有先进的能力&#xff0c;但大多数llm经常被简单的错误绊倒&#xff0c;显示出他们在推理方面的局限性。这些模型可能会被上下文中的不相关细节所误导&#xff0c;或者受到输入提示中的偏差的影响。而后一种倾向被…

【Apollo】编译 Apollo 源码

https://github.com/ApolloAuto/apollo/blob/master/docs/01_Installation%20Instructions/apollo_build_and_test_explained.md 查看apollo.sh 的用法 ./apollo.sh --help可以编译整个模块&#xff0c;也可以单独编译某一个子模块./modules 为简单起见&#xff0c;Apollo 6.0…

JAVA:注册表窗口的实现

目录 题目要求&#xff1a; 思路大意&#xff1a; 窗体的实现&#xff1a; 窗口A&#xff1a; 窗口B&#xff1a; 窗体之间的构思&#xff1a; 关键代码的实现&#xff1a; 窗口A&#xff1a; 封装列表&#xff1a; 窗口B&#xff1a; 题目要求&#xff1a; 使用…

网站使用CDN后无法获取用户真实IP的解决方法

宝塔或Nginx环境 如果你使用的宝塔或Nginx&#xff0c;可以在宝塔面板或Nginx中&#xff0c;找到配置文件增加如下代码后&#xff0c;重载配置或者重启 Nginx 即可&#xff1a; #CDN获取真实ip set_real_ip_from 0.0.0.0/0; real_ip_header X-Forwarded-For; PHP语言函数方法…

19 高速列车场景下3Gpp 5G NR的DMRS设计与评估

文章目录 解决问题设计DMRS仿真参数仿真结果 解决问题 多普勒/扩展影响十分显著&#xff0c;设计用于信道估计时&#xff0c;需要考虑解调参考信号&#xff0c;5G用DMRS结构而不是CRS结构&#xff0c;因此需要为高速UE设计DMRS结构&#xff0c;DMRS设计是为了提高信道估计并减…