转--Hadoop集群部署案例

模块简介

本模块主要练习Hadoop集群部署。

模块知识

● 使用Linux基础命令
● Hadoop集群搭建部署知识

环境准备

三台CentOS7操作系统的虚拟机
可以是3个Docker容器,也可以是三个VMWare/VirtualBox的虚拟机。三台虚拟机的最低配置为1核1G + 20G。如果是虚拟机中的Docker容器环境,则无需按照以下方式配置主机名和IP。若是按照《[选修]基于OpenEuler的Docker容器安装使用教程》创建的Docker容器环境,或者从一道云科技发展有限公司提供的百度盘链接下载的VMWare镜像直接导入的Docker容器环境,直接移步到“步骤一”开始。
● 可使用以下镜像安装虚拟机操作系统,或者自行搜索下载OpenEuler操作系统:

https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2207-02.iso

注意:若没有现成的虚拟机供你使用,VMWare或者VirtualBox请自行搜索下载并安装
● 使用以下命令将三台虚拟机的主机名分别修改为master、slave1、slave2:

vi /etc/hostname

● 使用以下命令设置三台虚拟机的固定IP:

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

打开文件后的初始内容如下:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=4a053340-23a9-4998-9e3c-9cf47ceaf727
DEVICE=ens33
ONBOOT=no

将第4行dhcp修改为none;将第15行no修改为yes。然后文件末尾再追加以下内容:

IPADDR=192.168.157.200
PREFIX=24
GATEWAY=192.168.157.2
DNS1=8.8.8.8
IPV6_PRIVACY=no

其中IPADDR的值三台虚拟机各不一样,请确保:
master为192.168.157.200,
slave1为192.168.157.201,
slave2为192.168.157.202。
注意:如果你的VMWare/VirtualBox给虚拟机的网段不是192.168.157.X,请在VMWare/VirtualBox的“虚拟网络编辑器”中修改为以上网段。当然你也可以使用你的虚拟机默认的网段来配置三台虚拟机的固定IP,只是需要注意后续步骤中的IP都要和你配置的IP相匹配。

模块内容

步骤一:配置host主机文件
1. 在Windows工作机的XShell工具中,通过SSH连接到master虚拟机上:

ssh root@192.168.157.200
  1. 输入密码,连接成功后,打开host的配置文件:
vi /etc/hosts
  1. 在文件末尾追加输入以下内容(按键盘上i键开启输入):
192.168.157.200 master
192.168.157.201 slave1
192.168.157.202 slave2

输入完成后保存并退出(按键盘上Esc键,然后输入:wq)。
4. 通过SSH分别连接到slave1和slave2虚拟机上,分别执行以上2~3操作
步骤二:配置SSH无密钥连接
1. 在master虚拟机的XShell连接对话中,输入以下命令生成master的密钥对:

ssh-keygen -t rsa
  1. 连按三次回车键。密钥对生成后,使用以下命令将密钥复制到slave1:
ssh-copy-id slave1

输入yes继续,输入slave1虚拟机的root用户的密码。
3. 再次使用以下命令将密钥复制到slave2:

ssh-copy-id slave2

输入yes继续,输入slave2虚拟机的root用户的密码。
4. 再次使用以下命令将密钥复制到master本身:

ssh-copy-id master

输入yes继续,输入master虚拟机的root用户的密码。
5. 通过SSH分别连接到slave1和slave2虚拟机上,分别执行以上1~4操作
步骤三:检查SSH无密钥连接
1. 在master虚拟机的XShell连接对话中,输入以下命令:

ssh slave1

检查是否不需要输入密码即可连接到slave1虚拟机。连接成功后终端显示:

[root@slave1]#
  1. 若显示以上内容,即表示slave1的无密钥连接配置成功,使用以下命令注销slave1的登录:
logout
  1. 使用同样的方法检查slave2和master本身是否配置成功无密钥连接。
    步骤四:在三台虚拟机上安装JDK
    1. 在master虚拟机的XShell连接对话中,输入以下命令创建software文件夹:
mkdir -p /root/software/
  1. 在Windows工作机上打开PowerShell,使用SCP命令将Windows工作机上的JDK安装包复制到master虚拟机的/root/software/路径下。
scp E:\BigData\Component\jdk-8u401-linux-x64.tar.gz root@192.168.157.200:/root/software/

输入master虚拟机的密码后等待复制完成。
注意:jdk-8u401-linux-x64.tar.gz文件的路径修改为你工作机上的该文件的实际路径。
3. 在master虚拟机的XShell连接对话中,输入以下命令解压JDK安装包:

tar -zxvf /root/software/jdk-8u401-linux-x64.tar.gz -C /usr/local/

这将在/usr/local/目录下创建一个名为jdk1.8.0_401的文件夹,并将JDK解压在这里。
4. 配置环境变量。输入以下命令创建一个新的环境变量配置文件:

vi /etc/profile.d/jdk.sh

在文件中添加以下内容:

export JAVA_HOME=/usr/local/jdk1.8.0_401
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

保存并退出。
5. 运行以下命令使环境变量配置生效:

source /etc/profile
  1. 运行以下命令验证JDK是否安装正确:
java -version

应该看到安装的JDK版本信息。
现在,已经成功安装了JDK并配置了相关的环境变量。
7. SSH连接到slave1和slave2虚拟机上,分别执行以上1~6操作,这将会给slave1和slave2成功安装JDK。
注意:执行scp命令时将IP地址替换为slave1和slave2的地址,即192.168.157.201和192.168.157.202
步骤五:在三台虚拟机上安装Hadoop
1. 在Windows工作机上打开PowerShell,使用SCP命令将Windows工作机上的Hadoop包复制到master虚拟机的/root/software/路径下。

scp E:\BigData\Component\hadoop-3.3.6.tar.gz root@192.168.157.200:/root/software/

输入master虚拟机的密码后等待复制完成。
注意:hadoop-3.3.6.tar.gz文件的路径修改为你工作机上的该文件的实际路径。
2. 在master虚拟机的XShell连接对话中,输入以下命令解压hadoop-3.3.6.tar.gz包:

tar -zxvf /root/software/hadoop-3.3.6.tar.gz -C /root/software/

这会将包内容解压到/root/software/hadoop-3.3.6/文件夹中。
3. 在/root/software/hadoop-3.3.6/下创建相关文件夹,输入以下命令:

mkdir -p /root/software/hadoop-3.3.6/hadoopDatas/tempDatas
mkdir -p /root/software/hadoop-3.3.6/hadoopDatas/namenodeDatas
mkdir -p /root/software/hadoop-3.3.6/hadoopDatas/datanodeDatas
mkdir -p /root/software/hadoop-3.3.6/hadoopDatas/dfs/nn/edits
mkdir -p /root/software/hadoop-3.3.6/hadoopDatas/dfs/snn/name
mkdir -p /root/software/hadoop-3.3.6/hadoopDatas/dfs/nn/snn/edits
  1. 配置hadoop-env.sh设置JAVA_HOME环境变量及Hadoop用户:
vi /root/software/hadoop-3.3.6/etc/hadoop/hadoop-env.sh

文件末尾追加输入以下内容:

export JAVA_HOME=/usr/local/jdk1.8.0_401
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
  1. 配置core-site.xml:
vi /root/software/hadoop-3.3.6/etc/hadoop/core-site.xml

删除已有的<configuration>对,然后文件末尾追加输入以下内容:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
</configuration>
  1. 配置hdfs-site.xml:
vi /root/software/hadoop-3.3.6/etc/hadoop/hdfs-site.xml

删除已有的<configuration>对,然后文件末尾追加输入以下内容:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/root/software/hadoop-3.3.6/hadoopDatas/namenodeDatas</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/root/software/hadoop-3.3.6/hadoopDatas/datanodeDatas</value>
    </property>
</configuration>
  1. 配置mapred-site.xml:
vi /root/software/hadoop-3.3.6/etc/hadoop/mapred-site.xml

删除已有的<configuration>对,然后文件末尾追加输入以下内容:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <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>
  1. 配置yarn-site.xml:
vi /root/software/hadoop-3.3.6/etc/hadoop/yarn-site.xml

删除已有的<configuration>对,然后文件末尾追加输入以下内容:

<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
</configuration>
  1. 配置workers:
vi /root/software/hadoop-3.3.6/etc/hadoop/workers

删除已有的内容,然后输入以下内容:

master
slave1
slave2
  1. 从master将Hadoop复制到slave1,执行以下命令:
scp -r /root/software/hadoop-3.3.6/ slave1:/root/software/
  1. 从master将Hadoop复制到slave2,执行以下命令:
scp -r /root/software/hadoop-3.3.6/ slave2:/root/software/
  1. 配置Hadoop环境变量,执行以下命令:
vi /etc/profile.d/hadoop.sh

输入以下内容:

export HADOOP_HOME=/root/software/hadoop-3.3.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

保存并退出。
使Hadoop环境变量生效,执行以下命令:

source /etc/profile
  1. 该配置Hadoop环境变量的操作在slave1和slave2上分别操作一次
    步骤六:格式化HDFS
    在master节点执行以下命令:
hdfs namenode -format

步骤七:启动Hadoop集群
在master节点执行以下命令:

start-dfs.sh

应该看到如下输出:

[root@master ~]# start-dfs.sh
Starting namenodes on [master]
Last login: Wed Feb 21 19:51:38 EST 2024 from 192.168.157.1 on pts/0
Starting datanodes
Last login: Wed Feb 21 19:54:24 EST 2024 on pts/0
Starting secondary namenodes [master]
Last login: Wed Feb 21 19:54:27 EST 2024 on pts/0
[root@master ~]#

则代表hdfs启动成功,接着再次执行以下命令:

start-yarn.sh

应该看到如下输出:

[root@master ~]# start-yarn.sh
Starting resourcemanager
Last login: Wed Feb 21 19:54:35 EST 2024 on pts/0
Starting nodemanagers
Last login: Wed Feb 21 19:56:42 EST 2024 on pts/0
[root@master ~]#

则代表yarn启动成功,接着再次执行以下命令:

mapred --daemon start historyserver

应该看到如下输出:

[root@master ~]# mapred --daemon start historyserver
[root@master ~]#

步骤八:验证
分别在master、slave1、slave2三个节点执行以下命令:

jps

应该分别看到如下输出:
master:

[root@master ~]# jps
1606 DataNode
2230 NodeManager
2087 ResourceManager
1816 SecondaryNameNode
2681 Jps
2620 JobHistoryServer
1471 NameNode
[root@master ~]#

slave1:

[root@slave1 ~]# jps
1562 Jps
1355 DataNode
1452 NodeManager
[root@slave1 ~]#

slave2:

[root@slave2 ~]# jps
1363 DataNode
1571 Jps
1460 NodeManager
[root@slave2 ~]#

步骤九:关闭master虚拟机防火墙
在master节点执行以下命令:

sudo systemctl stop firewalld
sudo systemctl disable firewalld

上述命令将停止并禁用firewalld服务,这是 CentOS 7 和更新版本中的默认防火墙服务。禁用防火墙以便在工作机上通过Web浏览器访问Hadoop。
注意:在正式生产环境中不建议禁用防火墙,需要配置防火墙开放某些端口。可使用以下命令查看服务正在监听的端口

ss -nltp

或者

netstat -tuln

步骤十:通过Web浏览器访问Hadoop
在工作机上打开浏览器,输入以下网址访问Hadoop:

http://192.168.157.200:9870/

应该看到以下画面:
 



输入以下网址查看集群:

http://192.168.157.200:8088/

应该看到以下画面:
 



步骤十一:重启服务
在每次重新启动电脑后,需要重新启动Hadoop的服务,执行以下命令:

start-dfs.sh
start-yarn.sh
mapred --daemon start historyserver

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

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

相关文章

【数据结构与算法】哈夫曼树,哈夫曼编码 详解

哈夫曼树的数据结构。 struct TreeNode {ElemType data;TreeNode *left, *right; }; using HuffmanTree TreeNode *;结构体包含三个成员&#xff1a; data 是一个 ElemType 类型的变量&#xff0c;用于存储哈夫曼树节点的数据。left 是一个指向 TreeNode 类型的指针&#xf…

力扣85.最大矩形

力扣85.最大矩形 遍历所有行作为底边 做求矩形面积&#xff08;84. class Solution {public:int maximalRectangle(vector<vector<char>>& matrix) {if (matrix.empty()) return 0;int n matrix.size(),m matrix[0].size();int res0;vector<int> li…

css 动画

transform的3D动画 3D形变函数会创建一个合成层来启用GPU硬件加速 translate transform: translateY(100px);transform: translateX(100px);transform: translateZ(100px);transform: translate3d(100px,100px,100px); // x,y,z的简写rotate deg弧度 transform: rotateX(-40…

CST初级教程 七

本教程将实例讲解CST设计优化仿真及其操作步骤。下面是一个微带功率分配器的图片&#xff1a; 一 3D建模 Substrate 建模 Step1 绘制Substrate外形 Substrate 的尺寸参数如下&#xff1a; Step2 添加新材料Substrate Step3 将新建的材料分配给Substrate 选中新建材料Substra…

一个cmake版的C++项目代码模板,包含流水线、git以及代码格式化配置等支持CICD发布流程

本文给出快速构建C项目的代码仓库模板 &#xff0c;简单却完整 主要包括&#xff1a; 编译脚本 打包上传脚本- 依赖拉取 代码格式化配置 git配置 流水线pipeline配置 使用这个模板 你只需要&#xff1a;将源文件放到模块目录下&#xff0c;并添加到cmake中即可 一、简…

JAVA医院绩效考核系统源码 功能特点:大型医院绩效考核系统源码

JAVA医院绩效考核系统源码 功能特点&#xff1a;大型医院绩效考核系统源码 医院绩效管理系统主要用于对科室和岗位的工作量、工作质量、服务质量进行全面考核&#xff0c;并对科室绩效工资和岗位绩效工资进行核算的系统。医院绩效管理系统开发主要用到的管理工具有RBRVS、DRGS…

emqx5.6.1 数据、配置备份与迁移

EMQX 支持导入和导出的数据包括&#xff1a; EMQX 配置重写的内容&#xff1a; 认证与授权配置规则、连接器与 Sink/Source监听器、网关配置其他 EMQX 配置内置数据库 (Mnesia) 的数据 Dashboard 用户和 REST API 密钥客户端认证凭证&#xff08;内置数据库密码认证、增强认证…

EE trade:炒伦敦金的注意事项及交易指南

在贵金属市场中&#xff0c;伦敦金因其高流动性和全球认可度&#xff0c;成为广大投资者的首选。然而&#xff0c;在炒伦敦金的过程中&#xff0c;投资者需要注意一些关键点。南华金业小编带您一起来看看。 国际黄金报价 一般国际黄金报价会提供三个价格&#xff1a; 买价(B…

“拿来主义”学习边框动画(附源码)

“拿来主义”学习边框动画&#xff0c;附源码&#xff0c;CV可用 扫码关注&#xff1a;小拾岁月&#xff0c;发送 “边框动画”&#xff0c;获取源码。 需求分析 从边框的旋转动画&#xff0c;我们可以看出&#xff0c;可以在按钮元素的下方添加给 360旋转 的元素。同时&…

MQ~消息队列能力、AMQP协议、现有选择(Kafka、RabbitMQ、RocketMQ 、Pulsar)

消息队列 消息队列看作是一个存放消息的容器&#xff0c;当我们需要使用消息的时候&#xff0c;直接从容器中取出消息供自己使用即可。由于队列 Queue 是一种先进先出的数据结构&#xff0c;所以消费消息时也是按照顺序来消费的。 常⽤的消息队列主要这 五 种&#xff0c;分别…

简单理解爬虫的概念

简单来说&#xff1a; 爬虫&#xff0c;即网络蜘蛛&#xff0c;是伪装成客户端与服务器进行数据交互的程序。 代码 代码教程分享&#xff08;无偿&#xff09;&#xff1a; 思路 1.获取网页的源码 pythondef askURL(url):head{"User-Agent":"Mozilla/5.0 (L…

51单片机STC89C52RC——5.1 LCD1602液晶显示屏

目录 目的 一&#xff0c;STC单片机模块 二&#xff0c;LCD1602 2.1 模块简介 2.2 针脚 2.3 DDRAM地址与显示器对应关系 2.4 标准字库表 2.5 常用指令 2.6 读写操作 三&#xff0c;创建Keil项目 四&#xff0c;代码 五&#xff0c;代码编译、下载到51单片机 六&a…

数据库精选题(二)(引言+关系代数)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;数据库 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 前言 常见概念 一、什么是数据库&#xf…

面试突击:深入理解 Java 中的异常

本文已收录于&#xff1a;https://github.com/danmuking/all-in-one&#xff08;持续更新&#xff09; 前言 哈喽&#xff0c;大家好&#xff0c;我是 DanMu。今天想和大家聊聊 Java 中的异常。异常处理是一种重要的概念&#xff0c;因为程序总是会出现各种意料之外的问题&…

代码签名证书有什么作用?有哪些申请步骤?

代码签名证书是一种数字证书&#xff0c;它为软件开发者提供一种验证软件代码真实性和完整性的方法。通过使用代码签名证书&#xff0c;开发者可以确保他们的软件在发布后没有被篡改&#xff0c;并且用户可以信任软件的来源。 什么是代码签名证书&#xff1f; 代码签名证书是提…

同三维高清大屏多功能一体机简介——高清多能数字矩阵

产品简介 同三维高清多能数字矩阵&#xff08;硬件集软件于一体&#xff09;是依据当前高清视频正广泛应用于各类项目工程的整体形势而专门研发的、特点显著、优势诸多、极具创新性的专业级一体化监控产品。高清多能数字矩阵采用WINDOWS操作系统&#xff0c;基于高性能配置的刀…

换电脑后导入git本地仓库记录

导入本地仓库tig记录 换了新电脑&#xff0c;将旧电脑的数据盘查到新的笔记本之后发现&#xff0c;使用pycharm 读取不到本地的git提交记录了&#xff0c;我没有将本地git上传到远程仓库的习惯&#xff0c;这可抓马了&#xff0c;硬盘插回去的话也太麻烦了。试了 vscode 提示设…

【英伟达GPU的挑战者】Groq—AI大模型推理的革命者

目录 引言第一部分&#xff1a;Groq简介第二部分&#xff1a;Groq的特点与优势1、高性能推理加速2、近存计算技术3、专用ASIC芯片设计4、低延迟与高吞吐量5、成本效益分析6、易用性与集成性7、软件与硬件的协同设计 第三部分&#xff1a;Groq的使用指南1、准备工作2、简单使用样…

通过 Setapp 使用 240 多款 Mac 生产力工具以及 GPT-4o

Setapp 是一项革命性的订阅服务&#xff0c;可以使用 240 多款 Mac 应用程序的综合套件&#xff0c;并配有强大的人工智能助手。 通过 Setapp 为你的工作效率和生产力增添魔力。 Setapp 官网&#xff1a;访问&#xff08;提供 7 天试用&#xff09; Setapp 的主要功能 AI 助手…

高通安卓12-Input子系统

1.Input输入子系统架构 Input Driver(Input设备驱动层)->Input core(输入子系统核心层)->Event handler(事件处理层)->User space(用户空间) 2.getevent获取Input事件的用法 getevent 指令用于获取android系统中 input 输入事件&#xff0c;比如获取按键上报信息、获…