Hadoop分布式集群搭建教程

目录

    • 前言
    • 环境准备
    • 一、创建虚拟机
    • 二、虚拟机网络配置
    • 三、克隆虚拟机
    • 四、Linux系统配置
    • 五、Hadoop的部署配置
    • 六、Hadoop集群的启动
    • Bug解决
    • 参考文章

前言

大数据课程需要搭建Hadoop分布式集群,在这里记录一下搭建过程

环境准备

搭建Haoop分布式集群所需环境:

  • VMware:VMware-workstation-full-17.0.2-21581411
  • CentOS:CentOS-7-x86_64-DVD-2003,
  • Hadoop:hadoop-3.1.3.tar
  • JDK:jdk-8u212-linux-x64.tar.gz

一、创建虚拟机

新建虚拟机
在这里插入图片描述
设置用户
在这里插入图片描述
命名虚拟机
在这里插入图片描述
自定义硬件,完成虚拟机创建
在这里插入图片描述
开始启动虚拟机,并安装CentOS
在这里插入图片描述

二、虚拟机网络配置

NAT网络模式:

  1. 宿主机可以看做一个路由器,虚拟机通过宿主机的网络来访问 Internet;
  2. 可以安装多台虚拟机,组成一个小型局域网,例如:搭建 hadoop 集群、分布式服务。

VMnet8 设置静态 IP
在这里插入图片描述
Centos 网络设配器为 NAT 模式
在这里插入图片描述
VMware 虚拟网络设置
在这里插入图片描述
验证结果
在这里插入图片描述

因为网络这里一块,老早之前就配置过了,如果觉得不详细,可以参看以下文章:https://blog.csdn.net/ruiqu1650914788/article/details/124973841

三、克隆虚拟机

集群搭建需要至少三台服务器,这里我们再克隆两台虚拟机克HadoopSlave1HadoopSlave2
在这里插入图片描述
直接无脑下一步,记得修改名称
在这里插入图片描述
在这里插入图片描述

四、Linux系统配置

1、配置时钟同步
三台虚拟机都需要配置

yum install ntpdate
ntpdate ntp5.aliyun.com

2、关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

3、配置主机名

三台虚拟机都需要配置
root用户身份登录HadoopMaster节点,直接使用vim编辑器打开network网络配置文件,命令如下:

vim /etc/sysconfig/network

打开network文件,配置信息如下,将HadoopMaster节点的主机名修改为master,即下面第二行代码所示:

NETWORKING=yes   #启动网络HOSTNAME=master   #主机名

两个子节点分别为:

NETWORKING=yes   #启动网络HOSTNAME=slave1  #主机名
NETWORKING=yes   #启动网络HOSTNAME=slave2  #主机名

测试
在这里插入图片描述
4、 配置Hosts列表

主机列表的作用是让集群中的每台服务器彼此之间都知道对方的主机名和IP地址。因为在Hadoop分布式集群中,各服务器之间会频繁通信,做数据的同步和负载均衡。

root用户身份登录三个节点,将下面3行代码添加到主机列表/etc/hosts 文件中。

192.168.17.130 master192.168.17.131 slave1192.168.17.132 slave2

ip地址可以使用命令:ip addr查看
在这里插入图片描述

验证主机hosts是否配置成功

ping masterping slave1ping slave2

5、关闭selinux

vim /etc/selinux/config
修改为 SELINUX=disabled

在这里插入图片描述
6、免密钥登录配置
免密钥登录是指从一台节点通过SSH方式登录另外一台节点时,不用输入该节点的用户名和密码,就可以直接登录进去,对其中的文件内容直接进行操作。没有任何校验和拦截。
从root用户切换到hadoop用户,输入su hadoop,在终端生成密钥,输入以下命令:

ssh-keygen –t rsa

一直回车即可

复制公钥文件到authorized_keys文件中,命令如下:

cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys

修改authorized_keys文件的权限,只有当前用户hadoop有权限操作authorized_keys文件,命令如下:

chmod 600 /home/hadoop/.ssh/authorized_keys

HadoopMaster主节点生成的authorized_keys公钥文件复制到HadoopSlave1HadoopSlave2从节点,命令如下:

scp /home/hadoop/.ssh/authorized_keys hadoop@slave1:/home/hadoop/.ssh/scp /home/hadoop/.ssh/authorized_keys hadoop@slave2:/home/hadoop/.ssh/

如果出现提示,则输入yes并按回车键,输入密码

hadoop用户身份登录HadoopSlave1HadoopSlave2节点,进入到/home/hadoop/.ssh目录,修改authorized_keys文件的权限为当前用户可读可写,输入以下命令:

chmod 600 /home/hadoop/.ssh/authorized_keys

在HadoopMaster节点的Terminal终端上输入以下命令验证免密钥登录

 ssh slave1

在这里插入图片描述

五、Hadoop的部署配置

1、安装JDK
三台虚拟机都需要配置
卸载现有JDK

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

将JDK文件复制到新建的/usr/java 目录下解压,修改用户的系统环境变量文件/etc/profile

tar –zxvf    xxx
vi /etc/profile

写入以下配置:

export JAVA_HOME=/usr/java/jdk1.8.0_212export JRE_HOME=/usr/java/jdk1.8.0_212/jreexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/libexport PATH=$JRE_HOME/bin:$JAVA_HOME/bin:$PATH

使配置生效

source /etc/profile

测试

java -version

在这里插入图片描述
2、安装Hadoop
Hadoop安装文件通过SSH工具上传到HadoopMaster节点hadoop用户的主目录下。进入hadoop用户主目录,输入以下命令进行解压:

tar –zxvf hadoop-3.1.3.tar.gz

3、配置环境变量hadoop-env.sh

vim /home/hadoop/hadoop-3.1.3/etc/hadoop/hadoop-env.sh

在文件靠前的部分找到以下代码(没有就自己添加):

export JAVA_HOME=${JAVA_HOME}

将这行代码修改为:

export JAVA_HOME=/usr/java/jdk1.8.0_212

保存文件,此时Hadoop具备了运行时的环境。

4、配置环境变量yarn-env.sh
YARN主要负责管理Hadoop集群的资源。这个模块也是用Java语言开发出来的,所以也要配置其运行时的环境变量JDK。

打开Hadoop的YARN模块的环境变量文件yarn-env.sh,只需要配置JDK的路径。

  vim /home/hadoop/hadoop-3.1.3/etc/hadoop/yarn-env.sh
#export JAVA_HOME

将这行代码修改为:

export JAVA_HOME=/usr/java/jdk1.8.0_212

5、配置核心组件core-site.xml

Hadoop集群的核心配置,是关于集群中分布式文件系统的入口地址和分布式文件系统中数据落地到服务器本地磁盘位置的配置。

分布式文件系统(Hadoop Distributed FileSystem,HDFS)是集群中分布式存储文件的核心系统,将在后面章节详细介绍,其入口地址决定了Hadoop集群架构的主节点,其值为hdfs://master:9000,协议为hdfs,主机为master,即HadoopMaster节点,端口号为9000

vim /home/hadoop/hadoop-3.1.3/etc/hadoop/core-site.xml

<!-- 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>/home/hadoop/hadoopdata</value></property></configuration>

HDFS文件系统数据落地到本地磁盘的路径信息/home/hadoop/hadoopdata,该目录需要单独创建。

在三个虚拟机上的目录/home/hadoop下创建目录hadoopdata

mkdir hadoopdata

6、 配置文件系统hdfs-site.xml

在分布式的文件系统中,由于集群规模很大,所以集群中会频繁出现节点宕机的问题。分布式的文件系统中,可通过数据块副本冗余的方式来保证数据的安全性,即对于同一块数据,会在HadoopSlave1HadoopSlave2节点上各保存一份。这样,即使HadoopSlave1节点宕机导致数据块副本丢失,HadoopSlave2节点上的数据块副本还在,就不会造成数据的丢失。

配置文件hdfs-site.xml有一个属性,就是用来配置数据块副本个数的。在生产环境中,配置数是3,也就是同一份数据会在分布式文件系统中保存3份,即它的冗余度为3。也就是说,至少需要3台从节点来存储这3份数据块副本。在Hadoop集群中,主节点是不存储数据副本的,数据的副本都存储在从节点上,由于现在集群的规模是3台服务器,其中从节点只有两台,所以这里只能配置成1或者2。

vim /home/hadoop/hadoop-3.1.3/etc/hadoop/hdfs-site.xml

<!-- Put site-specific property overrides in this file. --> 下方,输入:

<configuration><property><!--配置数据块的副因子(即副本数)为2--><name>dfs.replication</name><value>2</value></property></configuration>

7、 配置YARN资源系统yarn-site.xml

YARN的全称是Yet Another Resource Negotiator,即另一种资源协调者,运行在主节点上的守护进程是ResourceManager,负责整个集群资源的管理协调;运行在从节点上的守护进程是NodeManager,负责从节点本地的资源管理协调。

YARN的基本工作原理:每隔3秒,NodeManager就会把它自己管理的本地服务器上的资源使用情况以数据包的形式发送给主节点上的守护进程ResourceManager,这样,ResourceManager就可以随时知道所有从节点上的资源使用情况,这个机制叫“心跳”。当“心跳”回来的时候,ResourceManager就会根据各个从节点资源的使用情况,把相应的任务分配下去。“心跳”回来时,携带了ResourceManager分配给各个从节点的任务信息,从节点NodeManager就会处理主节点ResourceManager分配下来的任务。客户端向整个集群发起具体的计算任务,ResourceManager是接受和处理客户端请求的入口。

vim /home/hadoop/hadoop-3.1.3/etc/hadoop/yarn-site.xml

<!-- Site specific YARN configuration properties -->下方,输入:

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

8、 配置计算框架mapred-site.xml
YARN主要负责分布式集群的资源管理,将Hadoop MapReduce分布式并行计算框架在运行中所需要的内存、CPU等资源交给YARN来协调和分配,通过对mapred-site.xml配置文件的修改来完成这个配置。

vim /home/hadoop/hadoop-3.1.3/etc/hadoop/mapred-site.xml

<!-- Put site-specific property overrides in this file. -->下方,输入:

<configuration><!—MapReduce计算框架的资源交给YARN来管理--><property><name>mapreduce.framework.name</name><value>yarn</value></property></configuration>

在这里可能出现以下Bug在这里插入图片描述
处理方式:
先运行shell命令:hadoop classpath

在这里插入图片描述
mapred-site.xml添加以下配置

<property><name>yarn.application.classpath</name><value>hadoop classpath返回的信息</value>
</property>

9、复制hadoop到从节点

主节点的角色HadoopMaster已在配置HDFS分布式文件系统的入口地址时进行了配置说明,从节点的角色也需要配置,此时,workers文件就是用来配置Hadoop集群中各个从节点角色。

打开workers配置文件。

vim /home/hadoop/hadoop-3.1.3/etc/hadoop/workers

用下面的内容替换workers文件中的内容:

slave1slave2

Hadoop集群中,每个节点上的配置和安装的应用都是一样的,这是分布式集群的特性,所以,此时已经在HadoopMaster节点上安装了Hadoop-3.1.3的应用,只需要将此应用复制到各个从节点(即HadoopSlave1节点和HadoopSlave2节点)即可将主节点的hadoop复制到从节点上。

scp –r /home/hadoop/hadoop-3.1.3 hadoop@slave1:~/scp –r /home/hadoop/hadoop-3.1.3 hadoop@slave2:~/

10、配置Hadoop启动的系统环境变量
和JDK的配置环境变量一样,也要配置一个Hadoop集群的启动环境变量PATH。
此配置需要同时在三台虚拟机上进行操作,操作命令如下:

vi /etc/profile

将下面的代码追加到文件的末尾:

#Hadoop Path configurationexport HADOOP_HOME=/home/hadoop/hadoop-2.5.2export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

输入:wq保存退出,并执行生效命令:

source /etc/profile

登录HadoopSlave1HadoopSlave2节点,依照上述配置方法,配置Hadoop启动环境变量。

这里存在一个问题:CentOS 7 每次进入要重新加载环境变量
解决方式:
进入系统配置文件

vim ~/.bashrc

末尾添加如下代码

source /etc/profile

保存即可

六、Hadoop集群的启动

启动集群时,首先要做的就是在HadoopMaster节点上格式化分布式文件系统HDFS:

hadoop  namenode -format

启动Hadoop

cd /home/hadoop/hadoop-3.1.3
sbin/start-all.sh

查看进程是否启动
HadoopMaster的Terminal终端执行jps命令,在打印结果中会看到4个进程,分别是ResourceManager、Jps、NameNode和SecondaryNameNode
在这里插入图片描述
HadoopSlave的终端执行jps命令,在打印结果中会看到3个进程,分别是NodeManager、DataNode和Jps
注意:jps是JDK的命令,如果没有该命令,请检查JDK是否配置正确
在这里插入图片描述

如果子节点不存在DataNode,参考以下文章:https://blog.csdn.net/m0_61232019/article/details/129324464
也可以删除hadoopdata目录里面的内容重新启动Hadoop来解决

检查NameNodeDataNode是否正常
在这里插入图片描述
检查YARN是否正常
在这里插入图片描述
运行PI实例检查集群是否启动成功
在这里插入图片描述

Bug解决

找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster
参考:https://blog.csdn.net/chuang_z/article/details/122456309

跳出异常 Task failed task_1643869122334_0004_m_000000
参考:https://blog.csdn.net/chengyingcheng0324/article/details/122777415

hadoop集群启动后子节点datanode没有启动
参考:https://blog.csdn.net/m0_51697147/article/details/127953064

解决每次重启机器环境变量都需要 source /etc/profile 才生效
参考:https://blog.csdn.net/qq_41538097/article/details/107110230

明明有文件,却显示找不到该文件,可以给文件添加权限

chmod 777 folder   #给所有用户赋予可读写的权限
chown user folder  #给user用户赋予权限

参考文章

https://blog.csdn.net/weixin_45380782/article/details/123750416
https://blog.csdn.net/qq_26709459/article/details/128792229

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

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

相关文章

kafka属性说明

kafka中关于一些字段说明 groupId :标识消费者分组id&#xff0c;如果多个消费者id相同&#xff0c;就表示这几个消费者是一组&#xff0c;当一组多个消费者消费同一个topic时&#xff0c;一组中只会有一个成功消费 代码如下 这时只会有一条消息被消费

轻松搭建个人web站点:OpenWRT教程结合内网穿透技术实现公网远程访问

&#x1f525;博客主页&#xff1a; 小羊失眠啦 &#x1f516;系列专栏&#xff1a; C语言、Linux &#x1f325;️每日语录&#xff1a;山不让尘&#xff0c;川不辞盈。 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前言 uhttpd 是 OpenWrt/LuCI 开发者从零开始编写的 Web …

视频美颜SDK,提升企业视频通话质量与形象

在今天的数字时代&#xff0c;视频通话已经成为企业与客户、员工之间不可或缺的沟通方式。然而&#xff0c;由于网络环境、设备性能等因素的影响&#xff0c;视频通话中的画面质量往往难以达到预期效果。为了提升视频通话的质量与形象&#xff0c;美摄美颜SDK应运而生&#xff…

【C语言】预处理详解

前言 在上一篇博客中&#xff0c;我们了解了代码是如何执行的&#xff0c;简单介绍了编译中预处理步骤&#xff0c;在这篇博客中我们将详细了解预处理。 文章目录 一、预定义符号二、#define定义2.1 定义常量2.2 定义宏2.3 创建代码片段 三、#和##运算符3.1 字符串化操作符#3.2…

python关联分析实践学习笔记

曾经有个沃尔玛超市&#xff0c;它将啤酒与尿布这样两个奇怪的东西放在一起进行销售&#xff0c;并且最终让啤酒与尿布这两个看起来没有关联的东西的销量双双增加。 我们关注的是在这样的场景下&#xff0c;如何找出物品之间的关联规则。接下来就来介绍下如何使用Apriori算法&…

RabbitMQ与springboot整合

1、基本概念 Server&#xff1a;接收客户端的连接&#xff0c;实现AMQP实体服务&#xff1b;Connection&#xff1a;连接&#xff0c;应用程序与Server的网络连接&#xff0c;TCP连接&#xff1b;Channel&#xff1a;信道&#xff0c;消息读写等操作在信道中进行。客户端可以建…

读书笔记-《ON JAVA 中文版》-摘要26[第二十三章 注解]

文章目录 第二十三章 注解1. 基本语法1.1 基本语法1.2 定义注解1.3 元注解 2. 编写注解处理器2.1 编写注解处理器2.2 注解元素2.3 默认值限制 3. 使用javac处理注解4. 基于注解的单元测试5. 本章小结 第二十三章 注解 注解&#xff08;也被称为元数据&#xff09;为我们在代码…

【Overload游戏引擎细节分析】从视图投影矩阵提取视锥体及overload对视锥体的封装

overoad代码中包含一段有意思的代码&#xff0c;可以从视图投影矩阵逆推出摄像机的视锥体&#xff0c;本文来分析一下原理 一、平面的方程 视锥体是用平面来表示的&#xff0c;所以先看看平面的数学表达。 平面方程可以由其法线N&#xff08;A, B, C&#xff09;和一个点Q(x0,…

让 Visual Studio 用上 ChatGPT

一、简介 Visual chatGPT Studio 是 Visual Studio 的一个免费扩展&#xff0c;它直接在 IDE 中添加了 chatGPT 功能。它允许用户以可以根据菜单功能的方式使用 chatGPT。 二、功能介绍 该扩展提供了一组使用 ChatGPT 命令&#xff0c;可以在编辑器中选择你需要处理的代码或…

k8s修改集群IP--不重置集群

正常在用集群想要更换ip master 节点ip192.168.10.138 改为192.168.10.148 node1节点ip192.168.10.139 改为192.168.10.149 node2节点ip192.168.10.140 改为192.168.10.150 master 节点 1)执行脚本1233.sh 1233.sh 内容如下&#xff1a; # master 节点 export oldip1192.168.…

可完全替代FTP的文件传输工具大集合

在当今的信息时代&#xff0c;文件传输是我们日常工作和生活中不可或缺的一项功能。无论是企业内部还是与外部合作伙伴之间&#xff0c;我们都需要频繁地进行各种类型和大小的文件的交换和共享。然而&#xff0c;传统的文件传输方式&#xff0c;如FTP、HTTP、CIFS等&#xff0c…

一键部署开源AI(人工智能对话模型)(支持显卡或CPU加内存运行)--ChatGLM-6B

一、基本介绍&#xff1a; 基于ChatGLM-6B 的快速安装服务&#xff0c;支持一键安装&#xff0c;无需任何服务配置和代码编写即可完成。 ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型&#xff0c;基于 General Language Model (GLM) 架构&#xff0c;具有 62 亿参数…

多尺度retinex图像去雾算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 clc; clear; close all; warning off; addpath(genpath(pwd)); rng(default)img_in im2doub…

微软 AR 眼镜新专利:包含热拔插电池

近日&#xff0c;微软在增强现实&#xff08;AR&#xff09;领域进行深入的研究&#xff0c;并申请了一项有关于“热插拔电池”的专利。该专利于2023年10月5日发布&#xff0c;描述了一款采用模块化设计的AR眼镜&#xff0c;其热插拔电池放置在镜腿部分&#xff0c;可以直接替代…

SpringBoot 如何使用 Sleuth 进行分布式跟踪

使用Spring Boot Sleuth进行分布式跟踪 在现代分布式应用程序中&#xff0c;跟踪请求和了解应用程序的性能是至关重要的。Spring Boot Sleuth是一个分布式跟踪解决方案&#xff0c;它可以帮助您在分布式系统中跟踪请求并分析性能问题。本文将介绍如何在Spring Boot应用程序中使…

Zabbix第二部分:基于Proxy分布式部署实现Web监控和Zabbix HA集群的搭建

代理和高可用 一、基于zabbix-proxy的分布式监控1.1 分布式监控的作用1.2 数据流向1.3 构成组件 二、部署zabbix代理服务器Step1 前置准备Step2 设置 zabbix 的下载源&#xff0c;安装 zabbix-proxyStep3 部署数据库并将zabbix相关文件导入Step4 修改zabbix-proxy的配置文件&am…

简述WPF中MVVM的设计思想

近年来&#xff0c;随着WPF在生产、制造、工控等领域应用越来越广泛&#xff0c;对WPF的开发需求也在逐渐增多&#xff0c;有很多人不断的从Web、WinForm开发转向了WPF开发。 WPF开发有很多新的概念及设计思想&#xff0c;如数据驱动、数据绑定、依赖属性、命令、控件模板、数…

智慧工地:助力数字建造、智慧建造、安全建造、绿色建造

智慧工地管理系统融合计算机技术、物联网、视频处理、大数据、云计算等&#xff0c;为工程项目管理提供先进的技术手段&#xff0c;构建施工现场智能监控系统&#xff0c;有效弥补传统监理中的缺陷&#xff0c;对人、机、料、法、环境的管理由原来的被动监督变成全方位的主动管…

AlphaPose Pytorch 代码详解(一):predict

前言 代码地址&#xff1a;AlphaPose-Pytorch版 本文以图像 1.jpg&#xff08;854x480&#xff09;为例对整个预测过程的各个细节进行解读并记录 python demo.py --indir examples/demo --outdir examples/res --save_img1. YOLO 1.1 图像预处理 cv2读取BGR图像 img [480,…

SyntaxError: invalid character ‘:‘ (U+FF1A)问题解决

问题&#xff1a; SyntaxError: invalid character &#xff1a; (UFF1A) 原因及解决方法&#xff1a; 冒号输入的格式不对&#xff0c;冒号的输入为中文&#xff0c;改成英文即可。