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

2023-12-14 10:44

本文主要是介绍大数据云计算——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成功!跟着步骤走一般都没有什么问题。

这篇关于大数据云计算——Docker环境下部署Hadoop集群及运行集群案列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/492214

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd