在VMware下Hadoop分布式集群环境的配置--基于Yarn模式的一个Master节点、两个Slaver(Worker)节点的配置

你遇到的大部分ubuntu中配置hadoop的问题这里都有解决方法!!!(近10000字)

概要

Docker虚拟容器环境下,进行Hadoop-3.2.2分布式集群环境的配置与安装,完成基于Yarn模式的一个Master节点、两个Slaver(Worker)节点的配置。

1.主要步骤

  1. 安装配置启动Docker虚拟容器
  2. 配置主机名
  3. 配置自动时钟同步
  4. 配置hosts列表
  5. 配置免密码登录
  6. 安装JDK(在三台节点分别操作此步骤)
  7. 安装部署Hadoop集群

2、实验环境

虚拟机数量:3

系统版本:Centos Stream/Ubuntu 20.418.4

Hadoop版本:Apache Hadoop 3.2.23.2.1

3、相关技能

熟悉Linux操作系统

Hadoop原理

4、知识点

常见Linux命令的使用

linux系统基础配置

配置JDK

配置Hadoop的相关参数

掌握Hadoop操作指令

在安装Docker之前安装一些必要的依赖包:

sudo apt install apt-transport-https ca-certificates curl software-properties-common

添加 Docker 的官方 GPG 密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

添加 Docker 的 APT 源

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

更新 APT 包索引

sudo apt update

安装 Docker CE

sudo apt install docker-ce

安装完成后,您可以通过运行以下命令来验证 Docker 是否成功安装:

sudo systemctl status docker

下载Docker compose

sudo apt update
sudo apt install docker-compose
docker-compose version  

创建Docker-compose.yml

将以下内容放入yml:

version: "3"  services:  master:  image: ubuntu:latest  container_name: masternode  privileged: true  networks:  hadoop:  ipv4_address: 10.10.0.11  ports:  - 9870:9870  - 9000:9000  - 18040:18040  - 18030:18030  - 18025:18025  - 18141:18141  - 18088:18088  - 50070:50070  - 60000:60000  - 16000:16000  - 8080:8080  volumes:  - hadoop:/hadoop/master  - ./Files:/Files  environment:  - CLUSTER_NAME=hadoop_cluster_simple  stdin_open: true  tty: true  slave01:  image: ubuntu:latest  container_name: slave01node  privileged: true  networks:  hadoop:  ipv4_address: 10.10.0.12  volumes:  - hadoop:/hadoop/slave01  - ./Files:/Files  environment:  - CLUSTER_NAME=hadoop_cluster_simple  stdin_open: true  tty: true  slave02:  image: ubuntu:latest  container_name: slave02node  privileged: true  networks:  hadoop:  ipv4_address: 10.10.0.13  volumes:  - hadoop:/hadoop/slave02  - ./Files:/Files  environment:  - CLUSTER_NAME=hadoop_cluster_simple  stdin_open: true  tty: true  slave03:  image: ubuntu:latest  container_name: slave03node  privileged: true  networks:  hadoop:  ipv4_address: 10.10.0.14  volumes:  - hadoop:/hadoop/slave03  - ./Files:/Files  environment:  - CLUSTER_NAME=hadoop_cluster_simple  stdin_open: true  tty: true  volumes:  hadoop:  networks:  hadoop:  driver: bridge  ipam:  driver: default  config:  - subnet: "10.10.0.0/24" 

在docker镜像地址中有已无法进入的地址,需要换源,具体看:完美解决Docker pull时报错:https://registry-1.docker.io/v2/-CSDN博客

启动Docker虚拟容器

sudo docker-compose -f docker-compose.yml  up

打开三个新的终端窗口,分别登录master、slave01和slave02节点(按下ctrl + d可以从各节点退出

sudo docker exec -it masternode /bin/bash
sudo docker exec -it slave01node /bin/bash
sudo docker exec -it slave02node /bin/bash

使用vim编辑masternode主机名

vi /etc/hostname

docker容器中没有vim包需要下载:

apt-get update
apt-get install -y vim

同理将slave01和slave02也改好

使用Linux命令crontab配置定时任务进行自动时钟同步(分别进入三个节点)

apt install -y croncrontab -e

    按”i ”键,进入INSERT模式;输入下面的内容(星号之间和前后都有空格)  

0 1 * * * ntpdate cn.pool.ntp.org

   按Esc键退出INSERT模式,按下“shift+:”键,输入wq保存修改并退出

  手动同步时间,直接在Terminal运行下面的命令

  

apt install -y ntpdatentpdate cn.pool.ntp.org

分别在三个节点配置hosts列表

在各虚拟机中运行ifconfig命令,获得当前节点的ip地址

apt install -y net-toolsifconfig

分别获得三个结点的ip地址

编辑主机名列表文件

vi /etc/hosts

将下面三行添加到/etc/hosts文件中,保存退出

#master节点对应IP地址是10.10.0.11,slave01对应的IP是10.10.0.12,slave02对应的IP是10.10.0.13
10.10.0.11 master
10.10.0.12 slave01
10.10.0.13 slave02

Ping主机名,按“Ctrl+C”终止命令

ping master 
ping slave01  
ping slave02

三个虚拟节点的免密码登录配置

先在master节点上进行配置,生成rsa的SSH公钥

apt install -y openssh-clientssh-keygen -t rsa

生成的密钥在用户根目录中的.ssh子目录中,进入.ssh目录,查看目录文件

cd ~/.ssh/ls

将id_rsa.pub 文件追加到authorized_keys文件中

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

修改authorized_keys文件的权限,命令如下:

chmod 600 ~/.ssh/authorized_keys

将专用密钥添加到 ssh-agent 的高速缓存中

ssh-agent bashssh-add ~/.ssh/id_rsa

将authorized_keys文件复制到slave01、slave02节点root用户的根目录,命令(在宿主机终端下执行)如下:

     sudo docker cp  masternode:/root/.ssh/authorized_keys .sudo docker cp  authorized_keys slave01node:/root/.ssh/sudo docker cp  authorized_keys slave02node:/root/.ssh/

打开主机和三个节点的防火墙

apt install ufw -y

验证免密登陆

ssh slave01

退出slave01远程登录

exit

通过apt-get安装JDK

apt-get install openjdk-8-jdk

使用vim修改“.bashrc”

 vi ~/.bashrc 

复制粘贴以下内容添加到到上面vim打开的文件中:

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

export PATH=$JAVA_HOME/bin:$PATH

使环境变量生效,查看Java版本

 source ~/.bashrcjava -version

安装部署Hadoop集群

说明:每个节点上的Hadoop配置基本相同,在master节点操作,然后复制到slave01、slave02两个节点。

hadoop用Ubuntu自带的火狐浏览器下载,镜像地址:

https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/stable/

将/目录下的hadoop-3.4.1.tar.gz压缩包解压到/hadoop-3.4.1目录下:

sudo tar -zxf /home/Downloads/hadoop-3.4.1.tar.gz -C /usr/local

-zxf后面的是刚才下载的压缩包路径,如果没安装输入法打不了中文的可以直接找到刚才下载的那个压缩包点复制然后粘贴到命令行就是路径了

配置hadoop-env.sh文件

vi /usr/local/hadoop-3.4.1/etc/hadoop/hadoop-env.sh

在hadoop-env.sh文件中添加JAVA环境变量:

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

配置yarn-env.sh文件

vi /usr/local/hadoop-3.4.1/etc/hadoop/yarn-env.sh

在yarn-env.sh文件中添加JAVA环境变量

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

配置core-site.xml 文件

vi /usr/local/hadoop-3.4.1/etc/hadoop/core-site.xml

复制粘贴以下内容,添加到上面vim打开的core-site.xml 文件中:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop</value>
</property>
</configuration>

配置hdfs-site.xml 文件

vi /usr/local/hadoop-3.4.1/etc/hadoop/hdfs-site.xml

复制粘贴以下内容,添加到到上面vim打开的hdfs-site.xml 文件中:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>

配置yarn-site.xml 文件

 vi /usr/local/hadoop-3.4.1/etc/hadoop/yarn-site.xml

复制粘贴以下内容,添加到到上面vim打开的yarn-site.xml 文件中:

<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
</configuration>

配置mapred-site.xml 文件

vi /usr/local/hadoop-3.4.1/etc/hadoop/mapred-site.xml

复制粘贴以下内容,添加到到上面vim打开的mapred-site.xml 文件中:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

配置workers 文件

vi /usr/local/hadoop-3.4.1/etc/hadoop/workers

复制粘贴以下内容,添加到到上面vim打开的workers文件中:

slave01slave02

将配置好的hadoop-3.4.1文件夹复制到从节点

scp -r /usr/local/hadoop-3.4.1/ root@master:/
scp -r /usr/local/hadoop-3.4.1/ root@slave01:/
scp -r /usr/local/hadoop-3.4.1/ root@slave02:/

如果输入密码错误:需要在从节点用 passwd root命令设置密码

如果显示无法连接错误:

 安装 OpenSSH 服务端
apt update && apt install -y openssh-server
启动 SSH 服务
service ssh start 
配置 SSH
vi /etc/ssh/sshd_config

添加:

PermitRootLogin yes     # 允许 root 登录(仅测试环境)
PasswordAuthentication yes

重启ssh服务:
 

service ssh restart 

结果如下:

配置Hadoop环境变量(在三台节点分别操作此步骤)

vi ~/.bashrc

在.bashrc末尾添加如下内容:

##HADOOP
export HADOOP_HOME=/hadoop-3.4.1
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

使环境变量生效

source ~/.bashrc 

格式化Hadoop文件目录(在master上执行)

说明:格式化后首次执行此命令,提示输入y/n时,输入y。

 hdfs namenode -format 

启动Hadoop集群(在master上执行):

start-all.sh

查看Hadoop进程是否启动,在master的终端执行jps命令,出现下图效果

 jps

浏览器地址栏中输入http://127.0.0.1:9870/,检查namenode 和datanode 是否正常,如下图所示:

在浏览器地址栏中输入http://127.0.0.1:18088/,检查Yarn是否正常,如下图所示:

运行PI实例检查集群是否成功,成功如下图所示:

hadoop jar /hadoop-3.4.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.4.1.jar pi 10 10

其他细节事项:

首先打开VMware虚拟机,进入Ubuntu操作系统,进入终端:

然后在终端切换到root用户:

设置 root 用户的密码:

sudo passwd root

输入密码后切换到root模式:

 su root

在Linux安装软件时需要用到yum命令,也可以是apt-get命令,以下介绍如何在ubtuntu中安装配置yum




接下来是安装build-essential程序包和yum:

apt-get install build-essential
apt-get install yum

在安装yum后可能会遇到以下报错:

E: Unable to locate package yum

这时候需要手动下载yum:

  1. 备份sources.list文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

     2.更换源

sudo vim /etc/apt/sources.list

如果这个时候报错无法发现vim

sudo apt-get update
sudo apt-get install vim

按照上述方式下载vim

     3.vim编辑

接下来会进入到sources.list的内容里进行编辑

  • 点击insert进入编辑模式
  • 将下面网站文本复制粘贴并覆盖,粘贴的命令是 shift + insert。记得选择相应的Linux版本,此处为Ubuntu 20.04

在第一行添加镜像源如下:

deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse

       4.更新源

sudo apt-get update

      5.安装yum

sudo apt-get install yum

然后如果有以下提示:
The following packages have unmet dependencies:

按照提示逐一安装依赖:

sudo apt-get install python-sqlitecachec
sudo apt-get install python-pycurl
sudo apt-get install python-urlgrabber

再次安装yum:

sudo apt-get install yum 

安装yum成功:

yum --version

最后将自己配置的repo文件用yum-config-manager进行yum软件源添加:

 yum-config-manager --add-repo /etc/yum.repo.d/my.repo 

 通过使用yum repolist命令查看时,由于刚下载yum,显示库的软件信息为0

这时需要配置yum源

参考这篇博主的文章:

# ubuntu 系统使用 yum命令报错 There are no enabled repos.Run “yum repolist all“ to see the repos you have..._there are no enabled repos. run "yum repolist all"-CSDN博客

好了之后就可以安装了

 yum upgradeyum install net-tools



设置root密码

在docker容器内,初始化root密码,用于下一步的登录。

passwd root

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

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

相关文章

PID灯控算法

根据代码分析&#xff0c;以下是针对PID算法和光敏传感器系统的优化建议&#xff0c;分为算法优化、代码结构优化和系统级优化三部分&#xff1a; 一、PID算法优化 1. 增量式PID 输出平滑 // 修改PID计算函数 uint16_t PID_calculation_fun(void) {if(PID_Str_Val.Tdata >…

文件映射mmap与管道文件

在用户态申请内存&#xff0c;内存内容和磁盘内容建立一一映射 读写内存等价于读写磁盘 支持随机访问 简单来说&#xff0c;把磁盘里的数据与内存的用户态建立一一映射关系&#xff0c;让读写内存等价于读写磁盘&#xff0c;支持随机访问。 管道文件&#xff1a;进程间通信机…

在 Java 中调用 ChatGPT API 并实现流式接收(Server-Sent Events, SSE)

文章目录 简介OkHttp 流式获取 GPT 响应通过 SSE 流式推送前端后端代码消息实体接口接口实现数据推送给前端 前端代码创建 sseClient.jsvue3代码 优化后端代码 简介 用过 ChatGPT 的伙伴应该想过自己通过调用ChatGPT官网提供的接口来实现一个自己的问答机器人&#xff0c;但是…

硬盘分区格式之GPT(GUID Partition Table)笔记250407

硬盘分区格式之GPT&#xff08;GUID Partition Table&#xff09;笔记250407 GPT&#xff08;GUID Partition Table&#xff09;硬盘分区格式详解 GPT&#xff08;GUID Partition Table&#xff09;是替代传统 MBR 的现代分区方案&#xff0c;专为 UEFI&#xff08;统一可扩展固…

Vite环境下解决跨域问题

在 Vite 开发环境中&#xff0c;可以通过配置代理来解决跨域问题。以下是具体步骤&#xff1a; 在项目根目录下找到 vite.config.js 文件&#xff1a;如果没有&#xff0c;则需要创建一个。配置代理&#xff1a;在 vite.config.js 文件中&#xff0c;使用 server.proxy 选项来…

交换机与ARP

交换机与 ARP&#xff08;Address Resolution Protocol&#xff0c;地址解析协议&#xff09; 的关系主要体现在 局域网&#xff08;LAN&#xff09;内设备通信的地址解析与数据帧转发 过程中。以下是二者的核心关联&#xff1a; 1. 基本角色 交换机&#xff1a;工作在 数据链…

【Spring】小白速通AOP-日志记录Demo

这篇文章我将通过一个最常用的AOP场景-方法调用日志记录&#xff0c;带你彻底理解AOP的使用。例子使用Spring BootSpring AOP实现。 如果对你有帮助可以点个赞和关注。谢谢大家的支持&#xff01;&#xff01; 一、Demo实操步骤&#xff1a; 1.首先添加Maven依赖 <!-- Sp…

git功能点管理

需求&#xff1a; 功能模块1 已经完成&#xff0c;已经提交并推送到远程&#xff0c;准备交给测试。功能模块2 已经完成&#xff0c;但不提交给测试&#xff0c;继续开发。功能模块3 正在开发中。 管理流程&#xff1a; 创建并开发功能模块1&#xff1a; git checkout main…

QGIS实战系列(六):进阶应用篇——Python 脚本自动化与三维可视化

欢迎来到“QGIS实战系列”的第六期!在前几期中,我们从基础操作到插件应用逐步提升了 QGIS 技能。这一篇,我们将迈入进阶领域,探索如何用 Python 脚本实现自动化,以及如何创建三维可视化效果,让你的 GIS 项目更高效、更立体。 第一步:Python 脚本自动化 QGIS 内置了 Py…

高德地图 3D 渲染-区域纹理图添加

引入-初始化地图&#xff08;关键代码&#xff09; // 初始化页面引入高德 webapi -- index.html 文件 <script src https://webapi.amap.com/maps?v2.0&key您申请的key值></script>// 添加地图容器 <div idcontainer ></div>// 地图初始化应该…

ffmpeg视频转码相关

ffmpeg视频转码相关 简介参数 实战举栗子获取视频时长视频转码mp4文件转为hls m3u8 ts等文件图片转视频抽取视频第一帧获取基本信息 转码日志输出详解转码耗时测试 简介 FFmpeg 是领先的多媒体框架&#xff0c;能够解码、编码、 转码、复用、解复用、流、过滤和播放 几乎所有人…

【ISP】HDR技术中Sub-Pixel与DOL的对比分析

一、原理对比 Sub-Pixel&#xff08;空间域HDR&#xff09; • 核心机制&#xff1a;在单个像素内集成一大一小两个子像素&#xff08;如LPD和SPD&#xff09;&#xff0c;利用其物理特性差异&#xff08;灵敏度、满阱容量&#xff09;同时捕捉不同动态范围的信号。 ◦ 大像素&…

Vulnhub-IMF靶机

本篇文章旨在为网络安全渗透测试靶机教学。通过阅读本文&#xff0c;读者将能够对渗透Vulnhub系列IMF靶机有一定的了解 一、信息收集阶段 靶机下载地址&#xff1a;https://www.vulnhub.com/entry/imf-1,162/ 因为靶机为本地部署虚拟机网段&#xff0c;查看dhcp地址池设置。得…

Linux内核中TCP协议栈的实现:tcp_close函数的深度剖析

引言 TCP(传输控制协议)作为互联网协议族中的核心协议之一,负责在不可靠的网络层之上提供可靠的、面向连接的字节流服务。Linux内核中的TCP协议栈实现了TCP协议的全部功能,包括连接建立、数据传输、流量控制、拥塞控制以及连接关闭等。本文将深入分析Linux内核中tcp_close…

java+postgresql+swagger-多表关联insert操作(七)

入参为json&#xff0c;然后根据需要对多张表进行操作&#xff1a; 入参格式&#xff1a; [{"custstoreName":"swagger-测试经销商01","customerName":"swagger-测试客户01","propertyNo":"swaggertest01",&quo…

R语言——绘制生命曲线图(细胞因子IL5)

绘制生命曲线图&#xff08;根据细胞因子&#xff09; 说明流程代码加载包读取Excel文件清理数据重命名列名处理IL-5中的"<"符号 - 替换为检测下限的一半首先找出所有包含"<"的值检查缺失移除缺失值根据IL-5中位数将患者分为高低两组 创建生存对象拟…

Python----计算机视觉处理(Opencv:道路检测完整版:透视变换,提取车道线,车道线拟合,车道线显示,)

Python----计算机视觉处理&#xff08;Opencv:道路检测之道路透视变换) Python----计算机视觉处理&#xff08;Opencv:道路检测之提取车道线&#xff09; Python----计算机视觉处理&#xff08;Opencv:道路检测之车道线拟合&#xff09; Python----计算机视觉处理&#xff0…

【Oracle篇】跨字符集迁移:基于数据泵的ZHS16GBK转AL32UTF8全流程迁移

&#x1f4ab;《博主主页》&#xff1a;奈斯DB-CSDN博客 &#x1f525;《擅长领域》&#xff1a;擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控&#xff1b;并对SQLserver、NoSQL(MongoDB)有了解 &#x1f496;如果觉得文章对你有所帮…

【C++算法】50.分治_归并_翻转对

文章目录 题目链接&#xff1a;题目描述&#xff1a;解法C 算法代码&#xff1a;图解 题目链接&#xff1a; 493. 翻转对 题目描述&#xff1a; 解法 分治 策略一&#xff1a;计算当前元素cur1后面&#xff0c;有多少元素的两倍比我cur1小&#xff08;降序&#xff09; 利用单…

深入讲解:智能合约中的读写方法

前言 在探秘区块链开发:智能合约在 DApp 中的地位及与传统开发差异一文中我提到对于智能合约中所有的写入其实都算是交易。而在一个完整的智能合约代码中最大的两个组成部分就是读取和写入。 本文将为你深入探讨该两者方法之间的区别。 写方法 写方法其实就是对区块链这一…