Linux搭建Hadoop集群(详细步骤)

前言

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
说白了就是实现一个任务可以在多个电脑上计算的过程。

一:准备工具

1.1 VMware
1.2Linux服务器(两台,创建一个克隆一个即可)
1.3 hadoop-2.7.3.tar(Hadoop的安装文件)
1.4 jdk-8u65-linux-x64.t.gz(hadoop是基于java的,要有java的jdk)
1.5.SSH服务(远程连接工具)
1.6Xshell或者 winSCP(远程传输工具)

VMware的安装下载和Linux服务器的创建请参考这篇文章;
虚拟机开启SSH服务以及Xshell连接服务器请参考这篇文章。
两个安装文件,大家可以在网盘自行获取:

通过网盘分享的文件:jdk及Hadoop
链接: https://pan.baidu.com/s/1tnHohO3GHNFAuWZqiq51lg?pwd=2rxu 提取码: 2rxu

二:Linux服务器的配置

最好是一开始就切换到管理员模式(输入su,回车后输入登录密码),便于后续对文件的操作。
目前是两台服务器,你需要确定一台为主节点,另一台为子节点。这个待会我们会修改主机名称来区分两个节点,我这里一台命名为hadoop01,一台是hadoop02(这些是创建主机时设置的名字,随时都可以重命名)。

2.1 服务器IP的查看

刚创建的服务器的IP分配一般都是DHCP模式,这时可以查看到网卡中的IP信息,每个人的IP地址是不同的,你需要根据自己的IP地址进行配置。
在命令行输入

ifconfig

在这里插入图片描述
在这里插入图片描述

接下来需要进行静态IP的配置,并检查两台服务器是否可以上网,可以和本地机通信。最好是都配置成静态IP,防止重启时IP变化,出现无法连接的情况。

2.2静态IP的配置

刚才我们查看了IP地址,网关查看步骤点击VMware工作台左上角"编辑“——》虚拟网络编辑器——》NET设置——》网关IP(每个人的网关也不同)

在这里插入图片描述

根据自己的IP和网关,可以提前在记事本上写上以下配置信息

#Hadoop01:
IPADDR=192.168.132.128
NETMASK=255.255.255.0
GATEWAY=192.168.132.2(网关可以在虚拟网络上设置上查看,一般都是xxx.xxx.xxx.2)
DNS1:8.8.8.8
#和hadoop01一样,我们配置hadoop02的网卡信息
Hadoop02:
IPADDR=192.168.132.129
NETMASK=255.255.255.0
GATEWAY=192.168.132.2
DNS1:8.8.8.8

然后进入一个文件夹,然后查看当前目录下是否有你的网卡文件,我们要进入网卡中修改IP地址信息

cd /etc/sysconfig/network-scripts

在这里插入图片描述我这边的网卡文件是ifcfg-ens160,进入这个文件中

vi  ifcfg-ens160

我们看到原始的信息,接下来在需要修改我标注的地方(进入该文件中需要按“i”键盘,进入编辑模式,修改完成后按“ Esc”键,退出编辑模式,然后输入“ :wq”保存并退出)。

在这里插入图片描述

同样的操作,我们也把hadoop02的静态IP配置好。
修改完成后reboot重启,两台都要重启(当然你也可以按照接下来的步骤修改完主机映射后再重启)。
为了保证我们的主机都能上网,需要再在本地机的控制面板中修改VMnet8中配置IP地址和网关:控制面板——》网络和共享中心——》更改适配器设置——》双击VMnet8——》属性——》找到TCP/ipv4——》使用下面的IP地址。
更改完成后确定。

在这里插入图片描述

然后测试两台主机能否上网,直接ping百度。如果有问题的话,可以参考这篇文章,希望能有所帮助。

在这里插入图片描述
在这里插入图片描述

2.3Xshell连接服务器(接下来的操作均在Xshell上完成)

为了便于后续传输文件给服务器,我们使用远程传输工具Xshell(这个你可以自行选择,winSCP也可以),连接两台服务器。

在这里插入图片描述

2.4修改主机名

我这里时hadoop01为主节点,hadoop02是子节点。名字的修改是为了区分这两个节点

hostnamectl set-hostname(空格)主机名

在这里插入图片描述

2.5修改主机名称以及主机映射

由于后面的步骤我们会多次使用到IP地址,因此这里修改IP地址和主机名的映射会方便我们后续的操作。

vi /etc/hosts

i键进入编辑模式,输入以下信息后保存退出。

192.168.132.128 hadoop01
192.168.132.129 hadoop02

在这里插入图片描述

同样的,hadoop02也是这样的操作

操作完成之后重启主机

reboot

那么重启之后,我们会发现主机名称已经完成更改了,此时我们就可以直接ping 主机名,就可以测试通信了。
在这里插入图片描述

你也可以用本地机直接ping虚拟机服务器名
在这里插入图片描述

2.6配置免密登录

首先关闭防火墙

systemctl stop firewalld.service

回到根目录

cd /

生成公钥和私钥(前提是你的主机已经安装了ssh服务,并且已经开此服务。如果没有安装ssh,请参考这篇文章)
执行命令,生成公钥私钥

ssh-keygen -t rsa

一直回车即可

在这里插入图片描述

拷贝密钥到主节点

ssh-copy-id hadoop01

在这里插入图片描述
复制分发放置公钥的文件给其他虚拟机(hadoop02)

scp /root/.ssh/authorized_keys hadoop02:/root/.ssh

在这里插入图片描述

目前主机的配置工作就完成了,接下来我们就需要往主机上传一些安装包。

三:上传并配置jdk

(以下是两台主机都需要操作,有需要一台主机的我会标注)。在上传安装包之前,我们先在两台主机上创建几个文件夹,用来存放我们解压出的数据

3.1创建文件夹

Hadoop01和hadoop02都要创建
放置数据

mkdir -p /export/data

软件安装目录

mkdir -p /export/servers

放置软件包

mkdir -p /export/software

在这里插入图片描述

3.2 下载一个rz的插件,我们待会上传文件时需要用到

前提是你已经安装了yum源,才可以通过yum来下载安装rz插件

yum install lrzszcd -y

如果输入命令后报错,应该就是没有安装yum,可以参考以下操作。

yum的安装

直接使用wget下载(前提是你的虚拟机上中的服务器是可以正常联网的)

#进入系统YUM源的目录,查看该目录下有多少yum源
cd /etc/yum.repos.d

我的只有一个之前安装过的yum源,但是很多软件都无法安装了,因此下载一个新的yum源
在这里插入图片描述

本文我们用的是阿里源,阿里源的网址是:https://mirrors.aliyun.com/repo/,你可以找到适合自己的版本进行下载,以下是下载命令,你只需要将后面的版本改成自己的而即可。

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

安装完成以后你可以查看当前目录下yum的个数

在这里插入图片描述在这里插入图片描述然后你就可以使用yum安装工具啦

比如你可以下载lrzsz插件,实现本地文件通过Xshell上传到虚拟机。

yum install lrzsz

在这里插入图片描述
你在Xshell中输入rz,即可打开你的本地文件夹,你可以选取需要上传到服务器的文件。

在这里插入图片描述

3.3 查看主机上是否安装有jdk

java -version

搜索目前的jdk

rpm -qa | grep jdk

没有的话就不需要再卸载了

在这里插入图片描述
如果有的话,需要进行卸载

rpm -e –nodeps 搜索得到的jdk名

注意,这个是需要一条一条的卸载的。卸载完成可以执行搜索命令查看下有没有没卸载的。

3.4 安装jdk(以下操作主节点hadoop01配置即可)

先切换到我们刚才创建的software目录下

cd /export/software

然后输入rz命令,通过Xshell将jdk包传入
在这里插入图片描述

在这里插入图片描述

点击关闭即可
在这里插入图片描述

3.5解压jdk

解压到我们创建好的servers文件夹中

tar -zxvf jdk-8u65-linux-x64.t.gz -C /export/servers/

在这里插入图片描述

切换路径

cd /export/servers/

重命名为jdk

mv jdk1.8.0_65 jdk

在这里插入图片描述

3.6配置jdk变量

vi /etc/profile

添加以下内容,写的是你的jdk路径(注意等号的前后不要有空格,否则无法识别)

export JAVA_HOME=/export/servers/jdk
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

在这里插入图片描述

保存退出后我们重新加载一下环境变量

source /etc/profile

然后检查下Java版本

java -version

在这里插入图片描述如果是提示权限不够,可以输入以下命令增加权限

chmod -R +x /export/servers/jdk/bin/java

3.7将主节点hadoop01配置完成的jdk文件分发给hadoop02节点

在当前目录下输入ll,查看jdk的路径以及名称
然后切换到jdk目录

cd jdk

在这里插入图片描述
然后输入命令查看当前完整路径

pwd

在这里插入图片描述然后切换到/export/servers/

cd /export/servers/

再将jdk文件给hadoop02节点

scp -r /export/servers/jdk hadoop02:$PWD

回车执行后可能需要输入密码,输入即可

在这里插入图片描述

3.8分发环境变量配置

hadoop01

scp /etc/profile root@hadoop02:/etc/profile

将hadoop02切换到创建好的software目录,结合hadoop02加载环境变量,再用java -version验证是否成功
hadoop02

source /etc/profile

在这里插入图片描述

到此为止,两台主机的jdk文件及其环境变量配置完成,接下来安装Hadoop文件,并完成对其的文件和环境变量的配置。

四:Hadoop的安装和配置

4.1上传Hadoop安装包(以下操作主节点hadoop01配置即可)

进入下列目录

cd /export/software

然后rz上传Hadoop安装包
在这里插入图片描述

对安装包进行解压安装,解压路径为创建的servers目录

tar -zxvf hadoop-2.7.3.tar.gz -C /export/servers/

解压完成之后,切换目录

cd /export/servers/

给Hadoopjdk文件重命名

mv hadoop-2.7.3 hadoop

在这里插入图片描述

4.2配置Hadoop的系统环境变量

进入编辑模式

vi /etc/profile

添加以下内容

export HADOOP_HOME=/export/servers/hadoop
export PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

在这里插入图片描述

保存退出后,加载环境变量

source /etc/profile

检查是否安装成功

hadoop version

在这里插入图片描述
安装成功!

4.3 修改Hadoop配置文件

(1)hadoop-env.sh文件

切换目录

cd /export/servers/hadoop/etc/hadoop/

进入编辑模式

vi hadoop-env.sh

修改内容如下(将jdk的路径修改成自己的)

export JAVA_HOME=/export/servers/jdk

在这里插入图片描述

保存退出

(2)修改core-site.xml文件

进入编辑模式

vi core-site.xml

添加内容为:

<property><name>fs.defaultFS</name>#写成你的主节点主机名<value>hdfs://hadoop01:9000</value>
</property>
<property><name>hadoop.tmp.dir</name>#代表后面我们格式化文件的路径,如果是格式化多次,需要将该目录删掉<value>/export/servers/hadoop/tmp</value>
</property>

在这里插入图片描述

保存退出

(3)修改hdfs-site.xml 文件

进入编辑模式

vi hdfs-site.xml

添加以下内容

<property><name>dfs.replication</name>#代表你的子节点个数,也就是我这里的hadoop02<value>1</value>
</property>
<property><name>dfs.namenode.secondary.http.address</name>#子节点的主机名<value>hadoop02:50090</value>
</property>

在这里插入图片描述保存退出

(4)修改mapred-site.xml文件

修改之前需要先拷贝一下mapred-site.xml.template文件,命名为mapred-site.xml

输入命令

cp mapred-site.xml.template mapred-site.xml

进入编辑

vi mapred-site.xml

输入以下命令

<property><name>mapreduce.framework.name</name><value>yarn</value>
</property>

在这里插入图片描述

(5)修改yarn-site.xml文件

进入编辑模式

vi yarn-site.xml

添加以下命令

#将含端口的value标签中的节点名改成你自己的主节点名字
<property><name>yarn.resourcemanager.address</name><value>hadoop01:8032</value>
</property>
<property><name>yarn.resourcemanager.scheduler.address</name><value>hadoop01:8030</value>
</property>
<property><name>yarn.resourcemanager.resource-tracker.address</name><value>hadoop01:8031</value>
</property>
<property><name>yarn.resourcemanager.admin.address</name><value>hadoop01:8033</value>
</property>
<property><name>yarn.resourcemanager.webapp.address</name><value>hadoop01:8088</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>

(6)修改 slaves文件

该文件十分重要,因为启动Hadoop 的时候,系统总是根据当前 slaves 文件中 slave 节点名称列表启动集群,不在列表中的slave节点便不会被视为计算节点。
进入编辑模式

vi slaves

修改内容为两台虚拟机的主机名(也就是你的主节点和子节点的名字)
在这里插入图片描述保存退出

4.4将配置好的环境分发给另一台主机

scp /etc/profile hadoop02:/etc/profile
scp -r /export/ hadoop02:/

由于hadoop中配置的文件较多,因此分发时比较慢
在这里插入图片描述

4.5 在hadoop02上重新加载下环境

source /etc/profile

在这里插入图片描述

4.6格式化集群(hadoop01主节点完成)

本次格式化只需要第一次启动集群时进行
使用命令

hdfs namenode -format

在这里插入图片描述

4.7开启集群服务(hadoop01主节点完成)

先关闭防火墙(两台都要关闭)

systemctl stop firewalld

关闭防火墙开机自启

systemctl disable firewalld

开启集群服务

start-dfs.sh  或 stop-dfs.sh
#一键开启集群服务
start-all.sh  或  stop-all.sh

在这里插入图片描述
查看jps,可以先将权限设为777

chmod 777 /export/servers/jdk/bin/jps

可以看到,目前主节点显示的是五个进程

在这里插入图片描述

4.8查看子节点进程

子节点hadoop02的进程:
在这里插入图片描述

你也可以查看集群报告:

hdfs dfsadmin -report

停止集群报告

stop-all.sh

到此为止,Hadoop的集群环境已经配置完毕,接下来检测下能否在浏览器中正常访问端口。

五:验证Hadoop是否配置成功

本地浏览器输入

hadoop01:50070

出现以下图片就说明你的Hadoop集群环境搭建成功啦!
在这里插入图片描述

你也可以访问8088端口

hadoop01:8088

在这里插入图片描述

以上就是Hadoop环境的搭建步骤,如有不足,感谢补充。

六:参考

从零开始Hadoop安装和配置,图文手把手教你,定位错误(已部署成功)
视频参考

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

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

相关文章

【中间件学习】Git的命令和企业级开发

一、Git命令 1.1 创建Git本地仓库 仓库是进行版本控制的一个文件目录。我们要想对文件进行版本控制&#xff0c;就必须创建出一个仓库出来。创建一个Git本地仓库对应的命令是 git init &#xff0c;注意命令要在文件目录下执行。 hrxlavm-1lzqn7w2w6:~/gitcode$ pwd /home/hr…

力扣6~10题

题6&#xff08;中等&#xff09;&#xff1a; 思路&#xff1a; 这个相较于前面只能是简单&#xff0c;个人认为&#xff0c;会print打印菱形都能搞这个&#xff0c;直接设置一个2阶数组就好了&#xff0c;只要注意位置变化就好了 python代码&#xff1a; def convert(self,…

复习HTML(进阶)

前言 上一篇的最后我介绍了在表单中&#xff0c;上传文件需要使用到 method属性 和enctype属性。本篇博客主要是详细的介绍这些知识 <form action"http://localhost:8080/test" method"post" enctype"multipart/form-data"> method属性…

clientWidth,offsetWidth,scrollHeight

clientWidth: offsetWidth&#xff1a; scrollHeight&#xff1a;

幂,你去哪儿了-《分析模式》漫谈37

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 “Analysis Patterns”的第3章的图3.5&#xff0c;原文的图是&#xff1a; 2004&#xff08;机械工业出版社&#xff09;中译本的图是&#xff1a; direct翻译成分子&#xff0c;inv…

Python 从入门到实战33(使用MySQL)

我们的目标是&#xff1a;通过这一套资料学习下来&#xff0c;通过熟练掌握python基础&#xff0c;然后结合经典实例、实践相结合&#xff0c;使我们完全掌握python&#xff0c;并做到独立完成项目开发的能力。 上篇文章我们讨论了数据库编程接口操作的相关知识。今天我们将学习…

M3u8视频由手机拷贝到电脑之后,通过potplayer播放报错找不到文件地址怎么解决?

该文章前面三节主要介绍M3u8视频是什么&#xff0c;视频播放错误(找不到地址)的解决方法在后面 M3U8是一种多媒体播放列表文件格式&#xff0c;主要用于流媒体播放。 一、文件格式特点 1. 文本文件&#xff1a;M3U8是一个采用 UTF-8 编码的文本文件&#xff0c;这意味着它可…

CSS基础-盒子模型(三)

9、CSS盒子模型 9.1 CSS常用长度单位 1、px&#xff1a;像素&#xff1b; 2、em&#xff1a;相对元素font-size的倍数&#xff1b; 3、rem&#xff1a;相对根字体的大小&#xff0c;html标签即是根&#xff1b; 4、%&#xff1a;相对于父元素进行计算。 注意&#xff1a;CSS样…

基于OpenCV的实时年龄与性别识别(支持CPU和GPU)

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 社区特色…

C语言文件操作(上)(27)

文章目录 前言一、为什么要用文件&#xff1f;二、什么是文件&#xff1f;程序文件数据文件文件名文件类型文件缓冲区文件指针 三、流流的概念标准流 总结 前言 C语言可以直接操作文件&#xff0c;如果你是第一次听说这个特性&#xff0c;可能会眼前一亮&#xff0c;感到惊奇  …

四.网络层(上)

目录 4.1网络层功能概述 4.2 SDN基本概念 4.3 路由算法与路由协议 4.3.1什么是路由协议&#xff1f; 4.3.2什么是路由算法&#xff1f; 4.3.3路由算法分类 (1)静态路由算法 (2)动态路由算法 ①全局性 OSPF协议与链路状态算法 ②分散性 RIP协议与距离向量算法 4.3.…

Python手绘五星红旗,庆75周年

环境 pip install matplotlib pip install numpy 代码 import matplotlib.pyplot as plt import numpy as np# 中国国旗的标准尺寸比例是 3:2 width, height 300, 200 # 这里可以调整为任何满足3:2比例的尺寸# 创建一个新图形 fig, ax plt.subplots(figsize(width/100, h…

快速熟悉Nginx

一、Nginx是什么&#xff1f; ‌Nginx是一款高性能、轻量级的Web服务器和反向代理服务器。‌ ‌特点‌&#xff1a;Nginx采用事件驱动的异步非阻塞处理框架&#xff0c;内存占用少&#xff0c;并发能力强&#xff0c;资源消耗低。‌功能‌&#xff1a;Nginx主要用作静态文件服…

JS 介绍/书写位置/输入输出语法

目录 1. JS 介绍 1.1 JS 是什么 1.2 JS 的作用 1.3 JS 的组成 2. JS 书写位置 2.1 内部 JS 2.2 外部 JS 2.3 内联 JS 3. JS 注释和结束符 4. JS 输入输出语法 4.1 输入语法 4.2 输入语句 4.3 执行顺序 5. 字面量 1. JS 介绍 1.1 JS 是什么 1.2 JS 的作用 1.3 JS …

网 络 安 全

网络安全是指保护网络系统及其所存储或传输的数据免遭未经授权访问、使用、揭露、破坏、修改或破坏的实践和技术措施。网络安全涉及多个方面&#xff0c;包括但不限于以下几个方面&#xff1a; 1. 数据保护&#xff1a;确保数据在传输和存储过程中的完整性和保密性&#xff0c;…

Python3 爬虫 中间人爬虫

中间人&#xff08;Man-in-the-Middle&#xff0c;MITM&#xff09;攻击是指攻击者与通信的两端分别创建独立的联系&#xff0c;并交换其所收到的数据&#xff0c;使通信的两端认为其正在通过一个私密的连接与对方直接对话&#xff0c;但事实上整个会话都被攻击者完全控制。在中…

macOS Sequoia 15.0.1 (24A348) 正式版 ISO、IPSW、PKG 下载

macOS Sequoia 15.0.1 (24A348) 正式版 ISO、IPSW、PKG 下载 iPhone 镜像、Safari 浏览器重大更新和 Apple Intelligence 等众多全新功能令 Mac 使用体验再升级 请访问原文链接&#xff1a;https://sysin.org/blog/macOS-Sequoia/ 查看最新版。原创作品&#xff0c;转载请保留…

vsomeip用到的socket

概述&#xff1a; ​ vsomeip用到的socket的代码全部都在implementation\endpoints目录下面&#xff0c;主要分布在下面六个endpoint类中&#xff1a; local_client_endpoint_impl // 本地客户端socket&#xff08;UDS Socket或者127.0.0.1的socket&#xff09;local_server…

解决ros2 rviz Fixed Frame No TF data问题

新建一个终端&#xff0c;然后输入 &#xff1a;map后的数字可以任意&#xff0c;100也可以。注意map与框架名称一致。 rosrun tf2_ros static_transform_publisher 0.0 0.0 0.0 0.0 0.0 0.0 map 5

(作业)第三期书生·浦语大模型实战营(十一卷王场)--书生入门岛通关第1关Linux 基础知识

关卡任务 闯关任务需要在关键步骤中截图&#xff1a; 任务描述 完成所需时间 闯关任务 完成SSH连接与端口映射并运行hello_world.py 10min 可选任务 1 将Linux基础命令在开发机上完成一遍 10min 可选任务 2 使用 VSCODE 远程连接开发机并创建一个conda环境 10min 可选任务 3 创…