2024年最全Hadoop(02) Hadoop-3,2024年最新如何化身BAT面试收割机

img
img
img

既有适合小白学习的零基础资料,也有适合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) 伪分布式小节的基础上再做一次修改):

参数说明:

  1. hadoop.tmp.dir:用于指定临时文件的存储路径。它被设置为file:/usr/local/hadoop-3.3.6/tmp,表示临时文件将存储在指定的路径中。
  2. 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>

修改前:

修改后:

参数说明:

  1. dfs.namenode.secondary.http-address:用于配置辅助(Secondary)NameNode 的 HTTP 地址。辅助 NameNode 的 HTTP 地址被设置为 hadoop01:50090,表示辅助 NameNode 可以通过 hadoop01 主机的端口 50090 进行访问
  2. dfs.replication:用于配置文件块的副本数量。副本数量被设置为 1,表示每个文件块只有一个副本。副本数量的设置对数据的冗余和可靠性有影响。
  3. 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 路径下。
  4. 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)中未对该文件作任何修改,所以为空白):

修改后:

参数说明:

  1. mapreduce.framework.name:用于配置 MapReduce 框架的名称。框架名称被设置为 yarn,表示使用 YARN(Yet Another Resource Negotiator)作为 MapReduce 的执行框架。
  2. mapreduce.jobhistory.address:用于配置作业历史服务器(Job History Server)的地址。作业历史服务器的地址被设置为 hadoop01:10020,表示作业历史服务器可以通过 hadoop01 主机的端口 10020 进行访问。
  3. mapreduce.jobhistory.webapp.address:用于配置作业历史服务器的 Web 应用程序地址。作业历史服务器的 Web 应用程序地址被设置为 hadoop01:19888,表示可以通过 hadoop01 主机的端口 19888 访问作业历史服务器的 Web 页面。

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

ddress:用于配置作业历史服务器的 Web 应用程序地址。作业历史服务器的 Web 应用程序地址被设置为 hadoop01:19888,表示可以通过 hadoop01` 主机的端口 19888 访问作业历史服务器的 Web 页面。

[外链图片转存中…(img-G3vmCN5r-1715630739778)]
[外链图片转存中…(img-TCALrm4q-1715630739778)]
[外链图片转存中…(img-Z2TIXSCs-1715630739778)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值