【分布式】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 firewalld

systemctl 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/module

mkdir /opt/software

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

chown hduser:hduser /opt/module

chown 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/hadoop

vim 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_CO

NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP

RED_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

完全分布式搭建完成。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ArcGIS中怎么把数据提取到指定范围(裁剪、掩膜提取)

最近&#xff0c;经常能收到怎么把数据提取到指定范围、栅格数据怎么裁剪、矢量数据怎么裁剪、栅格数据怎么掩膜提取的咨询。 下面是我对这个问题的解决思路&#xff1a; 对于矢量数据&#xff1a; ①首先把数据加载进来 ②软件界面上面的工具栏找到→地理处理→裁剪&#x…

intra-mart环境搭建笔记

一、前言 最近在做intra-mart项目&#xff0c;网上这些笔记比较少&#xff0c;在此做一下笔记。 intra-mart是由日本intra-mart公司开发和销售的工作流平台&#xff0c;国内确实不怎么用&#xff0c;日本企业用的多些&#xff0c;面试时会问有没有intra-mart经验。 这个自学…

智能型电瓶车充电桩在老居民区充电站中的应用优势

摘要 随着电瓶车数量的快速增长&#xff0c;小区内的电瓶车充电需求日益增加&#xff0c;但传统充电方式存在诸多安全隐患。电瓶车智能充电桩作为一种新型充电解决方案&#xff0c;能够有效解决充电难题&#xff0c;并提升充电安全性和便捷性。本文以ACX10A型电瓶车充电桩为…

生产看板真的有用吗?

​看板&#xff0c;对于从事制造行业的人员来说&#xff0c;这并不陌生。但是对于看板起到的作用&#xff0c;那可就是众说纷纭&#xff0c;有人说&#xff0c;看板是领导的“面子工程”&#xff0c;是混淆上级视察的工具&#xff1b;也有人说&#xff0c;看板真切地帮助车间提…

刷服务器固件

猫眼淘票票 大麦 一 H3C通用IP 注:算力服务器不需要存储 二 刷服务器固件 1 登录固定IP地址 2 升级BMC版本 注 虽然IP不一致但是步骤是一致的 3 此时服务器会出现断网现象&#xff0c;若不断网等上三分钟ping一下 4 重新登录 5 断电拔电源线重新登录查看是否登录成功

机器学习算法在推荐系统中的应用:从数据预处理到模型部署实战指南

机器学习算法在推荐系统中的应用&#xff1a;从数据预处理到模型部署实战指南 介绍 在当今信息爆炸的时代&#xff0c;推荐系统扮演了越来越重要的角色&#xff0c;它可以帮助用户发现和获取个性化的信息、产品或服务。而推荐系统中的机器学习算法则是其核心引擎&#xff0c;能…

上门按摩系统架构与功能分析

一、系统架构 服务端用Java语言&#xff08;最低JDK1.8&#xff0c;支持JDK11以及JDK17&#xff09;、MySQL数据库&#xff08;标配5.7版本&#xff0c;支持MySQL8&#xff09;&#xff0c;Mybatis ORM框架&#xff0c;Redis缓存&#xff0c;nginx代理&#xff0c;前端用uniap…

使用mne对运动想象数据bciIV进行预处理

需要的库 mne numpy scipy scikit-learn pip install mne numpy scipy scikit-learn 数据下载 对Data sets 2a ‹4-class motor imagery› 四分类的运动想象来进行mne的处理。 BCI Competition IV 数据的说明如下 [22 EEG channels (0.5-100Hz; notch filtered), 3 EOG chann…

设计模式 行为型 策略模式(Strategy Pattern)与 常见技术框架应用 解析

策略模式&#xff08;Strategy Pattern&#xff09;核心思想是将算法的实现从使用该算法的类中分离出来&#xff0c;作为独立的对象&#xff0c;通过接口来定义算法家族&#xff0c;这样就可以很容易地改变或扩展算法。通过这种方式&#xff0c;可以避免在客户端代码中使用大量…

配置管理工具和k8s功能重叠部分的优势比较

通过自动化配置管理工具&#xff08;如 Ansible、Puppet、Chef&#xff09;和应用内管理机制&#xff0c;也可以实现自动部署、扩缩容、负载均衡和故障恢复等功能。Kubernetes&#xff08;K8s&#xff09;在这些方面具有哪些独特的优势呢&#xff0c;尤其是在云原生环境和大规模…

OpenHarmony AVScreenCaptureRecorder录屏开发指导

一、简介 OpenHarmony 5.0新增了AVScreenCaptureRecorder ArkTs API。用户可以调用录屏AVScreenCaptureRecorder API录制屏幕&#xff0c;采集音频源数据&#xff0c;获取封装后的音视频文件&#xff0c;然后通过文件的形式流转到其他模块进行播放或处理&#xff0c;用于以文件…

CSS Grid 布局示例(基本布局+代码属性描述)

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>CSS Grid 布局示例</title><style>.gri…

爬虫学习案例3

爬取美女图片 优美图库地址 一页图片 安装依赖库文件 pip install selenium requests beautifulsoup4import time import requests import random from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.chrome.service import Service fr…

简单的spring boot tomcat版本升级

简单的spring boot tomcat版本升级 1. 需求 我们使用的springboot版本为2.3.8.RELEASE&#xff0c;对应的tomcat版本为9.0.41&#xff0c;公司tomcat对应版本发现攻击者可发送不完整的POST请求触发错误响应&#xff0c;从而可能导致获取其他用户先前请求的数据&#xff0c;造…

http源码分析

一、HttpURLConnection http连接池源码分析 二、HttpClient 连接池&#xff0c;每个路由最大连接数 三、OkHttp okhttp的连接池与socket连接

阿里云DDoS防护:如何更换IP地址,保护您的云服务器

随着网络攻击日益增多&#xff0c;DDoS&#xff08;分布式拒绝服务&#xff09;攻击已经成为对企业和个人云资源的一大威胁。为了帮助用户抵御这类攻击&#xff0c;阿里云推出了强大的DDoS防护服务&#xff0c;保障您的云服务器免受恶意流量的影响。今天&#xff0c;九河云就来…

[sdx12] Qualcomm SDX12查看基线版本

about.html文件 Build部分 Product SDX12.LE.1.0-00263-NBOOT.NEFS.PROD-1.90789.1 Distribution SDX12.LE.1.0|AMSS|Standard|OEM: Build Components部分 从以上截图可以看到以下模块的版本号及格式 BOOT 基线版本号 BOOT.BF.3.1.c3-00010-SDX12AAAAANAZB-1 Distr…

Qt天气预报系统界面关闭

Qt天气预报系统界面关闭 1、点击右上角x退出1.1添加控件1.2修改控件名字1.3编程实现控件功能 2、鼠标右键退出2.1重写鼠标点击事件2.2添加定义2.3添加一个菜单2.3.1创建一个菜单指针2.3.2创建一个菜单对象2.3.3显示菜单2.3.4定义一个菜单退出动作2.3.5在当前鼠标位置显示菜单2.…

vue2实现excel文件预览

一、插件 通过xlsx插件解析excel数据&#xff0c;对解析后的html组件进行渲染展示。 npm install xlsx 二、完整代码 <template><!-- excel文件预览 --><divelement-loading-text"拼命加载中"element-loading-spinner"el-icon-loading"…

【简博士统计学习方法】2. 统计学习方法的基本分类

2. 统计学习方法的基本分类 监督学习所学习的数据都是已经标注过的&#xff1b;无监督学习所学习的数据没有标注信息&#xff1b;半监督学习只含有少量标注&#xff0c;大多数没有标注&#xff08;利用已标注的数据来学习去标注未标注的数据&#xff09; 2.1 监督学习 图里的…