1.1 Hadoop伪分布式和完全分布式前期部署
2026/9/24 1:45:14 网站建设 项目流程

1.1.1 实验环境概述

本文档主要完成Hadoop伪分布式和完全分布式部署的前期准备工作,包括在VMware上创建虚拟机、进行系统初始化设置、配置网络连接,以及克隆多台虚拟机并分别完成网络配置,为后续Hadoop集群搭建奠定基础。

整个前期部署过程分为以下三个核心步骤:

  • 创建虚拟机:在VMware Workstation Pro中创建Ubuntu虚拟机并完成初始化设置。
  • 网络连接设置:配置虚拟网络编辑器与Ubuntu系统内的网络参数,确保可以正常联网。
  • 克隆虚拟机:克隆另外两台虚拟机并分别修改IP地址,完成三台节点的网络配置。

1.1.2 在VMware上创建虚拟机并初始化

1.1.2.1 创建虚拟机

在Windows系统中安装VMware Workstation Pro,运行主界面如下显示:

在VMware Workstation Pro主界面中点击创建新的虚拟机,安装Ubuntu系统,弹出如下界面:

选择典型(推荐),点击下一步,进入如下界面:

点击安装程序光盘映像文件(.iso系统光盘文件)并选择文件所在路径(ubuntu20.04文件),点击下一步,进入命名虚拟机对话框。

填写名称,格式要求:全英文小写,密码设置要简单,后续会经常输入。点击下一步,弹出如下界面:

填写虚拟机名称,选择虚拟系统安装位置,点击下一步,弹出磁盘容量设置:

按照图片所示默认设置即可,后续容量可以更改。点击下一步,进入虚拟机其他硬件配置界面:

点击界面中自定义硬件,弹出如下子界面:

选择处理器,设置处理器数量=2,每个处理器的内核数量=2,点击关闭,返回虚拟机设置界面,点击完成。

发现在VMware Workstation Pro主界面中出现node01新的Ubuntu虚拟系统,点击右侧开启此虚拟机,进入虚拟机初始化界面。

注意:如果最后安装过程中出现错误,可能是文件在拷贝过程中损坏,请重新拷贝新的.iso映像文件安装。

1.1.2.2 虚拟机初始化及屏幕设置

等待安装10分钟左右,即可进入Ubuntu系统登录界面。输入密码,确定登录,进入系统初始化,一直点击Next下一步,最后点击Done,完成初始化设置。

设置界面大小:第一步在VMware Workstation Pro主界面工具栏中,选择保持纵横比拉伸,此时屏幕清晰度不够,继续如下设置:

然后在Ubuntu系统界面下,右键点击屏幕,弹出如下窗口,点击Display Settings显示器设置,进入设置界面,选择2560*1600(16:10)分辨率(按自己喜好设置即可),并选择Scale尺度为200%,点击右上角绿色按钮Apply应用,最后点击保持设置,完成屏幕分辨率和大小设置。

1.1.3 虚拟机网络连接设置

进行网络连接设置,按照如下设置连接网络。在VMware Workstation Pro主界面中编辑工具栏中选择虚拟网络编辑器,弹出如下网络设置界面:

选择VMNet8,点击右下角更改设置,点击是,按照下图箭头所示内容进行设置,点击确定。

接下来,在Ubuntu系统中进行设置。回到虚拟系统桌面,在右上角点击设置,点击左侧网络Network,开启网络开关,并点击进行设置。

在弹出的设置界面中,选择IPv4,进行如下图所示的设置,完成后点击右上角应用按钮。

等待几秒钟后,点击主屏幕左侧浏览器,输入百度网站地址:www.baidu.com,测试是否可以正确联网。

如果未能连接网络,可以尝试如下解决方案:

  • 检查IP地址、网关、DNS等是否正确设置。
  • 重启虚拟机系统。
  • 检查本地Windows系统是否正确联网。

1.1.4 克隆另外两台虚拟机并分别进行网络设置

在VMware Workstation Pro主界面中关闭刚才建立好的虚拟机系统,并在左侧右击已经建立好的Ubuntu虚拟系统node01,选择管理、克隆,弹出如下界面:

点击下一页,选择虚拟机中的当前状态,点击下一页,选择创建完成克隆,点击下一页,设置虚拟机名称和位置,点击完成。

等待克隆完成,在VMware Workstation Pro主界面左侧出现node02虚拟系统。选择进入node02系统,开启此虚拟机,等待初始化完成,进入系统登录界面,密码与node01相同。按照相同步骤,克隆node03系统。

完成node02和node03的克隆之后,进行这两个系统的网络设置。

注意:VMware Workstation Pro主界面编辑中虚拟网络编辑器中的设置保持不变!只修改Ubuntu虚拟系统中的IP地址。

修改node02:进入网络、设置,只修改下图箭头所示的地址,将node02系统的192.168.18.201改为192.168.18.202,其他不变,点击应用,完成设置,测试是否联网。

修改node03:进入网络、设置,将node03系统的192.168.18.201改为192.168.18.203,其他不变,点击应用,完成设置,测试是否联网。

node01、node02、node03三台系统全部测试联网成功后,克隆完成,Hadoop伪分布式和完全分布式部署的前期环境准备完毕。

1.1.5 补充说明

以上内容为Hadoop伪分布式和完全分布式部署的前期准备完整流程,包括虚拟机创建、系统初始化、网络连接设置以及三台节点的克隆与配置。本文档内容追加在原有正文之后,不覆盖前文所述步骤,供后续Hadoop集群搭建时参考。

1.1.6 构建伪分布式Hadoop集群

本文档主要用于完成以下内容:在Linux中安装JDK、安装Hadoop、启动Hadoop。

1.1.6.1 在Linux中安装JDK

使用WinSCP将本地的JDK安装包上传到虚拟机上,将jdk安装包上传到Node01虚拟机的Downloads文件夹下。

下一步,检查当前虚拟机是否安装JDK,打开虚拟机终端,在终端键入:java -version即可查看,并未安装JDK。

使用cd命令,进入压缩包所在目录,并进行解压缩,使用命令:tar -zxvf jdk-8u212-linux-x64.tar.gz -C /home/kevin/Downloads/,按下回车键,等待解压缩完成即可在Downloads文件夹下出现解压完成的文件夹。

配置运行JDK的环境变量:使用sudo vim /etc/profile命令打开文件,选择文件的最后一行,按下i键进入编辑模式,添加以下内容:

export JAVA_HOME=/home/kevin/Downloads/jdk1.8.0_212/ #注意这里需修改为自己解压jdk的位置 export PATH=$PATH:$JAVA_HOME/bin export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

添加完成后,按下ESC键退出编辑模式,再输入:wq,保存并退出。使用source /etc/profile命令让配置的环境变量生效,最后使用java -version命令查看是否安装成功。

1.1.6.2 安装Hadoop

使用WinSCP将本地的Hadoop3.3.5安装包上传到虚拟机上,将Hadoop3.3.5安装包上传到Node01虚拟机的Downloads文件夹下。

然后使用命令将文件解压到当前路径:tar -zxvf /home/kevin/Downloads/hadoop-3.3.5.tar.gz -C /home/kevin/Downloads/,等待解压完成,可看到hadoop-3.3.5文件夹,即Hadoop安装目录为:/home/kevin/Downloads/hadoop-3.3.5。

配置Hadoop环境变量:使用sudo vim /etc/profile命令打开文件,在当前文件的最后一行,按下i键进入编辑模式,添加以下内容:

export HADOOP_HOME=/home/kevin/Downloads/hadoop-3.3.5 #注意这里需修改为自己hadoop的位置 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

添加完成后,按下ESC键退出编辑模式,再输入:wq,保存并退出。使用source /etc/profile命令让配置的环境变量生效,最后使用java -version命令查看是否安装成功。

1.1.6.3 配置SSH免密登录

输入下面两条命令:

ssh-keygen -t rsa ssh-copy-id localhost

设置免密登录,之后输入ssh localhost进行测试,在不输入密码的情况下终端输出相应内容则设置成功。

1.1.6.4 配置Hadoop

首先进入Hadoop配置文件存放目录,命令如下:cd Downloads/hadoop-3.3.5/etc/hadoop/。

修改hadoop-env.sh文件:使用sudo vim hadoop-env.sh命令打开hadoop-env.sh文件,添加以下内容:

export JAVA_HOME=/home/kevin/Downloads/jdk1.8.0_212 #注意这里需修改为自己jdk所在压的路径

修改core-site.xml文件:使用WinSCP远程登录虚拟机,用Windows系统中已经修改完成的配置文件对Ubuntu系统中对应文件进行替换(注意:此文件中内容需要修改hadoop目录和自己电脑的对应)。远程登录成功后,找到本地机和虚拟机各自对应的文件位置,右击左侧的core-site.xml文件,点击上传,点击确认覆盖原文件。

修改hdfs-site.xml:使用WinSCP相同的操作方法对hdfs-site.xml文件进行替换。

修改yarn-site.xml:使用WinSCP相同的操作方法对yarn-site.xml文件进行替换。

修改mapred-site.xml:使用WinSCP相同的操作方法对mapred-site.xml文件进行替换。

创建配置文件中相关的目录:新开一个终端,输入下列命令即可:

mkdir /home/kevin/Downloads/hadoop-3.3.5/tmp mkdir /home/kevin/Downloads/hadoop-3.3.5/tmp/nndata mkdir /home/kevin/Downloads/hadoop-3.3.5/tmp/dndata

1.1.6.5 启动Hadoop

在Windows系统的secureCRT软件中进行虚拟机的连接,连接完成后输入命令行进行操作。

格式化NameNode:首次启动HDFS必须对主节点进行格式化处理,使用命令如下:

hadoop namenode -format

启动Hadoop,使用下面两行命令来分别启动HDFS和YARN集群:

start-dfs.sh start-yarn.sh

或者使用start-all.sh命令来一次性启动HDFS和YARN集群,以及使用stop-all.sh命令一次性关闭集群。

注意:1.不要频繁使用hadoop namenode -format进行格式化。2.启动hadoop集群,使用后一定要关闭hadoop,切记不要不关闭hadoop直接关虚拟机。以上可能会导致hadoop不能正常启动。

输入jps命令,出现如下图结果所示进程,则启动成功。

1.1.7 构建完全分布式Hadoop集群

本文档主要用于完成以下内容:在Linux中构建完全分布式Hadoop集群。在此之前需要同学们已经掌握并安装完成伪分布式Hadoop集群相关知识内容。

因为Node01的Linux系统已经被作为伪分布式使用,所以需要从Node02中再克隆一台新的Node01系统,并将其主机名以及网络IP地址修改为Node01和192.168.18.201。

此时VMware工作台中将会有四个Linux系统,一个是伪分布式Hadoop,另外三个分别是Node01、Node02、Node03。Node01、Node02、Node03将会组成完全分布式Hadoop集群,Node01作为主节点,Node02和Node03作为数据节点。接下来将正式进入完全分布式Hadoop集群的构建。

如果克隆得到的Node01中未安装JDK和Hadoop,则按照下述步骤再次安装,若已安装则无需再安装,跳过这两步安装过程,进入下一步Hadoop环境配置(需注意:此处操作过程相似,但配置的文件不同)。

1.1.7.1 在Linux中安装JDK

使用WinSCP将本地的JDK安装包上传到虚拟机上,将jdk安装包上传到Node01虚拟机的Downloads文件夹下。

下一步,检查当前虚拟机是否安装JDK,打开虚拟机终端,在终端键入:java -version即可查看,并未安装JDK。

使用cd命令,进入压缩包所在目录,并进行解压缩,使用命令:tar -zxvf jdk-8u212-linux-x64.tar.gz -C /home/kevin/Downloads/,按下回车键,等待解压缩完成即可在Downloads文件夹下出现解压完成的文件夹。

配置运行JDK的环境变量:使用sudo vim /etc/profile命令打开文件,选择文件的最后一行,按下i键进入编辑模式,添加以下内容:

export JAVA_HOME=/home/kevin/Downloads/jdk1.8.0_212/ #注意这里需修改为自己解压jdk的位置 export PATH=$PATH:$JAVA_HOME/bin export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

添加完成后,按下ESC键退出编辑模式,再输入:wq,保存并退出。使用source /etc/profile命令让配置的环境变量生效,最后使用java -version命令查看是否安装成功。

1.1.7.2 安装Hadoop

使用WinSCP将本地的Hadoop3.3.5安装包上传到虚拟机上,将Hadoop3.3.5安装包上传到Node01虚拟机的Downloads文件夹下。

然后使用命令将文件解压到当前路径:tar -zxvf /home/kevin/Downloads/hadoop-3.3.5.tar.gz -C /home/kevin/Downloads/,等待解压完成,可看到hadoop-3.3.5文件夹,即Hadoop安装目录为:/home/kevin/Downloads/hadoop-3.3.5。

配置Hadoop环境变量:使用sudo vim /etc/profile命令打开文件,在当前文件的最后一行,按下i键进入编辑模式,添加以下内容:

export HADOOP_HOME=/home/kevin/Downloads/hadoop-3.3.5 #注意这里需修改为自己hadoop的位置 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

添加完成后,按下ESC键退出编辑模式,再输入:wq,保存并退出。使用source /etc/profile命令让配置的环境变量生效,最后使用java -version命令查看是否安装成功。

1.1.7.3 配置SSH免密登录

输入下面两条命令:

ssh-keygen -t rsa ssh-copy-id localhost

设置免密登录,之后输入ssh localhost进行测试,在不输入密码的情况下终端输出相应内容则设置成功。具体操作过程可参考免密登陆.doc文件。

首先在主节点Node01进行Hadoop集群配置,然后将配置文件复制到两个从节点中去。

1.1.7.4 配置Hadoop

修改hadoop-env.sh文件(与伪分布式文件内容和操作都相同)。首先进入Hadoop配置文件存放目录,命令如下:cd Downloads/hadoop-3.3.5/etc/hadoop/。

使用sudo vim hadoop-env.sh命令打开hadoop-env.sh文件,添加以下内容:

export JAVA_HOME=/home/kevin/Downloads/jdk1.8.0_212 #注意这里需修改为自己jdk所在压的路径

修改core-site.xml文件:使用WinSCP远程登录虚拟机,用Windows系统中已经修改完成的配置文件对Ubuntu系统中对应文件进行替换(注意:此文件中内容需要修改两处,一是HDFS的Namenode地址应修改为Node01,二是修改hadoop目录与自己电脑相应位置对应)。在分发的文件中修改完成后,远程登录WinSCP,找到本地机和虚拟机各自对应的文件位置,右击左侧的core-site.xml文件,点击上传,点击确认覆盖原文件。

修改hdfs-site.xml:注意此文件中内容需要修改一处,配置文件hdfs-site.xml中配置项dfs.replication的值设为3,与完全分布式虚拟机数量对应。然后使用WinSCP相同的操作方法对hdfs-site.xml文件进行替换。

修改yarn-site.xml:注意此文件中内容需要修改一处,配置文件yarn-site.xml中ResourceManager主机名设置为Node01。然后使用WinSCP相同的操作方法对yarn-site.xml文件进行替换。

修改mapred-site.xml:使用WinSCP相同的操作方法对mapred-site.xml文件直接进行替换。

修改workers文件:首先使用对应位置的命令进入workers文件所在位置,cd Downloads/hadoop-3.3.5/etc/hadoop/,然后使用命令sudo vim workers进入编辑界面,输入并保存如下内容,表示完全分布式模式下有三个节点:

node01 node02 node03

创建配置文件中相关的目录:新开一个终端,输入下列命令即可(路径需更改为和自己hadoop下名称相同):

mkdir /home/kevin/Downloads/hadoop-3.3.5/tmp mkdir /home/kevin/Downloads/hadoop-3.3.5/tmp/nndata mkdir /home/kevin/Downloads/hadoop-3.3.5/tmp/dndata

完成Node01的配置后,可以直接使用WinSCP将配置文件发送到Node02和Node03中(推荐)。或使用下列命令进行复制(可尝试):

scp /etc/profile Node02:etc/profile scp /etc/profile Node03:etc/profile scp -r /home/kevin/Downloads/ Node02:/ scp -r /home/kevin/Downloads/ Node03:/

无论采用哪种方式完成复制后,需要分别在从节点Node02和Node03上执行source /etc/profile命令。

1.1.7.5 启动Hadoop

在Windows系统的secureCRT软件中分别进行三台虚拟机的连接,然后在VMware上分别打开三台虚拟机,全部完成后输入命令行进行启动Hadoop操作。

格式化NameNode:首次启动HDFS必须对主节点进行格式化处理,使用命令如下:

hadoop namenode -format

启动Hadoop,使用下面两行命令来分别启动HDFS和YARN集群:

start-dfs.sh start-yarn.sh

或者使用start-all.sh命令来一次性启动HDFS和YARN集群,以及使用stop-all.sh命令一次性关闭集群。

注意:1.不要频繁使用hadoop namenode -format进行格式化。2.启动hadoop集群,使用后一定要关闭hadoop,切记不要不关闭hadoop直接关虚拟机。以上可能会导致hadoop不能正常启动。

通过命令jps可以查看各个节点所启动的进程。如果已经正确启动,则在Node01节点上可以看到NameNode、ResourceManager等进程。输入jps命令,出现相应结果所示进程,则启动成功。在Node02节点和Node03节点也可以看到相应进程。

另外还需要在Node01节点上通过命令hdfs dfsadmin -report查看数据节点是否正常启动,如果屏幕信息中的Live datanodes不为0,则说明集群启动成功。数据节点启动成功以后,依次可以看到Node01、Node02和Node03已全部启动。

也可以在Linux系统的浏览器中输入地址http://Node01:9870/,通过Web页面查看名称节点和数据节点的状态。如果不成功,可以通过启动日志排查原因。

1.1.7.6 测试HDFS文件操作

使用下列命令进行测试:

mkdir /home/kevin/Downloads/input # 改为自己对应地址 cd /home/kevin/Downloads/input # 改为自己对应地址 echo "hello world" > test1.txt #创建test1文件,内容为hello world echo "hello hadoop" > test2.txt hdfs dfs -mkdir /in hdfs dfs -put *.* /in # 将两个文件上传到HDFS的/in目录中

使用命令hdfs dfs -ls /in验证是否正确上传。另外也可以通过使用浏览器访问主节点Node01的9870端口,查看当前文件情况。

1.1.7.7 测试MapReduce示例程序

使用hadoop自带的mapreduce示例程序进行验证,使用下列命令进行测试:

cd /home/kevin/Downloads/hadoop-3.3.5/share/hadoop/mapreduce hadoop jar hadoop-mapreduce-examples-3.3.5.jar wordcount /in /output

/in有刚才test1.txt和test2.txt两个文件,执行程序会自动读取两个文件并将执行结果保存在HDFS的/output目录中。运行成功后会出现单词个数统计结果文件part-r-00000,使用命令:

hdfs dfs -cat /output/part-r-00000

可以看到输出内容。注意:若要再次运行mapreduce程序,需要删除HDFS的/output目录。

1.1.8 SSH无密码登录节点

必须要让Node01主节点可以SSH无密码登录到各个数据节点上。首先,生成Node01主节点的公钥,如果之前已经生成过公钥,必须要删除原来生成的公钥,重新生成一次,因为前面我们对主机名进行了修改。具体命令如下:

cd ~/.ssh # 如果没有该目录,先执行一次ssh localhost rm ./id_rsa* # 删除之前生成的公钥(如果已经存在) ssh-keygen -t rsa # 执行该命令后,遇到提示信息,一直按回车就可以

为了让Master节点能够无密码SSH登录本机,需要在Master节点上执行如下命令:

cat ./id_rsa.pub >> ./authorized_keys

完成后可以执行命令ssh Node01来验证一下,可能会遇到提示信息,只要输入yes即可,测试成功后,请执行exit命令返回原来的终端。

接下来,在Node01主节点将公钥传输到Node02数据节点:

scp ~/.ssh/id_rsa.pub kevin@Node02:/home/kevin/Downloads/hadoop-3.3.5/

(注意下划线内容需更换为需要传输目标虚拟机对应的名称和位置)

如果输入上述命令后出现如下错误,是因为远程传输时权限被拒绝,则需要进行对Node02和Node03的权限进行修改。

修改权限解决远程传输权限被拒绝的问题(可参考此文档:https://blog.csdn.net/m82_a1/article/details/97624965):

首先使用sudo vim /etc/ssh/sshd_config更改设置,进入如下内容后,选择下图框选内容取消注释,然后保存退出。

输入下列命令重启ssh服务:systemctl restart ssh.service,然后输入密码点击确定。

此时,再使用如下命令:

scp ~/.ssh/id_rsa.pub kevin@Node02:/home/kevin/Downloads/hadoop-3.3.5/

出现传输100%则为成功。

接着在Node02数据节点上,将SSH公钥加入授权,使用如下命令:

mkdir ~/.ssh # 如果不存在该文件夹需先创建,若已存在,则忽略本命令 cat /home/kevin/Downloads/hadoop-3.3.5/id_rsa.pub >> ~/.ssh/authorized_keys #下划线位置改为刚才传输的地址 rm /home/kevin/Downloads/hadoop-3.3.5/id_rsa.pub # 用完以后就可以删掉

因为还有Node03数据节点,所以还要执行将Node01的公钥传输到Node03数据节点以及在Node03数据节点上加入授权这两步操作。

这样,在Node01节点上就可以无密码SSH登录到各个数据节点了,可在Node01节点上执行如下命令进行检验:

ssh Node02

执行该命令的效果如下图所示。此时是执行命令等同于在Node02节点上执行。此时,键入exit命令,又返回为Node01主节点中。

1.1.9 全文命令速查与详解

本节把全文涉及的所有命令按用途整理成速查表,每条命令都给出可复制代码块和详细说明,方便直接对照执行。

1.1.9.1 环境检查与解压命令

检查当前虚拟机是否已安装JDK:

java -version

说明:如果终端输出java版本信息,说明JDK已安装;如果提示command not found,说明未安装,需要继续执行下面的解压安装步骤。

解压JDK安装包到指定目录:

tar -zxvf jdk-8u212-linux-x64.tar.gz -C /home/kevin/Downloads/

说明:-zxvf表示解压并显示过程,-C指定解压目标目录。请把文件名和目录路径替换为你自己实际的JDK包名和存放位置。

解压Hadoop安装包到指定目录:

tar -zxvf /home/kevin/Downloads/hadoop-3.3.5.tar.gz -C /home/kevin/Downloads/

说明:解压完成后,Hadoop安装目录为/home/kevin/Downloads/hadoop-3.3.5,后续配置都基于这个目录。

1.1.9.2 环境变量配置命令

打开系统环境变量配置文件:

sudo vim /etc/profile

说明:使用管理员权限打开/etc/profile文件。进入编辑界面后,按i键进入编辑模式,在文件最后一行追加环境变量内容,编辑完成后按ESC键退出编辑模式,输入:wq保存并退出。

让环境变量立即生效:

source /etc/profile

说明:每次修改完/etc/profile后都必须执行此命令,否则新配置的环境变量不会在当前终端生效。

1.1.9.3 SSH免密登录配置命令

生成SSH密钥对:

ssh-keygen -t rsa

说明:-t rsa表示生成RSA类型密钥。执行后遇到提示信息一直按回车即可,会在~/.ssh目录下生成私钥id_rsa和公钥id_rsa.pub。

将公钥复制到本机授权列表:

ssh-copy-id localhost

说明:该命令会把本机公钥添加到本机的authorized_keys文件中,实现本机免密登录本机。执行时需要输入本机密码。

测试本机免密登录:

ssh localhost

说明:如果不需要输入密码直接进入终端,说明免密登录配置成功。测试完成后输入exit返回原终端。

删除旧公钥并重新生成(主机名修改后必须执行):

cd ~/.ssh rm ./id_rsa* ssh-keygen -t rsa

说明:因为修改主机名后旧公钥失效,需要先删除旧公钥再重新生成。cd进入.ssh目录,rm删除所有id_rsa开头的旧密钥文件,然后重新生成。

将本机公钥加入本机授权(Master节点):

cat ./id_rsa.pub >> ./authorized_keys

说明:>>表示追加写入,把公钥内容追加到authorized_keys授权文件中,实现本机免密登录本机。

将公钥传输到数据节点:

scp ~/.ssh/id_rsa.pub kevin@Node02:/home/kevin/Downloads/hadoop-3.3.5/

说明:scp是远程复制命令,把Node01主节点的公钥传输到Node02数据节点的指定目录。kevin@Node02中的kevin是用户名,Node02是目标主机名,后面的路径是公钥存放位置,请按实际环境替换。

在数据节点上创建.ssh目录并加入授权:

mkdir ~/.ssh cat /home/kevin/Downloads/hadoop-3.3.5/id_rsa.pub >> ~/.ssh/authorized_keys rm /home/kevin/Downloads/hadoop-3.3.5/id_rsa.pub

说明:mkdir创建.ssh目录(若已存在可跳过),cat把传输过来的公钥追加到授权列表,rm删除传输过来的公钥临时文件。Node03数据节点重复同样操作。

验证免密登录数据节点:

ssh Node02

说明:在Node01主节点执行此命令,如果无需输入密码直接进入Node02终端,说明免密登录配置成功。输入exit返回Node01。

1.1.9.4 Hadoop配置与启动命令

进入Hadoop配置文件目录:

cd Downloads/hadoop-3.3.5/etc/hadoop/

说明:所有Hadoop配置文件都存放在这个目录下,后续修改配置文件前先进入此目录。

编辑hadoop-env.sh文件:

sudo vim hadoop-env.sh

说明:打开hadoop-env.sh文件,按i进入编辑模式,添加JAVA_HOME配置,按ESC退出编辑,输入:wq保存退出。

编辑workers文件(完全分布式):

sudo vim workers

说明:打开workers文件,输入node01、node02、node03三个节点主机名,每行一个,保存退出。

创建Hadoop运行所需目录:

mkdir /home/kevin/Downloads/hadoop-3.3.5/tmp mkdir /home/kevin/Downloads/hadoop-3.3.5/tmp/nndata mkdir /home/kevin/Downloads/hadoop-3.3.5/tmp/dndata

说明:依次创建tmp、nndata、dndata三个目录,分别用于存放Hadoop临时文件、NameNode数据和DataNode数据。

格式化NameNode(首次启动必须执行):

hadoop namenode -format

说明:首次启动HDFS前必须对主节点进行格式化。注意不要频繁执行此命令,否则可能导致Hadoop无法正常启动。

启动HDFS和YARN集群:

start-dfs.sh start-yarn.sh

说明:start-dfs.sh启动HDFS分布式文件系统,start-yarn.sh启动YARN资源调度集群,两条命令分别执行。

一次性启动或关闭整个集群:

start-all.sh stop-all.sh

说明:start-all.sh一次性启动HDFS和YARN,stop-all.sh一次性关闭整个集群。使用完Hadoop后一定要执行stop-all.sh关闭集群,不要直接关闭虚拟机。

查看节点进程:

jps

说明:查看当前节点启动的Java进程。伪分布式Node01上应看到NameNode、DataNode、ResourceManager、NodeManager等进程;完全分布式Node01上应看到NameNode、ResourceManager等进程,Node02和Node03上应看到DataNode、NodeManager等进程。

查看数据节点状态:

hdfs dfsadmin -report

说明:在Node01主节点执行,查看集群数据节点状态。如果Live datanodes不为0,说明数据节点全部正常启动。

1.1.9.5 配置文件分发命令(完全分布式)

将配置文件复制到从节点:

scp /etc/profile Node02:etc/profile scp /etc/profile Node03:etc/profile scp -r /home/kevin/Downloads/ Node02:/ scp -r /home/kevin/Downloads/ Node03:/

说明:前两条把环境变量配置文件复制到Node02和Node03,后两条用-r参数递归复制整个Downloads目录到两个从节点。复制完成后,需要在Node02和Node03上分别执行source /etc/profile使环境变量生效。

1.1.9.6 HDFS文件操作测试命令

创建本地测试目录和测试文件:

mkdir /home/kevin/Downloads/input cd /home/kevin/Downloads/input echo "hello world" > test1.txt echo "hello hadoop" > test2.txt

说明:mkdir创建本地input目录,cd进入该目录,echo配合>重定向分别创建test1.txt和test2.txt两个测试文件。

在HDFS上创建目录并上传文件:

hdfs dfs -mkdir /in hdfs dfs -put *.* /in

说明:hdfs dfs -mkdir在HDFS根目录创建/in目录,hdfs dfs -put把当前目录下所有文件上传到HDFS的/in目录。

查看HDFS目录内容:

hdfs dfs -ls /in

说明:列出HDFS上/in目录下的所有文件,验证文件是否上传成功。

1.1.9.7 MapReduce示例程序测试命令

进入MapReduce示例程序目录并运行WordCount:

cd /home/kevin/Downloads/hadoop-3.3.5/share/hadoop/mapreduce hadoop jar hadoop-mapreduce-examples-3.3.5.jar wordcount /in /output

说明:cd进入示例程序所在目录,hadoop jar运行jar包中的wordcount程序,/in是输入目录,/output是输出目录。程序会自动读取/in下的test1.txt和test2.txt进行词频统计。

查看统计结果:

hdfs dfs -cat /output/part-r-00000

说明:cat命令查看输出目录下的part-r-00000结果文件,显示每个单词的出现次数。注意:若要再次运行MapReduce程序,需要先删除HDFS的/output目录。

1.1.9.8 SSH权限问题修复命令

修改SSH配置文件:

sudo vim /etc/ssh/sshd_config

说明:打开SSH服务配置文件,找到相关权限配置项取消注释,保存退出。用于解决scp远程传输时权限被拒绝的问题。

重启SSH服务:

systemctl restart ssh.service

说明:修改完sshd_config后必须重启SSH服务使配置生效,执行时需要输入密码确认。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询