VMware创建Linux虚拟机之(三)Hadoop安装与配置及搭建集群

 

Hello,world!

🐒本篇博客使用到的工具有:VMware16 ,Xftp7

若不熟悉操作命令,推荐使用带GUI页面的CentOS7虚拟机

我将使用带GUI页面的虚拟机演示

虚拟机(Virtual Machine)

指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。

【确保服务器集群安装和配置已经完成!】可参考我的上篇博客:

VMware创建Linux虚拟机之(一)实现免密登录_Vim_飞鱼的博客-CSDN博客

VMware创建Linux虚拟机之(二)下载安装JDK与配置Java环境变量_Vim_飞鱼的博客-CSDN博客

前言


请根据读者的自身情况,进行相应随机应变。

我的三台CentOS7服务器:
主机:master(192.168.149.101)
从机:slave1(192.168.149.102)
从机:slave2(192.168.149.103)

每一个节点的安装与配置是相同的,在实际工作中,通常在master节点上完成安装和配置后,然后将安装目录通过 scp 命令复制到其他节点即可。

注意:所有操作都是root用户权限,需要我们登陆时选择root用户登录。

下载Hadoop安装包


Hadoop官网:Apache Hadoophttp://hadoop.apache.org/
我这里用的Hadoop版本下载地址:Apache Hadoophttps://hadoop.apache.org/release/3.3.4.html

在下一篇博客中,我将下载安装  jdk-8u261-linux-x64.tar   推荐大家使用,目前 jdk17 与 hadoop 3并不兼容,别问我怎么是知道的🙂

解压Hadoop安装包(只在master做)


        首先,需要确保 network 网络已经配置好,使用 Xftp 等类似工具进行上传,把 hadoop-3.3.4.tar.gz 上传到 /opt/hadoop 目录内。
上传完成后,在 master 主机上执行以下代码:

cd /opt/hadoop

        进入/opt/hadoop目录后,执行解压缩命令:

tar -zxvf hadoop-3.3.4.tar.gz

        回车后系统开始进行解压,屏幕会不断滚动解压过程,执行成功后,系统在 hadoop 目录自动创建 hadoop-3.3.4 子目录。

然后修改文件夹名称为“hadoop”,即hadoop安装目录,执行修改文件夹名称命令:

mv hadoop-3.3.4 hadoop

        注意:也可用Xftp查看相应目录是否存在,确保正确完成。

我们进入安装目录,查看一下安装文件,如果显示如图文件列表,说明压缩成功

 b86ce6f52ff643db98bace37dc390396.png 

配置env文件(只在master做)


       请先看如下命令(希望可以记住它们,后续操作会经常使用)
A. 进入编辑状态:insert
B. 删除:delete
C. 退出编辑状态:ctrl+[
D. 进入保存状态:ctrl+]
E. 保存并退出:" :wq " 注意先输入英文状态下冒号
F. 不保存退出:" :q! " 同上

大概执行顺序:A→B→C→D→E

配置bashrc文件


       执行命令输入:

vi /etc/bashrc

      在bashrc文件末尾加入:

#hadoop config
export HADOOP_HOME=/opt/hadoop/hadoop
export CLASSPATH=$CLASSPATH:$($HADOOP_HOME/bin/hadoop classpath)
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

     输入source命令,进行配置刷新:

source /etc/bashrc

配置jdk文件



        执行命令:

vi /opt/hadoop/hadoop/etc/hadoop/hadoop-env.sh

找到 “ export JAVA_HOME ” 这行,用来配置jdk路径

修改为:export JAVA_HOME=/usr/local/java/jdk1.8.0_162/

如下图所示:(位于54行,gui页面可查看)

 3c077844b25f411698e615f4926c1082.png 

 bf449f4bef214e5d9024e0b595a3072c.png  

配置核心组件文件(只在master做)


      Hadoop 的核心组件文件是 core-site.xml,位于 /opt/hadoop/hadoop/etc/hadoop 子目录下,用vi编辑 core-site.xml 文件,需要将下面的配置代码放在文件的 <configuration>和</configuration> 之间。

执行编辑 core-site.xml 文件的命令:

vi /opt/hadoop/hadoop/etc/hadoop/core-site.xml

需要在<configuration>和</configuration>之间加入的代码:

<property><name>fs.defaultFS</name><value>hdfs://master:9000</value>
</property>
<property><!-- Hadoop 数据存放的路径,namenode,datanode 数据存放路径都依赖本路径,不要使用 file:/ 开头,使用绝对路径即可namenode 默认存放路径 :file://${hadoop.tmp.dir}/dfs/namedatanode 默认存放路径 :file://${hadoop.tmp.dir}/dfs/data--><name>hadoop.tmp.dir</name><value>/opt/hadoop/hadoop/hadoopdata</value>
</property>

如下图所示:

e84880ab9de14ebba9548d585924c9c3.png

编辑完成后,保存退出即可!

配置文件系统(只在master做)


       Hadoop 的文件系统配置文件是 hdfs-site.xml ,位于 /opt/hadoop/hadoop/etc/hadoop 子目录下,用vi编辑该文件,需要将以下代码放在文件的<configuration>和</configuration>之间。

执行编辑hdfs-site.xml文件的命令:

vi /opt/hadoop/hadoop/etc/hadoop/hdfs-site.xml

需要在<configuration>和</configuration>之间加入的代码:

<property><name>dfs.namenode.http-address</name><!-- Master为当前机器名或者IP地址 --><value>master:9001</value>
</property>
<property><name>dfs.namenode.name.dir</name><!-- 以下为存放节点命名的路径 --><value>file:/opt/hadoop/hadoop/hadoopdata/dfs/name</value>
</property>
<property><name>dfs.datanode.data.dir</name><!-- 以下为存放数据命名的路径 --><value>file:/opt/hadoop/hadoop/hadoopdata/dfs/data</value>
</property>
<property><name>dfs.replication</name><!-- 备份次数,因为有2台DataNode--><value>2</value>
</property>
<property><name>dfs.webhdfs.enabled</name><!-- Web HDFS--><value>true</value>
</property>
<property><name>dfs.permissions</name><value>false</value>
</property><property><name>dfs.namenode.secondary.http-address</name><value>Master:50090</value>
</property>

如下图所示:

bde4359a1b4e43b785951cc89e21d431.png

编辑完成后,保存退出即可!

配置 yarn-site.xml 文件(只在master做)


      yarn 的站点配置文件是 yarn-site.xml ,位于 /opt/hadoop/hadoop/etc/hadoop 子目录下,依然用vi编辑该文件,将以下代码放在文件的<configuration>和</configuration>之间。

执行编辑yarn-site.xml文件的命令:

vi /opt/hadoop/hadoop/etc/hadoop/yarn-site.xml

需要在<configuration>和</configuration>之间加入的代码:

        <property><name>yarn.resourcemanager.hostname</name><!-- Master为当前机器名或者ip号 --><value>master</value></property><property><name>yarn.nodemanager.aux-services</name><!-- Node Manager辅助服务 --><value>mapreduce_shuffle</value></property><property><name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name><!-- Node Manager辅助服务类 --><value>org.apache.hadoop.mapred.ShuffleHandler</value></property><property><name>yarn.nodemanager.resource.cpu-vcores</name><!-- CPU个数,需要根据当前计算机的CPU设置--><value>1</value></property><property><name>yarn.resourcemanager.admin.address</name><!-- Resource Manager管理地址 --><value>master:8033</value></property><property><name>yarn.resourcemanager.webapp.address</name><!-- Resource Manager Web地址 --><value>master:8088</value></property>

如下图所示:

9d4be622d20f4264a27fa6d3ce439aa4.png

编辑完成后,保存退出即可!

配置MapReduce计算框架文件(只在master做)


      在 /opt/hadoop/hadoop/etc/hadoop 子目录下,系统已经有一个 mapred-site.xml.template 文件,我们需要将其复制并改名,位置不变。

执行复制和改名操作命令:

cp /opt/hadoop/hadoop/etc/hadoop/mapred-site.xml.template /opt/hadoop/hadoop/etc/hadoop/mapred-site.xml

可直接创建

      然后用 vi 编辑 mapred-site.xml 文件,需要将下面的代码填充到文件的<configuration>和</configuration>之间。

执行命令:

vi /opt/hadoop/hadoop/etc/hadoop/mapred-site.xml

需要在<configuration>和</configuration>之间加入的代码:

        <property><name>mapreduce.framework.name</name><!-- MapReduce Framework --><value>yarn</value></property><property><name>mapreduce.jobhistory.address</name><!-- MapReduce JobHistory, 当前计算机的IP --><value>master:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><!-- MapReduce Web App JobHistory, 当前计算机的IP --><value>master:19888</value></property><property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=/opt/hadoop/hadoop</value></property><property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=/opt/hadoop/hadoop</value></property><property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=/opt/hadoop/hadoop</value></property>

如下图所示:

72ac3b13e6a347609b666c61a7da1c34.jpeg

编辑完毕,保存退出即可!

配置master的slaves文件(只在master做)


     workers 文件给出了Hadoop集群的 slave节点列表,该文件十分的重要,因为启动Hadoop的时候,系统总是根据当前 workers 文件中的 slave 节点名称列表启动集群,不在列表中的 slave 节点便不会被视为计算节点。

执行编辑slaves文件命令:

vi /opt/hadoop/hadoop/etc/hadoop/workers

注意:用vi编辑slaves文件,应该根据读者您自己所搭建集群的实际情况进行编辑。
例如:我这里已经安装了slave1和slave2,并且计划将它们全部投入Hadoop集群运行。

所以应当加入以下代码:

slave1
slave2

如下图所示:

e35fe1ae566540e49b0d37d673c8d46f.png

注意:删除slaves文件中原来localhost那一行!

编辑完成,保存退出即可!

复制master上的Hadoop到slave节点(只在master做)


      通过复制master节点上的hadoop,能够大大提高系统部署效率,假设我们有200台需要配置…笔者岂不白头,话不多说直接 scp

由于我这里有slave1和slave2,所以复制两次。

复制命令:执行命令即可

scp -r /opt/hadoop root@slave1:/opt
scp -r /opt/hadoop root@slave2:/opt

Hadoop集群的启动-配置操作系统环境变量(三个节点都做master+slave1/2)


回到用户目录命令:

cd /opt/hadoop

然后用vi编辑.bash_profile文件,命令:
 

vi /etc/profile

最后把以下代码追加到文件的尾部:

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

如下图所示:

4f947b0827a54463837ff52ed5f1dbc6.png

保存退出后,执行命令:

source /etc/profile

source /etc/profile  命令是使上述配置变量生效(刷新)

提示:在slave1和slave2使用上述相同的配置方法,进行三个节点全部配置。

创建Hadoop数据目录(只在master做)


创建数据目录,命令是:

mkdir /opt/hadoop/hadoopdata

通过Xftp可查看该hadoopdata

如下图所示:

8eeb954775f84a1cb08370a6bb540c79.png

格式化文件系统(只在master做)


执行格式化文件系统命令:

hadoop namenode -format

或者执行:(推荐使用)

hdfs namenode -format

启动和关闭Hadoop集群(只在master做)


首先进入安装主目录,命令是:

cd /opt/hadoop/hadoop/sbin

提示:目前文件位置可在Xshell顶部栏观察

然后启动,命令是:

start-all.sh

执行命令后,系统提示 ” Are you sure want to continue connecting(yes/no)”,输入yes,之后系统即可启动。

如下图所示:(未进入sbin目录,也并无大碍)

d68bc88a5a884fc680dc3e3d4970a298.png
注意:可能会有些慢,千万不要以为卡掉了,然后强制关机,这是错误的。

如果要关闭Hadoop集群,可以使用命令: 

stop-all.sh

如下图所示:

 d3c0dfc9a26842bc939fcbd5994fff35.png

下次启动Hadoop时,无须NameNode的初始化,只需要使用 start-dfs.sh 命令即可,然后接着使用 start-yarn.sh 启动yarn。

实际上,Hadoop建议放弃(deprecated)使用start-all.sh和stop-all.sh一类的命令,而改用start-dfs.sh和start-yarn.sh命令。

start-dfs.sh
start-yarn.sh

验证Hadoop集群是否启动成功


      读者您可以在终端执行jps命令查看Hadoop是否启动成功。

master节点(名称节点),执行:

jps

如果显示:SecondaryNameNode、 ResourceManager、 Jps 和NameNode这四个进程,则表明主节点master启动成功

如下图所示:

1443baae5f734432b4d8246c5de8d491.png


然后分别在slave0和slave1节点下执行命令:

jps

如果成功显示:NodeManager、Jps 和 DataNode,这三个进程,则表明从节点即数据节点(slave1和slave2)启动成功

如下图所示:

344db156b2c140e49cb5f5004c0f8d5c.png

显示上述页面即表示我们的hadoop集群,全部且完全搭建成功!💪

注意:


hdfs namenode -format
每次格式化都会重新你创建一个namenodeId,而在默认情况下tmp/dfs/data下包含了上次format下的id,格式化不会清空datanode下的数据,导致启动失败。

因此,避免重复多次修改配置文件,避免Hadoop多次格式化

下次登陆,直接输入 start-dfs.sh  与start-yarn.sh 即可。

写到此处,此篇博客就完全结束了,如果各位大佬发现其中错误,欢迎指出!🙇‍

至此,此篇内容,完美结束!感谢浏览,发现问题,希望指正!💪

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

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

相关文章

XTU-OJ 1227-Robot

题目描述 假设在一个XOY坐标的平面上&#xff0c;机器人一开始位于原点&#xff0c;面向Y轴正方向。 机器人可以执行向左转&#xff0c;向右转&#xff0c;向后转&#xff0c;前进四个指令。 指令为 LEFT:向左转RIGHT:向右转BACK:向后转FORWORD n:向前走n(1≤n≤100)个单位 现在…

【环境】Linux下Anaconda/ Miniconda安装+百度Paddle环境搭建+Cudnn(3090显卡+CUDA11.8+cudnn8.6.0)

清华源帮助链接&#xff1a;https://mirror.tuna.tsinghua.edu.cn/help/anaconda/ 下载链接&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/ 其他深度学习环境相关博文&#xff1a;【stable-diffusion】4090显卡下dreambooth、lora、sd模型微调的GUI环境…

计算机网络-TCP协议

面向连接的运输&#xff1a;TCP TCP连接 TCP被称为面向连接的&#xff0c;因为在应用程序开始互传数据之前&#xff0c;TCP会先建立一个连接&#xff0c;该连接的建立涉及到三次“握手”。 TCP的连接不是一条真实存在的电路&#xff0c;而是一条逻辑链接&#xff0c;其共同状…

遍历树形结构记录

例如: 这是递归对树形结构的遍历 findMatchingValue(json1,json2){ if(json1.defaultLabel&&json2.some(item>item.titlejson1.defaultLabel)){ //将匹配的值保存起来 this.matchedValue.push(json1.defaultLabel) } if(json1.childrens&&json1.childrens.…

8.3 矢量图层点要素单一符号使用二

文章目录 前言单一符号&#xff08;Single symbol&#xff09;渲染图片标记&#xff08;Raster Image marker&#xff09;QGis代码实现 动画标记&#xff08;Animated marker&#xff09;QGis代码实现 总结 前言 上一篇教程介绍了矢量图层点要素单一符号中简单标记和svg标记本…

SiteGround主机最新购买使用指南及外贸建站教程

SiteGround是一家知名的虚拟主机服务提供商&#xff0c;它在过去几年中在WordPress和WooCommerce建站领域取得了显著的发展和改进。SiteGround致力于为用户提供专门针对WordPress优化的虚拟主机&#xff0c;并将WordPress深度集成到其主机服务中&#xff0c;使外贸建站过程变得…

GPT的前世今生:从gpt1到chatgpt的能力提升

从2017年google brain提出transformer模型&#xff0c;到2018年基于transformer模型open ai推出了gpt1模型以及google推出了bert模型&#xff0c;到2019-2021年open ai陆续推出gpt2和gpt3&#xff0c;再到2022-2023年推出chat-gpt和gpt4&#xff0c;大语言模型已经发展成了一个…

遥感语义分割、变化检测论文小trick合集(持续更新)

目录 &#x1f497;&#x1f497;1.影像融合机制 &#x1f497;&#x1f497;2.上下文聚合模块 &#x1f497;&#x1f497;3.adapter即插即用模块 &#x1f497;&#x1f497;1.影像融合机制 参考【多源特征自适应融合网络的高分遥感影像语义分割】文章中的“多源特征自适应…

快速排序(c语言代码实现)

交换排序&#xff1a;快速排序&#xff08;不稳定的排序&#xff09; 快速排序&#xff08;Quick Sort&#xff09;是一种常见的排序算法&#xff0c;它采用分治法的思想&#xff0c;对待排序序列进行划分&#xff0c;使得划分出的子序列可以分别进行排序&#xff0c;最终使整…

淘宝商品链接获取淘宝商品评论数据(用 Python实现淘宝商品评论信息抓取)

在网页抓取方面&#xff0c;可以使用 Python、Java 等编程语言编写程序&#xff0c;通过模拟 HTTP 请求&#xff0c;获取淘宝多网站上的商品详情页面评论内容。在数据提取方面&#xff0c;可以使用正则表达式、XPath 等方式从 HTML 代码中提取出有用的信息。值得注意的是&#…

Docker 镜像常用命令总结

目录 1. Docker镜像相关命令(重点掌握) 1.1 docker pull 镜像名称 [:tag] 拉取镜像 1.2 docker search 镜向名称 (查询某个镜像) 1.3 docker images 列出当前主机上所有镜像 1.4 docker rmi 镜像ID 删除镜像 1.5 docker system df 查看所有镜像容器所占空间 2. Docker …

JMeter + Ant + Jenkins持续集成-接口自动化测试

需要安装的工具&#xff1a; jdk1.8jmeter3.2ant1.9jenkins2.1 1、Jdkwin7系统如何安装jdk及环境变量的配置-百度经验 安装包安装设置环境变量验证是否安装正确 Java -version检查&#xff0c;如下就代表安装成功了&#xff0c;环境变量设置就去搜索了&#xff0c;网上很多…

牛客网刷题-(4)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

prosemirror 学习记录(四)decoration

使用 decorations 使用 props - decorations() 添加 decorations 写一个简单的插件&#xff1a;高亮所有 apple 节点 export const MyHighlightApplesPlugin new Plugin({props: {// view 每次变化都会执行 decorations 方法decorations(state) {let arrs [];state.doc.de…

QT项目如何打包成可执行文件

QT项目打包成可执行文件 一 建立一个文件夹二. 编译2.1 打开QT MSVC编译工具2.2 进入publish文件夹 一 建立一个文件夹 例如&#xff1a;publish 二. 编译 2.1 打开QT MSVC编译工具 2.2 进入publish文件夹 cd 路径 执行命令 windeployqt 项目名 例&#xff1a;windeployq…

美海军用于情报、监视和侦察的中大型无人系统概述

源自&#xff1a;中国指挥与控制学会 “人工智能技术与咨询” 发布 简 介 1 引 言 2 超大型无人潜航器 图1 波音“回声航行者”无人潜航器 图2 “虎鲸”超大型无人潜航器 3 中型无人水面舰艇 图3 “海鹰”无人水面舰艇 图4 “海上猎人”无人水面舰艇 4 …

SpringMVC 资源状态转移RESTful

文章目录 1、RESTful简介a>资源b>资源的表述c>状态转移 2、RESTful的实现HiddenHttpMethodFilterRESTful案例 1、RESTful简介 REST&#xff1a;Representational State Transfer&#xff0c;表现层资源状态转移。 a>资源 资源是一种看待服务器的方式&#xff0c…

GO语言代码示例

首先&#xff0c;我们需要安装 rod 库&#xff0c;这是一个用于构建网络爬虫的 Go 语言库。 使用 go get 命令安装 rod 库&#xff1a;go get -u github.com/gofiber/rod 创建一个新的 Go 程序文件&#xff0c;例如&#xff1a;main.go 在 main.go 文件中&#xff0c;导入 r…

都2023年了,诸佬们肯定熟知RabbitMQ了吧

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;曾经在某央企公司实习&#xff0c;目前入职某税务公司。本篇文章将记录和分享RabbitMQ相关的知识点。 本篇文章记录的基础知识&#xff0c;适合在学Java的小白&#xff0c;也适合复习中&#xff…

binutils 2.40 Linker (ld) 官方文档下载

前言 最近需要熟悉 elf 与 共享库 的链接与加载流程&#xff0c;需要先了解 elf 文件 是怎么链接的&#xff0c;链接脚本如何阅读 最有效的方式是查看 GNU 官方的 Linker (ld) 文档&#xff0c;通过查找&#xff0c;这个 Linker (ld) 属于 GNU binutils&#xff0c;当前的较新…