既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
上述这些步骤中,关于如何创建hadoop用户、安装SSH服务端、安装Java环境、安装Hadoop等过程,已经在前面介绍Hadoop3.3.6安装教程,单机/伪分布式配置的时候做了详细介绍,请按照之前介绍的方法完成步骤1到步骤4,这里不再赘述。在完成步骤1到步骤4的操作以后,才可以继续进行下面的操作。
一、安装虚拟机
请参照教程“Linux(01)虚拟机VMware Workstation17安装Debian11系统详细教程并配置root用户远程SSH登录_Eufeo的博客-CSDN博客虚拟机VMware Workstation17安装Debian11系统详细教程并配置root用户远程SSH登录_Eufeo的博客-CSDN博客")”,安装好2个Linux虚拟机,主机名分别是hadoop01和hadoop02。由于hadoop02是Slave节点,不需要安装很多的软件,所以,配置可以比hadoop01低一,比如,对于hadoop02而言,内存只需要配置4GB,磁盘只需要配置20GB。
可以使用:
free -h # 查看内存的使用情况和配置
df -h # 查看硬盘的使用情况和配置
二、配置JDK和安装hadoop-3.3.6
安装好虚拟机hadoop02以后,首先创建hadoop用户,其次安装java环境并配置jdk,再次使用hadoop用户登录Linux系统,安装SSH服务端,并安装hadoop-3.3.6。请参考教程“Hadoop(01) Hadoop3.3.6安装教程,单机/伪分布式配置-CSDN博客 Hadoop3.3.6安装教程,单机/伪分布式配置-CSDN博客")”。
配置好JDK后,可以使用命令:echo $JAVA_HOME 查看当前系统中设置的JAVA_HOME
环境变量的值。
配置好hadoop后,可以使用命令:echo $HADOOP_HOME 查看当前系统中设置的HADOOP_HOME环境变量的值。
三、网络设置
由于集群中有两台机器需要设置,所以,在接下来的操作中,一定要注意区分Master节点和Slave节点。为了便于区分Master节点和Slave节点,可以修改各个节点的主机名,这样,在Linux系统中打开一个终端以后,在终端窗口的标题和命令行中都可以看到主机名,就比较容易区分当前是对哪台机器进行操作。
3.1 修改mater和slave的主机名
在Debian中,我们在 Master 节点(hadoop01)上执行如下命令修改主机名:
sudo vim /etc/hostname
执行上面命令后,就打开了“/etc/hostname”这个文件,这个文件里面记录了主机名.因此,打开这个文件以后,里面就只有“debian”这一行内容,可以直接删除,并修改为“hadoop01”(注意是区分大小写的),然后,保存退出vim编辑器,这样就完成了主机名的修改,需要重启Linux系统才能看到主机名的变化。
要注意观察主机名修改前后的变化。在修改主机名之前,如果用hadoop登录Linux系统,打开终端,进入Shell命令提示符状态,会显示如下内容:
修改主机名并且重启Linux系统之后,用hadoop登录Linux系统,打开终端,进入Shell命令提示符状态,会显示如下内容:
可以看出,这时就很容易辨认出当前是处于Master节点(hadoop01)上进行操作,不会和Slave节点(hadoop02)产生混淆。
同理,按照相同的方法,把虚拟机hadoop02中的主机名修改为“hadoop02”,并重启Linux系统。
3.2 配置映射关系
然后,使用ifconfig命令获取每台虚拟机的IP地址,具体命令如下:
sudo apt-get update
sudo apt-get install net-tools
ifconfig
如下图是slave01的IP地址
然后,在hadoop01中(即master节点),执行如下命令打开并修改Master节点中的“/etc/hosts”文件:
vim /etc/hosts
可以在master节点的hosts文件中增加如下两条IP和主机名映射关系,同时将debian修改成新的主机名:
需要注意的是,一般hosts文件中只能有一个127.0.0.1,其对应主机名为localhost,如果有多余127.0.0.1映射,应删除,**特别是不能存在“127.0.0.1 hadoop01”也不能出现“127.0.1.1 hadoop01”这样的映射记录,否则会出现错误,导致datanode无法和namenode连接,详情请看此处。(此处因为在第一次写文章时没有注释掉,所有后面启动集群后会有报错,建议注释掉“127.0.1.1 hadoop01 这类映射记录”)**修改后需要重启Linux系统。
上面完成了Master节点(hadoop01)的配置,接下来要继续完成对其他Slave节点的配置修改。本教程只有一个Slave节点,主机名为hadoop02。请参照上面的方法,把Slave节点上的“/etc/hostname”文件中的主机名修改为“hadoop02”,同时,修改“/etc/hosts”的内容,在hosts文件中增加如下两条IP和主机名映射关系:
修改完成以后,请重新启动Slave节点的Linux系统。
这样就完成了Master节点和Slave节点的配置,然后,需要在各个节点上都执行如下命令,测试是否相互ping得通,如果ping不通,后面就无法顺利配置成功:
ping 主机名 -c 3 #ping 3次后自动停止
在master节点上:
在salve01节点上:
四、hadoop02 SSH无密码登录节点设置
必须要让Master节点可以SSH无密码登录到各个Slave节点上。
首先需要在hadoop02上执行如下命令安装SSH服务端(如果此前已经安装就不用重复安装):
sudo apt-get update
sudo apt-get install openssh-server
然后,需要遭hadoop01上生成Master节点(hadoop01)的公匙,如果之前已经生成过公钥(在安装伪分布式模式的Hadoop时(第二节)生成过一次公钥),必须要删除原来生成的公钥,重新生成一次,因为前面我们对主机名进行了修改。在Master节点执行如下命令:
cd ~/.ssh # 如果没有该目录,先执行一次ssh localhost
rm ./id_rsa* # 删除之前生成的公匙(如果已经存在)
ssh-keygen -t rsa # 执行该命令后,遇到提示信息,一直按回车就可以
为了让Master节点能够无密码SSH登录本机,需要在Master节点上执行如下命令:
cat ./id_rsa.pub >> ./authorized_keys
完成后可以执行命令“ssh hadoop01”来验证一下,可能会遇到提示信息,只要输入yes即可,测试成功后,请执行“exit”命令返回原来的终端。
接下来,在Master节点(hadoop01)将上公匙传输到Slave节点(hadoop02):
scp ~/.ssh/id_rsa.pub hadoop@hadoop02:/home/hadoop/
上面的命令中,scp是secure copy的简写,用于在 Linux下进行远程拷贝文件,类似于cp命令,不过,cp只能在本机中拷贝。执行scp时会要求输入hadoop02上hadoop用户的密码,输入完成后会提示传输完毕,如图所示。传输完成以后,在hadoop02上的“/home/hadoop”目录下就可以看到文件id_rsa.pub了。
接着在Slave节点(hadoop02)上执行如下命令将SSH公匙加入授权:
mkdir ~/.ssh # 如果不存在该文件夹需先创建,若已存在,则忽略本命令
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub # 用完以后就可以删掉
如果有其他Slave节点,也要执行将Master公匙传输到Slave节点以及在Slave节点上加入授权这两步操作。
这样,在Master节点上就可以无密码SSH登录到各个Slave节点了,可在Master节点(hadoop01)上执行如下命令进行检验:
cd ~
ssh hadoop02
五、配置集群/分布式环境
在配置集群/分布式模式时,需要修改“/usr/local/hadoop-3.3.6/etc/hadoop”目录下的配置文件,这里仅设置正常启动所必须的设置项,包括workers、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml共5个文件,更多设置项可查看官方说明。
切换到目录 /usr/local/hadoop-3.3.6/etc/hadoop/
5.1 修改文件workers
workers
文件是用于指定作为DataNode的主机列表的文件。每行包含一个主机名或IP地址,表示要作为DataNode的机器。
需要把所有数据节点的主机名写入该文件,每行一个,默认为 localhost(即把本机作为数据节点),所以,在伪分布式配置时,就采用了这种默认的配置,使得节点既作为名称节点也作为数据节点。
在进行分布式配置时,可以保留localhost,让Master节点同时充当名称节点和数据节点,或者也可以删掉localhost这行,让Master节点仅作为名称节点使用。
本教程让Master节点仅作为名称节点使用,因此将hadoop01中的workers文件中原来的localhost删除,只添加如下一行内容:
hadoop02
修改前:
修改后:
参数说明:
workers
文件中只包含了hadoop02
,而没有其他主机,意味着只有hadoop02
被配置为运行DataNode角色。这表示hadoop02
主机将作为唯一的DataNode节点参与Hadoop集群。
其他主机,如hadoop01
,可能被配置为单独的NameNode节点、ResourceManager节点或其他角色,而不是DataNode。
这种配置可以是为了满足特定需求,例如将数据存储在独立的节点上,或者根据集群规模和资源分配将DataNode角色限制在特定的主机上。
5.2 修改core-site.xml文件
hadoop01中的“/usr/local/hadoop-3.3.6/etc/hadoop”目录下有一个core-site.xml,把hadoop01中的core-site.xml文件修改为如下内容:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop-3.3.6/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>
</property>
</configuration>
修改前(在hadoop(01) 伪分布式小节中已经修改过一次):
修改后(在hadoop(01) 伪分布式小节的基础上再做一次修改):
参数说明:
hadoop.tmp.dir
:用于指定临时文件的存储路径。它被设置为file:/usr/local/hadoop-3.3.6/tmp
,表示临时文件将存储在指定的路径中。fs.defaultFS
:用于指定默认的文件系统和连接的NameNode节点。它被设置为hdfs://hadoop01:9000
,表示Hadoop将使用HDFS作为默认的文件系统,并连接到hadoop01
主机上运行的NameNode节点的RPC地址和端口(9000)。
5.3 修改hdfs-site.xml文件
对于Hadoop的分布式文件系统HDFS而言,一般都是采用冗余存储,冗余因子通常为3,也就是说,一份数据保存三份副本。但是,本教程只有一个Slave节点(即hadoop02)作为数据节点,即集群中只有一个数据节点,数据只能保存一份,所以 ,dfs.replication的值还是设置为 1。
hadoop01中的“/usr/local/hadoop-3.3.6/etc/hadoop”目录下有一个hdfs-site.xml,把hadoop01中的hdfs-site.xml文件修改为如下内容:
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop01:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop-3.3.6/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop-3.3.6/tmp/dfs/data</value>
</property>
</configuration>
修改前:
修改后:
参数说明:
dfs.namenode.secondary.http-address
:用于配置辅助(Secondary)NameNode 的 HTTP 地址。辅助 NameNode 的 HTTP 地址被设置为hadoop01:50090
,表示辅助 NameNode 可以通过hadoop01
主机的端口 50090 进行访问。dfs.replication
:用于配置文件块的副本数量。副本数量被设置为 1,表示每个文件块只有一个副本。副本数量的设置对数据的冗余和可靠性有影响。dfs.namenode.name.dir
:用于配置主(Primary)NameNode 的名称目录路径。名称目录路径被设置为file:/usr/local/hadoop-3.3.6/tmp/dfs/name
,表示主 NameNode 的名称数据将存储在本地文件系统的/usr/local/hadoop-3.3.6/tmp/dfs/name
路径下。dfs.datanode.data.dir
:用于配置数据节点(Datanode)的数据目录路径。数据目录路径被设置为file:/usr/local/hadoop-3.3.6/tmp/dfs/data
,表示数据节点的数据将存储在本地文件系统的/usr/local/hadoop-3.3.6/tmp/dfs/data
路径下。
注意:
如果Hadoop集群中的hadoop01
主机仅用作NameNode,而不是同时兼具DataNode角色,那么确实不需要在hdfs-site.xml
配置文件中包含dfs.namenode.rpc-address
配置项。
dfs.namenode.rpc-address
配置项用于指定NameNode的RPC地址和端口,用于与其他DataNode节点进行通信。在纯粹的NameNode节点上,不需要与其他DataNode节点进行通信,因此可以省略这个配置项。
在这种情况下,只需确保dfs.namenode.secondary.http-address
配置项正确设置为Secondary NameNode的HTTP地址和端口,并且dfs.namenode.name.dir
配置项指定了正确的NameNode名称目录即可。
请记住,这仅适用于将hadoop01
主机配置为纯粹的NameNode节点的情况。如果将来决定将这个主机扩展为兼具DataNode角色,那么您将需要添加dfs.namenode.rpc-address
配置项以供其他节点与之通信。如下图所示:
5.4 修改mapred-site.xml文件
hadoop01中的“/usr/local/hadoop-3.3.6/etc/hadoop”目录下有一个mapred-site.xml,把mapred-site.xml文件配置成如下内容:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop01:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop01:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.3.6</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.3.6</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.3.6</value>
</property>
</configuration>
修改前(注:hadoop(01)中未对该文件作任何修改,所以为空白):
修改后:
参数说明:
mapreduce.framework.name
:用于配置 MapReduce 框架的名称。框架名称被设置为yarn
,表示使用 YARN(Yet Another Resource Negotiator)作为 MapReduce 的执行框架。mapreduce.jobhistory.address
:用于配置作业历史服务器(Job History Server)的地址。作业历史服务器的地址被设置为hadoop01:10020
,表示作业历史服务器可以通过hadoop01
主机的端口 10020 进行访问。mapreduce.jobhistory.webapp.address
:用于配置作业历史服务器的 Web 应用程序地址。作业历史服务器的 Web 应用程序地址被设置为hadoop01:19888
,表示可以通过hadoop01
主机的端口 19888 访问作业历史服务器的 Web 页面。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
ddress:用于配置作业历史服务器的 Web 应用程序地址。作业历史服务器的 Web 应用程序地址被设置为
hadoop01:19888,表示可以通过
hadoop01` 主机的端口 19888 访问作业历史服务器的 Web 页面。
[外链图片转存中…(img-G3vmCN5r-1715630739778)]
[外链图片转存中…(img-TCALrm4q-1715630739778)]
[外链图片转存中…(img-Z2TIXSCs-1715630739778)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新