【分布式】Hadoop完全分布式的搭建(零基础)

Hadoop完全分布式的搭建

环境准备:

(1)VMware Workstation Pro17(其他也可)

(2)Centos7

(3)FinalShell

(一)模型机配置

0****)安装模板虚拟机,IP地址192.168.10.100、主机名称node1、内存4G、硬盘****40G

网络环境及基础环境准备:

1)修改VMware的网络虚拟器:将子网ip设置在统一的字段,我统一设置为10

图片1

图片2

图片3

点击确定

(2)修改电脑的VMent8:也统一在10这个字段

在搜索栏搜索查看网络连接

图片4

找到VMnet8

图片5

右击,选择属性

图片6

单击Internet协议版本4(TCP/IPv4)

图片7

修改相应的IP地址,默认网关,和刚才虚拟机中的保持统一字段,在本文中统一为10.

添加DNS服务器如图所示

图片8

修改Centos 里的ip,将动态地址改为静态

进入到centos7,用root用户登录,修改ifcfg-ens33文件,将其中BOOTPROTO的参数从动态改为静态,并添加对应的IP,依然与刚才前两步保持统一字段

图片9

vim /etc/sysconfig/network-scripts/ifcfg-ens33

图片10

ping一下百度表示网络可用,若失败则需检查相应的问题。网络要通才可进行后续操作。

图片11

修改主机名称为Master01

vim /etc/hostname

图片12

将文件内容改成Master01

将接下来预计要进行连接的虚拟机ip都入加入到hosts文件,根据自己需要搭建的集群数量决定,本文的Master01用于伪分布式搭建,node1,node2及node3用于完全分布式的搭建,要记录对应的ip地址,以便进行后续操作。

vim /etc/hosts

图片13

(4)连接finallshell

打开准备好的远程连接软件,我们后续将都在此进行操作,因为可直接粘贴复制和传送文件(用xshell也可),此处可用root登录也可用普通用户,后续因为yarn的使用,需要用普通用户连接。根据自己的主机ip和密码连接。

图片14

连接成功

图片15

(5)更换阿里云镜像:执行以下命令
a.备份官方的原yum源的配置

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

b.下载Centos-7.repo文件

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

c.脚本配置本地源

找个目录,创建脚本文件:

本人以/root/目录为例

vi /root/auto_aliyun.sh

编写如下内容:

#!/bin/bash# 备份官方的原yum源的配置mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup# 下载Centos-7.repo文件,或者curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo,取决于你是否有wget的命令wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo# 清除yum缓存yum clean all# 缓存本地yum源yum makecache

按ESC。输入:wq保存,完成镜像阿里云源的脚本文件的编写

d.赋予脚本可执行的权限

chmod +x /root/auto_aliyun.sh

e.执行脚本文件,即可

/root/auto_aliyun.sh

图片16

图片17

f.安装epel-release

yum install -y epel-release

图片18

(6)关闭防火墙

systemctl stop firewalldsystemctl disable firewalld.service

图片19

(7)将hduser用户(你自己的普通用户)赋予root权限

创建hduser用户,并修改hduser用户的密码

useradd hduser(创建的用户名)passwd 123456(创建的用户密码)

配置hduser用户具有root权限,方便后期加sudo执行root权限的命令

vim /etc/sudoers

找到图中位置添加:

图片20

保存并退出

在/opt目录下创建module、software文件夹

mkdir /opt/modulemkdir /opt/software

修改module、software文件夹的所有者和所属组均为hduser用户

chown hduser:hduser /opt/modulechown hduser:hduser /opt/software

查看module、software文件夹的所有者和所属组

图片21

测试hduser已拥有root权限

图片22

(8)卸载环境自带jdk

查询jdk

jdk rpm -qa | grep -i java

图片23

卸载jdk

rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps

注意:如果你的虚拟机是最小化安装不需要执行这一步。

  • rpm -qa:查询所安装的所有rpm软件包
  • grep -i:忽略大小写
  • xargs -n1:表示每次只传递一个参数
  • rpm -e –nodeps:强制卸载软件

查询

图片24

重启虚拟机

[root@Master01?~]# reboot

模型机配置完成

(二)完全分布式搭建

(1)三台虚拟机node1,node2,node3的准备

克隆三台虚拟node1,node2,node3(名称要与前文hosts中一致,注意是完全克隆)

图片25

分别修改三台机器的ip和主机名并重启,检查是否修改完成,并检查网络是否可用

Node1

图片26

图片27

Node2

图片28

图片29

Node3

图片30

图片31

将三台主机均按前面方法连接finalshell

图片32

图片33

图片34

(2)给node1安装jdk

将下好的jdk和hadoop利用finallshell传到node1中,在finallshell的文件中找到之前建立的software文件夹,直接拖入。

图片35

进入到software文件夹,查看tar包已经存在。

图片36

解压缩:

tar -zxvf jdk-8u202-linux-x64.tar.gz -C /opt/module/

图片37

进入到module目录,已经存在jdk。

图片38

(3)配置JAVA_HOME

在/etc/profile.d/中创建my_env.sh,填写以下内容:

vim /etc/profile.d/my_env.sh

图片39

保存后运行,java配置成功。

source /etc/profile

执行java语句出现以下内容

图片40

(4)安装hadoop:
解压hadoop至/etc/module

tar -zxvf hadoop-3.2.4.tar.gz -C /opt/module/

图片41

进入到hadoop中配置环境变量

图片42

在之前创建的my_env.sh中添加以下内容

vim /etc/profile.d/my_env.sh

图片43

source /etc/profile?

运行

命令行输入hadoop,出现以下内容配置完成

图片44

(5)将node1中的jdk和hadoop复制到node2和node3上

图片45

图片46

集群分配脚本的编写:

创建一个脚本xsync,并将其配置在环境变量中,内容如下

注意是在hduser用户的bin目录下:

图片47

建立一个xsync文件,输入以下内容保存

#!/bin/bash#1. 判断参数个数
if?[?$#?-lt?1?]
then
????echo?Not?Enough?Arguement!
????exit;
fi#2. 遍历集群所有机器
for?host?in?node1?node2?node3
do
????echo?====================??$host??====================
????#3. 遍历所有目录,挨个发送????for?file?in?$@
????do
????????#4. 判断文件是否存在
????????if?[?-e?$file?]
????????????then
????????????????#5. 获取父目录
????????????????pdir=$(cd?-P?$(dirname?$file);?pwd)????????????????#6. 获取当前文件的名称
????????????????fname=$(basename?$file)
????????????????ssh?$host?"mkdir -p $pdir"
????????????????rsync?-av?$pdir/$fname?$host:$pdir
????????????else
????????????????echo?$file?does?not?exists!
????????fi
????done
done

注意以下内容修改成自己对应的主机名字

图片48

进入到相应的目录,找到相应的bin目录,查询刚才建立的xsync文件,注意是hduser下的bin目录。

图片49

vim xsync

图片50

赋予xsync相应权限

chomd 777 xsync

发现文件变绿

图片51

利用xsync脚本将环境变量分发到node2和node3中

sudo ./bin/xsync /etc/profile.d/my_env.sh

图片52

让环境变量生效

[hduser@node2?bin]$ source /etc/profile[hduser@node2?opt]$ source /etc/profile
  1. ssh免密登录设置

    cd .ssh/

    cat known_hosts

图片53

[hduser@node1?.ssh]$ssh-keygen -t rsa?

然后敲(三个回车),就会生成两个文件 id_rsa(私钥)、id_rsa.pub(公钥)

图片54

将公钥拷贝到要免密登录的目标机器上

图片55

ssh node2后免密登录成功

图片56

第三台机器同理

图片57

(三)配置集群

(1)核心配置文件

cd $HADOOP_HOME/etc/hadoopvim core-site.xml

图片58

core-site.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><!-- 指定 NameNode 的地址 --><property><name>fs.defaultFS</name><value>hdfs://node1:8020</value></property><!-- 指定 hadoop 数据的存储目录 --><property><name>hadoop.tmp.dir</name><value>/opt/module/hadoop-3.2.4/data</value></property><!-- 配置 HDFS 网页登录使用的静态用户为 atguigu --><property><name>hadoop.http.staticuser.user</name><value>hduser</value></property></configuration>

图片59

(2)HDFS 配置文件

配置 hdfs-site.xml

vim hdfs-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><!-- nn web 端访问地址--><property><name>dfs.namenode.http-address</name><value>node1:9870</value></property><!-- 2nn web 端访问地址--><property><name>dfs.namenode.secondary.http-address</name><value>node3:9868</value></property></configuration>

图片60

(3)YARN 配置文件

配置 yarn-site.xml

vim yarn-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><!-- 指定 MR 走 shuffle --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 指定 ResourceManager 的地址--><property><name>yarn.resourcemanager.hostname</name><value>node2</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></configuration>

图片61

(4)MapReduce 配置文件

配置 mapred-site.xml

vim mapred-site.xml

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><!-- 指定 MapReduce 程序运行在 Yarn 上 --><property><name>mapreduce.framework.name</name><value>yarn</value></property></configuration>

图片62

****5)****在集群上分发配置好的 Hadoop 配置文件

xsync /opt/module/hadoop- 3.2.4/etc/hadoop/

图片63

6)去 node2和 node3上查看文件分发情况

cat /opt/module/hadoop-3.2.4/etc/hadoop/core-site.xml

编辑workers文件

vim?/opt/module/hadoop-3.2.4/etc/hadoop/workers

在该文件中增加如下内容:

图片64

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

同步所有节点配置文件

xsync /opt/module/hadoop-3.2.4/etc

启动集群

(1)如果集群是第一次启动,需要在node1节点格式化NameNode(注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。)

[hduser@node1?hadoop-3.2.4]$ hdfs namenode -format

图片65

(2)启动HDFS

[hduser@node1?hadoop-3.2.4]$ sbin/start-dfs.sh

图片66

(3)****在配置了ResourceManager的节点(node2)****启动YARN

[hduser@node1?hadoop-3.2.4]$ sbin/start-yarn.sh

Web端查看HDFS的NameNode

浏览器中输入:http://node1:9870

(4)查看HDFS上存储的数据信息

Web端查看YARN的ResourceManager

浏览器中输入:http://node2:8088

(b)查看YARN上运行的Job信息

验证HDFS是否成功启动,可以使用jps命令查看Java进程,确认NameNode和DataNode等进程是否运行。

图片67

图片68

图片69

完全分布式搭建完成。

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

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

相关文章

GPT-Sovits:语音克隆训练-遇坑解决

前言 本来以为3050完全无法执行GPT-Sovits训练的&#xff0c;但经过实践发现其实是可以&#xff0c;并且仅花费了十数分钟便成功训练和推理验证了自己的语音模型。 官方笔记&#xff1a;GPT-SoVITS指南 语雀 项目地址&#xff1a;https://github.com/RVC-Boss/GPT-SoVITS 本人…

React之旅-03 路由

做为前端开发框架&#xff0c;React 的组件化设计思想&#xff0c;使前端开发变得更加灵活高效。对于大型复杂的项目来说&#xff0c;页面之间的导航变得尤为重要。因此如何管理路由&#xff0c;是所有开发者必须考虑的问题。 React 官方推荐的路由库-React Router&#xff0c…

Word接入DeepSeek(API的作用)

1.打开”Word”&#xff0c;点击“文件”。 2.点击“选项”。 3.点击“信任中心”——“信任中心设置”。 4. 勾选”启用所有宏“&#xff0c;点击”确定“。 5.点击“自定义功能区”&#xff0c;勾选上“开发工具”&#xff0c;点击“确定”。 6.返回“文件——开发工具“下的…

SQL知识体系

SQL复习 MySQL SQL介绍 SQL SQL的全拼是什么&#xff1f; SQL全拼&#xff1a;Structured Query Language&#xff0c;也叫结构化查询语言。 SQL92和SQL99有什么区别呢&#xff1f; SQL92和SQL99分别代表了92年和99年颁布的SQL标准。 在 SQL92 中采用&#xff08;&#xff…

网络安全治理模型

0x02 知识点 安全的目标是提供 可用性 Avialability机密性 confidentiality完整性 Integrity真实性 Authenticity不可否认性 Nonrepudiation 安全治理是一个提供监督、问责和合规性的框架 信息安全系统 Information Security Management System ISMS 策略&#xff0c;工作程…

Ubuntu学习备忘

1. 打开Terminal快捷键 ctrl alt t 2.Ubuntu22.04的root没有默认初始密码&#xff0c; 为root设置密码&#xff0c;下面链接的step1, How to allow GUI root login on Ubuntu 22.04 Jammy Jellyfish Linux - LinuxConfig

C#: 创建Excel文件并在Excel中写入数据库中的数据

实现思路&#xff1a; 1.检查数据是否可导出 2.弹出文件保存对话框 3.删除已存在的同名文件 4.创建 Excel 应用实例 5.导出表头 6.导出数据 7.保存 Excel 文件 8.释放 Excel 资源 9.导出成功提示 static void ExportToExcel(DataTable Data, string fileName) { // 如果表格…

DeepSeek 和 ChatGPT 在特定任务中的表现:逻辑推理与创意生成

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Linux网络编程 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 ​ Linux网络编程笔记&#xff1a; https://blog.cs…

HTTP2.0 和 HTTP1.1 的区别

多路复用&#xff08;优化管道&#xff09;&#xff0c;基于HTTPS&#xff0c;二进制帧&#xff0c;Header压缩&#xff0c;服务器推送 多路复用&#xff1a;HTTP/2.0 在一个连接里&#xff0c;客户端和浏览器都可以同时发送多个请求和响应&#xff0c;而不用按照顺序一一对应&…

【物联网】电子电路基础知识

文章目录 一、基本元器件1. 电阻2. 电容3. 电感4. 二极管(1)符号(2)特性(3)实例分析5. 三极管(1)符号(2)开关特性(3)实例6. MOS管(产效应管)(1)符号(2)MOS管极性判定(3)MOS管作为开关(4)MOS管vs三极管7. 门电路(1)与门(2)或门(3)非门二、常用元器件…

基于ffmpeg+openGL ES实现的视频编辑工具-解码(四)

在开发视频编辑工具时,预览功能是基石,它涵盖视频、图片以及音频播放,而视频解码则是实现视频预览及后续编辑操作的关键环节。本文聚焦于基于 FFmpeg 实现视频解码的过程,详细阐述开发中遭遇的痛点、对应的解决方式,以及核心代码的运作原理。 一、开发背景与目标 视频编…

python shlex

python shlex 核心函数 shlex.split(s, commentsFalse, posixTrue) 作用&#xff1a;将字符串按类似 Shell 的语法规则分割成参数列表&#xff0c;常用于安全处理命令行输入。参数说明&#xff1a; s&#xff08;必需&#xff09;: 待分割的字符串&#xff08;如 “ls -l ‘…

软件测试用例设计方法之正交表

一、概念 能够使用最小的测试过程集合获得最大的测试覆盖率&#xff0c;从全面试验中挑选出有代表性的点进行测试。适用于配置类软件&#xff0c;组合比较多的情况。 正交表Ln(m^k)&#xff1a; 特点&#xff1a;均匀分散、整齐可比、高效、快速、经济 n&#xff1a;正交表的…

Cursor实战:Web版背单词应用开发演示

Cursor实战&#xff1a;Web版背单词应用开发演示 需求分析自行编写需求文档借助Cursor生成需求文档 前端UI设计后端开发项目结构环境参数数据库设计安装Python依赖运行应用 前端代码修改测试前端界面 测试数据生成功能测试Bug修复 总结 在上一篇《Cursor AI编程助手不完全指南》…

DeepSeek与ChatGPT:会取代搜索引擎和人工客服的人工智能革命

云边有个稻草人-CSDN博客 在众多创新技术中&#xff0c;DeepSeek和ChatGPT无疑是最为引人注目的。它们通过强大的搜索和对话生成能力&#xff0c;能够改变我们与计算机交互的方式&#xff0c;帮助我们高效地获取信息&#xff0c;增强智能服务。本文将深入探讨这两项技术如何结合…

JavaScript中判断元素是否在可视区域内

JavaScript中判断元素是否在可视区域内 1.有什么应用2.方法1-----使用offsetTop、scrollTop3.方法2-----getBoundingClientRect4.方法3-----Intersection Observer 1.有什么应用 懒加载列表的无限滚动计算广告元素的曝光情况 2.方法1-----使用offsetTop、scrollTop offsetTo…

PyTorch与TensorFlow的对比:哪个框架更适合你的项目?

在机器学习和深度学习领域&#xff0c;PyTorch 和 TensorFlow 是最流行的两个框架。它们各有特点&#xff0c;适用于不同的开发需求和场景。本文将详细对比这两个框架&#xff0c;帮助你根据项目需求选择最合适的工具。 一、概述 PyTorch 和 TensorFlow 都是深度学习框架&…

挖掘图片的秘密:如何用piexif提取和修改Exif数据

Exif&#xff08;Exchangeable Image File Format&#xff09;数据是一个广泛用于数字图像&#xff08;尤其是JPEG和TIFF格式&#xff09;中的元数据格式。它包含了关于图像的各种信息&#xff0c;包括拍摄设备的类型、拍摄时间、光圈、曝光时间、GPS定位信息等。Exif数据使得用…

定期自动统计大表执行情况

一、创建用户并赋权 create user dbtj identified by oracle default tablespace OGGTBS;grant connect,resource to dbtj;grant select any dictionary to dbtj;grant create job to dbtj;grant manage scheduler to dbtj; 二、创建存储表 1、连接到新建用户 conn dbtj/or…

模拟与高精度

题目描述 高精度加法&#xff0c;相当于 ab problem&#xff0c;不用考虑负数。 输入格式 分两行输入。a,b≤10500。 输出格式 输出只有一行&#xff0c;代表 ab 的值。 输入输出样例 输入 #1复制 1 1输出 #1复制 2输入 #2复制 1001 9099输出 #2复制 10100说明/提示…