【Linux】—Hadoop运行环境搭建(完全分布式)

news2025/2/28 17:26:19

文章目录

  • 前言
  • 一、模板虚拟机环境准备
  • 二、克隆虚拟机(以hadoop102为例)
  • 三、修改克隆机的IP
  • 四、安装JDK
  • 五、安装Hadoop(完全分布式)
  • 六、集群常用命令
  • 七、配置集群
  • 八、群起并测试集群
  • 九、配置历史服务器
  • 十、配置日志的聚集
  • 十一、集群启动/停止方式总结
  • 十二、其他常用脚本
  • 十三、集群时间同步


前言

本文主要讲Hadoop运行环境(完全分布式)搭建。三种完全分布式客户机如下:

在这里插入图片描述

Hadoop运行模式有三种:本地、伪分布、完全分布模式。

运行模式说明
本地模式数据存储在linux本地
伪分布模式数据存储在HDFS
完全分布模式数据存储在HDFS
多台服务器工作

一、模板虚拟机环境准备

1、安装模板虚拟机,请参考链接:https://blog.csdn.net/sodaloveer/article/details/139795882

模板虚拟机信息:

  • IP地址:192.168.10.100
  • 主机名称:QF
  • 内存:2G
  • 硬盘:80G

2、安装XShell远程访问机,请参考链接:https://blog.csdn.net/sodaloveer/article/details/140122338

3、QF虚拟机配置要求如下(本文Linux系统版本以Linux version 3.10.0-957.el7.x86_64为例)

  • 使用 yum 安装前,先执行"ping www.baidu.com"命令测试下虚拟机联网情况。

在这里插入图片描述

如果Linux安装的是最小系统版本,还需要安装"net-tool"工具、"vim"编辑器;如果安装的是Linux桌面标准版,可以跳过,直接执行命令安装epel-release。
  • 安装 net-tool 工具,执行"yum install -y net-tools "命令。
    net-tool:工具包集合,包含ifconfig等命令。

在这里插入图片描述

  • 安装 vim 编辑器,执行"yum install -y vim"命令。

在这里插入图片描述

  • 安装 epel-release ,执行"yum install -y epel-release"命令。

在这里插入图片描述

4、关闭防火墙,关闭防火墙开机自启

  • 执行"systemctl stop firewalld"命令。
  • 执行"systemctl disable firewalld.service"命令。

在这里插入图片描述

5、创建atwqf用户,并修改atwaf用户的密码

  • 执行"useradd atwqf"命令。
  • 执行"passwd w574520."命令。

6、配置atwqf用户具有root权限,方便后期加sudo执行root权限命令。

  • 执行"vim /etc/sudoers"命令,打开文件。
    修改/etc/sudoers文件,在%wheel这行下面添加一行:
    atwqf ALL=(ALL) NOPASSWD:ALL

在这里插入图片描述
注意:atwqf 这一行不要直接放到root下面,因为所有用户都属于wheel组,你先配置了atwqf具有免密功能,但是程序执行到%wheel行时,该功能又被覆盖回需要密码,所以atwqf要入放到%wheel行下面。

7、在/opt目录下面创建文件夹,并修改所属主和所属组。

7.1. 在/opt目录下创建module、software文件夹。

  • 执行"mkdir /opt/module"命令。
  • 执行"mkdir /opt/software"命令。

7.2. 修改module、software文件夹的所有者和所属组均为atwqf用户。

  • 执行"mkdir atwqf:atwqf /opt/module"命令。
  • 执行"mkdir atwqf:atwqf /opt/software"命令。

7.3. 查看module、software文件夹的所有者和所属组。

  • 执行"cd /opt/"命令。
  • 执行"ll"命令。

在这里插入图片描述

8、卸载虚拟机自带的JDK,如果你的虚拟机是最小化安装可以直接跳过这一步,不需要执行。

  • 执行"rmp -qa | grep -i java | xargs -nl rpm -e --nodes"命令。

9、重启虚拟机

  • 执行"reboot"命令。

在这里插入图片描述

二、克隆虚拟机(以hadoop102为例)

利用模板机QF,克隆三台虚拟机:hadoop102、hadoop103、hadoop104,下面以克隆hadoop102为例。

1、右键"管理"->“克隆”。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、选择"创建完整克隆"。

在这里插入图片描述

3、填写克隆虚拟机的名称和存放位置。

在这里插入图片描述

4、重复上面克隆hadoop102的步骤,完成hadoop103、hadoop104的克隆。

点击"完成"后,

5、如果想要彻底删除克隆机,右键"管理"->“从磁盘中删除”。
右键"移除"只是页面上移除。右键"打开”,选择到对应的文件夹就可以恢复了。(参考链接:如何把vmware中已经移除的虚拟机恢复)

在这里插入图片描述

在这里插入图片描述

三、修改克隆机的IP

1、修改克隆虚拟机的静态IP。

  • 执行"vim /etc/sysconfig/network-scripts/ifcfg-ens32"命令。
    主要是将IPADDR从"192.168.40.100"改成"192.168.40.102"(以hadoop102为例),同理,在hadoop103克隆机上要改成"192.168.40.103",在hadoop104克隆机要改成"192.168.40.104"。

在这里插入图片描述

2、修改克隆机主机名。

  • 执行"vim /etc/hostname"命令。
    将"QF"改成"hadoop102"(以hadoop102为例),同理,在hadoop103克隆机上要改成"hadoop103",在hadoop104克隆机上要改成"hadoop104"。

在这里插入图片描述

3、配置Linux克隆机主机名称映射host文件,执行"vim /etc/hosts"命令打开/etc/hosts。添加下面内容:

  • 192.168.40.100 qf
  • 192.168.40.101 hadoop101
  • 192.168.40.102 hadoop102
  • 192.168.40.103 hadoop103
  • 192.168.40.104 hadoop104

在这里插入图片描述

4、查看Linux虚拟机的"虚拟网络编辑器"

  • 点击"编辑"->“虚拟网络编辑器”->“VMnet8”。

在这里插入图片描述

  • 点击"更改设置”进入编辑。

在这里插入图片描述

  • 点击"VMnet8",设置"子网IP",点击 “NAT 设置” 进入设置 “网关IP”。

在这里插入图片描述

在这里插入图片描述

5、查看Windows系统适配器 VMware Network Adapter VMnet8的IP地址。

  • “设置”->“网络和Internet”->“更改适配器选项”

在这里插入图片描述

  • 右键"VMware Network Adapter VMnet8"->“属性”

在这里插入图片描述

  • "Internet 协议版本4(TPC/IPv4)"的属性

在这里插入图片描述

  • 设置"默认网关"和"DNS服务器地址"。

在这里插入图片描述

保证Linux系统ifcfg-ens32文件中IP地址,虚拟网络编辑器地址和Windows系统VM8网络IP地址相同。

6、重启克隆机hadoop102,执行"reboot"命令。

在这里插入图片描述

7、修改Windows的主机映射文件(hosts文件),进入"C:\Windows\System32\drivers"路径hosts,添加如下内容:(提示:操作系统是Windows10,先拷贝出来,修改保存以后,再覆盖即可。)

192.168.40.100 qf
192.168.40.101 hadoop101
192.168.40.102 hadoop102
192.168.40.103 hadoop103
192.168.40.104 hadoop104

在这里插入图片描述

四、安装JDK

以hadoop102为例。先安装到hadoop102上,再拷贝到hadoop103、hadoop104上。

0、jdk下载地址:https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html,下滑找适合项目的jdk版本,尽量下载.tar.gz后缀的方便安装。

1、卸载现有jdk,在进行安装jdk前,一定要确保提前删除了虚拟机自带的jdk。

  • 执行”rpm -qa|grep java"命令,查看旧JDK,如果有执行"sudo yum -y remove 要删除jdk的名字"。

在这里插入图片描述

2、用XShell传输工具Xftp将JDK导入到/opt/software/文件夹下面。

在这里插入图片描述

3、在Linux系统下的opt目录中查看软件包是否导入成功。

  • 执行"ll"命令。

在这里插入图片描述

4、解压JDK到/opt/module目录下。

  • 执行"tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/"命令。

在这里插入图片描述

5、查看是否解压成功。

在这里插入图片描述

6、配置JDK环境变量。

  • 执行"vim /etc/profile.d/my_env.sh"命令新建文件,添加下面内容:
    #JAVA_HOME
    export JAVA_HOME=/opt/module/jdk1.8.0_212
    export PATH=$PATH:$JAVA_HOME/bin
  • 执行"source /etc/profile"文件,让新的环境变量PATH生效。

在这里插入图片描述

7、测试JDK是否安装成功。

  • 执行"java -version"命令。

在这里插入图片描述

五、安装Hadoop(完全分布式)

以hadoop102为例,再拷贝到hadoop103、hadoop104上。

0、hadoop-3.1.3下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/

1、用XShell传输工具Xftp将hadoop-3.1.3.tar.gz导入到/opt/software/文件夹下面。

在这里插入图片描述

2、在Linux系统下的opt目录中查看软件包是否导入成功。

  • 执行"ll"命令。

在这里插入图片描述

3、解压hadoop-3.1.3.tar.gz到/opt/module目录下。

  • 执行"tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/"命令。

在这里插入图片描述

4、查看是否解压成功。

在这里插入图片描述

5、配置Hadoop添加到环境变量。

  • 获取Hadoop安装路径"/opt/module/hadoop-3.1.3"。
  • 执行"vim /etc/profile.d/my_env.sh"命令新建文件,添加下面内容:
    #HADOOP_HOME
    export HADOOP_HOME=/opt/module/hadoop-3.1.3
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin
  • 执行"source /etc/profile"命令,让新的环境变量PATH生效。

在这里插入图片描述

6、测试是否安装成功。

  • 执行"hadoop version"命令。

在这里插入图片描述

7、查看Hadoop目录结构。

  • 执行"ll"命令。

在这里插入图片描述

重要目录说明:

  • bin目录:存放对 Hadoop 相关服务(hdfs,yarn,mapred)进行操作的脚本
  • etc目录:Hadoop 的配置文件目录,存放 Hadoop 的配置文件
  • lib目录:存放 Hadoop 的本地库(对数据进行压缩解压缩功能)
  • sbin目录:存放启动或停止 Hadoop 相关服务的脚本
  • share目录:存放 Hadoop 的依赖 jar 包、文档、和官方案例

六、集群常用命令

1、根据上面的安装步骤,现在只有hadoop102这台客户机上安装好jdk和hadoop,因此通过scp命令将hadoop102安装成功的jdk和hadoop拷贝到hadoop103、hadoop104服务器上。如下图:

在这里插入图片描述

命令:scp
功能:安全拷贝,可以实现服务器与服务器之间的数据拷贝。
语法:
scp -r     $pdir/$fname        $user@$host:$pdir/$fname
scp -r   要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名称

在 hadoop102、hadoop103、hadoop104 都已经创建好的/opt/module、 /opt/software 两个目录,并且已经把这两个目录修改为 atwqf:atwqf。

在这里插入图片描述

在hadoop102上,
执行"scp -r /opt/module/jdk1.8.0_212 atwqf@hadoop103:/opt/module"命令,将hadoop102中/opt/module/jdk1.8.0_212 目录拷贝到hadoop103 上,
执行"scp -r /opt/module/jdk1.8.0_212 atwqf@hadoop104:/opt/module"命令,将hadoop102中/opt/module/jdk1.8.0_212 目录拷贝到hadoop104 上。

在这里插入图片描述

在hadoop102上,
执行"scp -r /opt/module/hadoop-3.1.3 atwqf@hadoop103:/opt/module"命令,将hadoop102中/opt/module/hadoop-3.1.3 目录拷贝到hadoop103 上,
执行"scp -r /opt/module/jdk1.8.0_212 atwqf@hadoop104:/opt/module"命令,将hadoop102中/opt/module/jdk1.8.0_212 目录拷贝到hadoop104 上。

在这里插入图片描述

另一种方式,也可以在hadoop103上,
执行"scp -r atwqf@hadoop102:/opt/module/hadoop-3.1.3 atwqf@hadoop104:/opt/module"命令、
执行"scp -r atwqf@hadoop102:/opt/module/jdk1.8.0_212 atwqf@hadoop104:/opt/module"命令,
可以将hadoop102的jdk和hadoop拷贝到hadoop104上。

命令:rsync
功能:远程同步工具,主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
语法:
rsync -av     $pdir/$fname        $user@$host:$pdir/$fname
rsync -av   要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名

rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。

2、集群分发脚本:先在hadoop102客户机上部署好xsync脚本,命令可以任何路径下都可以使用。执行这个命令同时分发到hadoop103、hadoop104。

命令:xsync
功能:循环复制文件到所有节点的相同目录下。
语法:xsync 要同步的文件名称
  • 2.1. xsync脚本。
    执行"vim /home/atwqf/bin/xsync"命令,在/home/atwqf/bin目录下创建xsync文件。
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
 echo Not Enough Arguement!
 exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
 echo ==================== $host ====================
 #3. 遍历所有目录,挨个发送
 for file in $@
 do
 #4. 判断文件是否存在
 if [ -e $file ]
 then
 #5. 获取父目录
 pdir=$(cd -P $(dirname $file); pwd)
 #6. 获取当前文件的名称
 fname=$(basename $file)
 ssh $host "mkdir -p $pdir"
 rsync -av $pdir/$fname $host:$pdir
 else
 echo $file does not exists!
 fi
 done
done
  • 2.2. 修改脚本xsync具有执行权限。
    执行"chmod +x xsync"命令。
    执行"ll"命令,可以看到颜色变了。

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

  • 2.3. 将bin目录下的内容分发到hadoop103、hadoop104上。
    执行"xsync /home/atwqf/bin/"命令。

在这里插入图片描述

    • 在hadoop103上可以想看到xsync命令已经传送过去。

在这里插入图片描述

    • 在hadoop104上可以想看到xsync命令已经传送过去。

在这里插入图片描述

  • 2.4. 分发环境变量配置到hadoop103、hadoop104上。
    执行"xsync /etc/profile.d/my_env.sh"命令(root所有者)。
    • 在atwqf用户下,执行"xsync /etc/profile.d/my_env.sh"命令会报错failed: Permission denied

在这里插入图片描述

    • 在atwqf用户,下执行"sudo xsync /etc/profile.d/my_env.sh"命令会报错sudo: xsync: command not found
      原因:使用sudo相当于现在在root用户下,现在 xsync 命令是在/home/atwqf/bin路径下,root用户找不到这个路径,因此会报错,所以在atwqf用户下执行"sudo /home/atwqf/bin/xsync /etc/profile.d/my_env.sh"命令才可以(写清楚xsync命令存放的路径。)

在这里插入图片描述

在这里插入图片描述

  • 2.5. 在hadoop103、hadoop104上,执行"cat /etc/profile.d/my_env.sh"命令查看是否分发成功。

在这里插入图片描述

  • 2.6. 在hadoop103、hadoop104服务器上,执行"source /etc/profile"命令,让其的环境变量生效。

在这里插入图片描述

在这里插入图片描述

3、配置ssh,无密登录。

命令:ssh 
功能:无密登录别的服务器。
语法:ssh 另一台电脑的IP地址

服务器间使用ssh免密登录的过程:

在这里插入图片描述

  • 3.1. 要实现hadoop102服务器上可以免密登录hadoop103、hadoop104。
    在hadoop102上,执行"ssh-keygen -t rsa"命令,生成公钥和私钥。

在这里插入图片描述

在这里插入图片描述

  • 3.2. 将公钥拷贝到要免密登录的hadoop103、hadoop104服务器上。
    在hadoop102上,执行"ssh-copy-id hadoop102"将公钥拷贝到要免密登录的自己身上。
    在hadoop102上,执行"ssh-copy-id hadoop103"将公钥拷贝到要免密登录的hadoop103上。
    在hadoop102上,执行"ssh-copy-id hadoop104"将公钥拷贝到要免密登录的hadoop104上。
    同理,如果想在hadoop103对hadoop102/hadoop104服务器进行免密登录的话,在hadoop103服务器上执行上述语句。
  • 3.3. 执行完成3.2.后,在hadoop102上,可以无密登录hadoop103。
    执行"ssh hadoop103"命令。

在这里插入图片描述

  • 3.4. 退出。
    执行"exit"命令。

在这里插入图片描述

  • 3.5. 在/home/atwqf路径下,查看该路径下所有的文件,包括隐藏文件。
    执行"ls -al"命令。

在这里插入图片描述

  • .ssh文件夹下(~/.ssh)的文件功能解释
目录名说明
known_hosts记录 ssh 访问过计算机的公钥(public key)
id_rsa生成的私钥
id_rsa.pub生成的公钥
authorized_keys存放授权过的无密码登录服务器公钥

在这里插入图片描述

  • 3.6. 查看曾经访问过的hadoop102的服务器。
    执行"cat known_hosts"命令。

在这里插入图片描述

  • 3.7. 查看允许哪些服务器来免密登录我自己。
    执行"cat authorized_keys"命令。

在这里插入图片描述

配置ssh免密登录后,xsync分发脚本可以不用输密码了。

注意: ssh配置是在atwqf用户下进行配置的,所以在root用户下是无效的,要重新根据上面流程配置。

七、配置集群

1、集群部署规划

  • NameNode 、ResourceManager、SecondaryNameNode 不要安装在同一台服务器。
hadoop102hadoop103hadoop104
HDFSNameNode
DataNode
DataNodeSecondaryNameNode
DataNode
YARNNodeManagerResourceManager
NodeManager
NodeManager

2、配置文件

  • 配置文件说明:Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。

    • 默认配置文件:
要获取的默认文件文件存放在Hadoop的jar包中的位置
[core-default.xml]hadoop-common-3.1.3.jar/core-default.xml
[hdfs-default.xml]hadoop-hdfs-3.1.3.jar/hdfs-default.xml
[yarn-default.xml]hadoop-yarn-common-3.1.3.jar/yarn-default.xml
[mapred-default.xml]hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml
    • 自定义配置文件:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 四个配置文件存放在
      $HADOOP_HOME/etc/hadoop 这个路径上,用户可以根据项目需求重新进行修改配置。

核心配置文件:core-site.xml

  • 1、执行"cd $HADOOP_HOME/etc/hadoop"命令,来到存放核心配置文件的。
  • 2、执行"vim core-site.xml"命令,写入以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
 <!-- 指定 NameNode 的地址 -->
 <property>
 <name>fs.defaultFS</name>
 <value>hdfs://hadoop102:8020</value>
 </property>
 <!-- 指定 hadoop 数据的存储目录 -->
 <property>
 <name>hadoop.tmp.dir</name>
 <value>/opt/module/hadoop-3.1.3/data</value>
 </property>
 <!-- 配置 HDFS 网页登录使用的静态用户为 atwqf -->
 <property>
 <name>hadoop.http.staticuser.user</name>
 <value>atwqf</value>
 </property>
 <property>
 <name>hadoop.proxyuser.atwqf.hosts</name>
 <value>*</value>
 </property>
 <property>   
 <name>hadoop.proxyuser.atwqf.groups</name>
 <value>*</value>
 </property>
</configuration>

HDFS 配置文件:hdfs-site.xml

  • 1、执行"cd $HADOOP_HOME/etc/hadoop"命令来到存放HDFS 配置文件的。
  • 2、执行"vim hdfs-site.xml"命令,写入以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<!-- nn web 端访问地址-->
 <property>
 <name>dfs.namenode.http-address</name>
 <value>hadoop102:9870</value>
 </property>
<!-- 2nn web 端访问地址-->
 <property>
 <name>dfs.namenode.secondary.http-address</name>
 <value>hadoop104:9868</value>
 </property>
</configuration>

YARN 配置文件:yarn-site.xml

  • 1、执行"cd $HADOOP_HOME/etc/hadoop"命令来到存放YARN 配置文件的。
  • 2、执行"vim yarn-site.xml"命令,写入以下内容:
<?xml version="1.0"?>

<configuration>
<!-- 指定 MR 走 shuffle -->
 <property>
 <name>yarn.nodemanager.aux-services</name>
 <value>mapreduce_shuffle</value>
 </property>
 <!-- 指定 ResourceManager 的地址-->
 <property>
 <name>yarn.resourcemanager.hostname</name>
 <value>hadoop103</value>
 </property>
 <!-- 环境变量的继承 -->
 <property>
 <name>yarn.nodemanager.env-whitelist</name> 
 <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
RED_HOME</value>
 </property>
</configuration>

MapReduce 配置文件: mapred-site.xml

  • 1、执行"cd $HADOOP_HOME/etc/hadoop"命令来到存放MapReduce 配置文件的。
  • 2、执行"vim mapred-site.xml"命令,写入以下内容:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
 <property>
 <name>mapreduce.framework.name</name>
 <value>yarn</value>
 </property>
<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
</property>
<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
</property>
</configuration>

3、在hadoop102上,分发配置好的Hadoop配置文件到hadoop103、hadoop104上。

  • 执行"xsync /opt/module/hadoop-3.1.3/etc/hadoop"命令。

在这里插入图片描述

  • 在hadoop103和hadoop104上查看文件分发情况。

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

4、配置workers

  • 4.1. 执行"vim /opt/module/hadoop-3.1.3/etc/hadoop/workers"命令,增加下面内容:
    hadoop102
    hadoop103
    hadoop104
    注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

在这里插入图片描述

  • 4.2. 在hadoop102上,分发配置好的workers配置文件到hadoop103、hadoop104上。
    执行"xsync /opt/module/hadoop-3.1.3/etc"命令。

在这里插入图片描述

  • 4.3. 在hadoop103和hadoop104上查看workers配置文件分发情况。

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

八、群起并测试集群

  • 群起集群

0、如果集群是第一次启动,需要在hadoop102节点初始化NameNode。

  • 执行”hdfs namenode -format"命令。

初始化完成后,"/opt/module/hadoop-3.1.3"路径下多了logs和data。

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

1、在hadoop102上启动hdfs,"/opt/module/hadoop-3.1.3”路径下,执行"sbin/start-dfs.sh"命令。

在这里插入图片描述

hadoop102

在这里插入图片描述

hadoop103

在这里插入图片描述

hadoop104

在这里插入图片描述

Web端查看HDFS的NameNode。

  • 1、浏览器中输入:http://hadoop102:9870
  • 2、查看HDFS上存储的数据信息

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、在hadoop103上启动YARN,"/opt/module/hadoop-3.1.3”路径下执行"sbin/start-yarn.sh"命令。

在这里插入图片描述

hadoop103

在这里插入图片描述

hadoop102

在这里插入图片描述

hadoop104

在这里插入图片描述

Web端查看YARN的ResourceManager。

  • 1、浏览器中输入:http://hadoop103:8088
  • 2、查看YARN上存储的Job信息(有任务运行的时候才有显示)

在这里插入图片描述

  • 集群测试

1、上传文件

  • 创建文件夹
    执行"hadoop fs -mkdir /wcinput"命令,在HDFS的NameNode下新建文件夹wcinput。

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

  • 上传小文件
    执行"hadoop fs -put wcinput/word.txt /wcinput"命令,将/opt/module/hadoop-3.1.3/wcinput/word.txt文件上传到HDFS的NameNode下新建文件夹wcinput下。

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

在这里插入图片描述

在这里插入图片描述

  • 上传大文件
    执行"hadoop fs -put /opt/software/jdk-8u212-linux-x64.tar.gz /"命令。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、上传文件后查看文件存放在什么位置

  • 查看 HDFS 文件存储路径
    执行"/opt/module/hadoop-3.1.3/data/dfs/data/current/BP-171723331-192.168.40.102-1627085800814/current/finalized/subdir0/subdir18"命令。

在这里插入图片描述

  • 查看 HDFS 在磁盘存储文件内
    执行"cat blk_1073754824"命令 。

在这里插入图片描述

3、拼接

  • 执行"cat blk_1073754825 >> tmp.tar.gz"命令。
  • 执行"cat blk_1073754826 >> tmp.tar.gz"命令。
  • 执行"tar -zxvf tmp.tar.gz"命令解压到当前路径,就是一个jdk1.8.0_212。

在这里插入图片描述

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

4、hadoop具有高可用性,任何一个服务器挂了之后,还有2份副本帮忙存储。
在"http://hadoop102:9870"网页上可以看到"jdk-8u212-linux-x64.tar.gz"文件有3份副本。

在这里插入图片描述

hadoop102

在这里插入图片描述

hadoop103

在这里插入图片描述

hadoop104

在这里插入图片描述

5、执行wordcount 程序。

  • 执行"hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput /output"命令。注意:输入、输出路径也要是集群的路径。

在这里插入图片描述

程序执行完成后,可以来到HDFS查看结果。

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

执行任务时可以在yarn上看到程序运行的进程。

在这里插入图片描述

在这里插入图片描述

点击history,出现下面的页面,希望看到运行的历史状态,需要配置历史服务器

在这里插入图片描述

九、配置历史服务器

为了查看程序的历史运行情况,需要配置一下历史服务器,具体配置步骤如下:

1、配置mapred-site.xml,执行"vim mapred-site.xml"命令,打开文件添加如下配置:

<!-- 历史服务器端地址 -->
<property>
 <name>mapreduce.jobhistory.address</name>
 <value>hadoop102:10020</value>
</property>
<!-- 历史服务器 web 端地址 -->
<property>
 <name>mapreduce.jobhistory.webapp.address</name>
 <value>hadoop102:19888</value>
</property>

2、分发配置到hadoop103、hadoop104上。

  • 执行"xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml"命令。

在这里插入图片描述

3、先执行"jps"命令,查看yarn启动了没有,
如果没有启动的话,就先在hadoop103上,执行"sbin/start-yarn.sh"命令启动,
在hadoop102上,执行"mapred --daemon start historyserver"命令,启动历史服务器。

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

4、查看历史服务器是否启动。

  • 执行"jps"命令。

在这里插入图片描述

5、配置完后,测试。

  • 执行"hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput /wcoutput"命令。

在这里插入图片描述

在这里插入图片描述
点击history,出现下面的页面:
在这里插入图片描述

点击logs,出现下面的页面,希望查看具体的日志信息,方便出现bug时候可以定位到具体错误,因此需要配置日志的聚集显示。

在这里插入图片描述

十、配置日志的聚集

为了查看程序的运行日志,需要配置一下日志聚集,具体配置步骤如下:

1、配置yarn-site.xml,执行"vim yarn-site.xml"命令打开文件加入如下配置:

<!-- 开启日志聚集功能 -->
<property>
 <name>yarn.log-aggregation-enable</name>
 <value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property> 
 <name>yarn.log.server.url</name> 
 <value>http://hadoop102:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为 7 天 -->
<property>
 <name>yarn.log-aggregation.retain-seconds</name>
 <value>604800</value>
</property>

在这里插入图片描述

2、分发配置到hadoop103、hadoop104。

  • 执行"xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml"命令。

在这里插入图片描述

3、因为更改了yarn配置,所以需要关闭重启。

  • 在hadoop102上,执行"mapred --daemon stop historyserver"命令关闭HistoryServer。

在这里插入图片描述

  • 在hadoop103上,执行"sbin/stop-yarn.sh"命令,关闭 NodeManager、ResourceManager。

在这里插入图片描述

  • 在hadoop103上,执行"sbin/start-yarn.sh"命令,启动 NodeManager、ResourceManager。

在这里插入图片描述

  • 在hadoop102上,执行"mapred --daemon start historyserver"命令开启HistoryServer。

在这里插入图片描述

4、配置完后,测试。

  • 在$HADOOP_HOME路径下,执行"hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput /wcoutput1"。

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

在这里插入图片描述

十一、集群启动/停止方式总结

  • 方法一:各个模块分开启动/停止(前提是配置ssh)

1、在hadoop102的$HADOOP_HOME路径下,执行 “sbin/start-dfs.sh” / “sbin/stop-dfs.sh” 命令,整体启动/停止HDFS。
2、在hadoop103的$HADOOP_HOME路径下,执行 “sbin/start-yarn.sh” / “sbin/stop-yarn.sh” 命令,整体启动/停止YARN。

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

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

  • 方法二:各个服务组件逐一启动/停止

1、在hadoop102的$HADOOP_HOME路径下,执行"bin/hdfs --daemon start/stop namenode/datanode/secondarynamenode"命令,分别启动/停止HDFS组件。
2、在hadoop103的$HADOOP_HOME路径下,执行"bin/yarn --daemon start/stop resourcemanager/nodemanager"命令,启动/停止YARN。

在这里插入图片描述

在这里插入图片描述

注意: 根据每个集群部署规划在对应的服务器执行启动或者停止命令。

  • 方法三:Hadoop集群启停脚本(包含HDFS,Yarn,Historyserver):myhadoop.sh

1、执行"cd /home/atwqf/bin"命令。
2、执行"vim myhadoop.sh"命令,写入如下内容:

#!/bin/bash
if [ $# -lt 1 ]
then
 echo "No Args Input..."
 exit ;
fi
case $1 in
"start")
 echo " =================== 启动 hadoop 集群 ==================="
 echo " --------------- 启动 hdfs ---------------"
 ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
 echo " --------------- 启动 yarn ---------------"
 ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
 echo " --------------- 启动 historyserver ---------------"
 ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start 
historyserver"
;;
"stop")
 echo " =================== 关闭 hadoop 集群 ==================="
 echo " --------------- 关闭 historyserver ---------------"
 ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop 
historyserver"
 echo " --------------- 关闭 yarn ---------------"
 ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
 echo " --------------- 关闭 hdfs ---------------"
 ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
 echo "Input Args Error..."
;;
esac

3、保存后退出,然后执行"chmod +x myhadoop.sh"命令,赋予脚本执行权限。

在这里插入图片描述

4、分发脚本到hadoop103、hadoop104服务器上,保证自定义脚本在三台服务器上都可以使用。

  • 执行"xsync /home/atwqf/bin/myhadoop.sh"命令。

在这里插入图片描述

hadoop103

在这里插入图片描述

hadoop104

在这里插入图片描述

5、配置完后,测试。

  • 执行"myhadoop.sh start"命令启动hadoop集群。
  • 执行"myhadoop.sh stop"命令停止hadoop集群。

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

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

十二、其他常用脚本

  • 查看三台服务器Java进程脚本

1、执行"cd /home/atwqf/bin"命令。
2、执行"vim jpsall"命令,写入如下内容:

#!/bin/bash
for host in hadoop102 hadoop103 hadoop104
do
 echo =============== $host ===============
 ssh $host jps 
done

3、 保存后退出,然后执行"chmod +x jpsall"命令,赋予脚本执行权限。

在这里插入图片描述

4、分发脚本到hadoop103、hadoop104服务器上,保证自定义脚本在三台服务器上都可以使用。

  • 执行"xsync /home/atwqf/bin"命令。

在这里插入图片描述

hadoop103

在这里插入图片描述

hadoop104

在这里插入图片描述

5、配置完后,测试。

  • 执行"jpsall"命令,可以查看到所有服务器的jps进程。

十三、集群时间同步

集群时间同步:找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步。以hadoop102为时间服务器,hadoop103、hadoop104跟它对齐。

  • 集群时间同步配置

1、在hadoop102上,查看所有节点ntpd服务状态和开机自启动状态。

  • 执行"sudo systemctl status ntpd"命令。
  • 执行"sudo systemctl start ntpd"命令。
  • 执行"sudo systemctl is-enabled ntpd"命令。

在这里插入图片描述

2、在hadoop102上,执行" sudo vim /etc/ntp.conf " 命令打开hadoop102的ntp.conf的配置文件,根据下面三点进行修改。

  • 授权 192.168.10.0-192.168.10.255 网段上的所有机器可以从这台机器上查询和同步时间,
    将#restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap
    修改为
    restrict 192.168.10.0 mask 255.255.255.0 nomodify notrap
  • 集群在局域网中,不使用其他互联网上的时间

    server 0.centos.pool.ntp.org iburst
    server 1.centos.pool.ntp.org iburst
    server 2.centos.pool.ntp.org iburst
    server 3.centos.pool.ntp.org iburst
    修改为
    #server 0.centos.pool.ntp.org iburst
    #server 1.centos.pool.ntp.org iburst
    #server 2.centos.pool.ntp.org iburst
    #server 3.centos.pool.ntp.org iburst
  • 添加,当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步。添加内容如下:
    server 127.127.1.0
    fudge 127.127.1.0 stratum 10

在这里插入图片描述

在这里插入图片描述

4、在hadoop102 的/etc/sysconfig/ntpd 文件添加"SYNC_HWCLOCK=yes",让硬件时间与系统时间一起同步。

  • 执行"sudo vim /etc/sysconfig/ntpd"“命令,添加"SYNC_HWCLOCK=yes”。

在这里插入图片描述

5、重新启动 ntpd 服务

  • 执行"sudo systemctl start ntpd"命令。

在这里插入图片描述

6、设置 ntpd 服务开机启动

  • 执行"sudo systemctl enable ntpd"命令。

在这里插入图片描述

7、其他机器配置(hadoop103、hadoop104)

  • 关闭所有节点上 ntp 服务和自启动
    执行"sudo systemctl stop ntpd"命令。
    执行"sudo systemctl disable ntpd"命令。

hadoop103

在这里插入图片描述

hadoop104

在这里插入图片描述

  • 在其他机器(hadoop103、hadoop104)配置 1 分钟与时间服务器同步一次。
    执行"sudo crontab -e"命令。
    编写定时任务如下:
    */1 * * * * /usr/sbin/ntpdate hadoop102

hadoop103、hadoop104上

在这里插入图片描述

  • 修改任意机器时间
    执行" sudo date -s “2024-07-01 11:11:11” "命令。
  • 1 分钟后查看机器是否与时间服务器同步
    执行" sudo date "命令。

生产环境:如果服务器能连接外网,不需要时间同步,浪费集群性能;如果服务器连接不了外网,需要时间同步。

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

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

相关文章

华为DCN之:SDN和NFV

1. SDN概述 1.1 SDN的起源 SDN&#xff08;Software Defined Network&#xff09;即软件定义网络。是由斯坦福大学Clean Slate研究组提出的一种新型网络创新架构。其核心理念通过将网络设备控制平面与数据平面分离&#xff0c;从而实现了网络控制平面的集中控制&#xff0c;为…

电脑配置怎么看?3个方法轻松get,这些指标一看便知

无论是购买新电脑、升级现有配置&#xff0c;还是解决电脑运行问题&#xff0c;了解电脑的配置信息都显得尤为重要。那么&#xff0c;电脑配置怎么看&#xff1f;本文将为你介绍3个简单易行的方法&#xff0c;让你轻松获取电脑配置的关键指标&#xff0c;帮助你更好地了解和管理…

3.(vue3.x+vite)el-tree组件(数组结构数据转树结构数据)

1:效果预览 2:编写代码 (1)主页面 <template><el-tree ref="componentInfoTreeRef" :data="treeData

AOP基本概念

AOP&#xff08;Aspect-Oriented Programming&#xff0c;面向切面编程&#xff09;是一种编程范式&#xff0c;用于将横切关注点&#xff08;如日志记录、安全检查、事务管理等&#xff09;从业务逻辑中分离出来&#xff0c;以提高代码的模块化程度和可维护性。以下是AOP的核心…

参数污染漏洞(HPP)挖掘技巧及实战案例全汇总

目录 概念: 漏洞原理: 实战案例总结: 1. 逻辑漏洞(IDOR) 2. 绕过检测(WAF) 挖掘技巧: 修复方案: 概念: HTTP参数污染,也叫HPP(HTTP Parameter Pollution)。简单地讲就是给一个参数赋上两个或两个以上的值,由于现行的HTTP标准没有提及在遇到多个输入值给相…

2.2.3 C#中显示控件BDPictureBox 的实现----控件实现

2.2.3 C#中显示控件BDPictureBox 的实现----控件实现 1 界面控件布局 2图片内存Mat类说明 原始图片&#xff1a;m_raw_mat ,Display_Mat()调用时更新或者InitDisplay_Mat时更新局部放大显示图片&#xff1a;m_extract_zoom_mat&#xff0c;更新scale和scroll信息后更新overla…

第四届数字安全大会:AI时代数据安全策略与天空卫士创新实践

2024年6月22日&#xff0c;以 “新质•真能力”为主题的第四届数字安全大会在北京隆重召开。这场由数世咨询和CIO时代联合主办的行业盛会&#xff0c;集中探讨了大模型、数据治理与流通、以及安全运营等当前最前沿的议题。大会吸引了来自不同行业的首席信息官&#xff08;CIO&a…

JavaScript之深入对象,详细讲讲构造函数与常见内置构造函数

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;我是前端菜鸟的自我修养&#xff01;今天给大家详细讲讲构造函数与常见内置构造函数&#xff0c;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;原创不易&#xff0c;如果能帮助到带大家&#xff0c;欢迎…

【C++知识点总结全系列 (06)】:STL六大组件详细总结与分析- 配置器、容器、迭代器、适配器、算法和仿函数

STL六大组件目录 前言1、配置器(1)What(2)Why(3)HowA.调用new和delete实现内存分配与销毁B.STL Allocator (4)allocator类A.WhatB.HowC.allocator的算法 2、容器(1)What(2)Which&#xff08;有哪些容器&#xff09;(3)序列容器&#xff08;顺序容器&#xff09;A.WhichB.array&…

世界智能产业博览会开幕 - 天空卫士汽车行业方案入选优秀案例

6月20日&#xff0c;以“智行天下、能动未来”为主题的2024世界智能产业博览会在国家会展中心&#xff08;天津&#xff09;开幕。主席向博览会致贺信并指出&#xff1a;中国高度重视人工智能发展&#xff0c;积极推动互联网、大数据、人工智能和实体经济深度融合&#xff0c;培…

网页设计入门:必备学习技巧和方法总结

网页设计是一个创造性和具有挑战性的设计领域。学习网页设计不仅需要审美能力&#xff0c;还需要设计师有扎实的专业知识来完成各种类型的网页设计项目。要想在网页设计领域脱颖而出&#xff0c;需要不断学习相关知识&#xff0c;提高专业技能。本文将分享网页设计的学习技巧和…

【原理】随机森林模型是怎么训练的

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 目录 一、随机森林简介二、随机森林训练原理2.1. 随机森林的训练流程2.2. 随机森林训练的核心代码 用过随机森林的朋友都知道&#xff0c;随机森林是集成决策的一个经典代表&#xff0c;它通过训练多棵决策树&#xf…

未公开 GeoServer开源服务器wfs远程命令执行漏洞 已复现(CVE-2024-36401)

0x01 阅读须知 技术文章仅供参考&#xff0c;此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成…

【面试系列】UI设计师高频面试题及详细解答

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&#xff1a;详细讲解AIGC的概念、核心技术、…

bootloader原理介绍

bootloader解析 bootloader的引出 不知道你有没有想过这样一个问题&#xff0c;当你按下电源开关的那一瞬间&#xff0c;第一行代码是如何在芯片上运行起来的呢&#xff1f;我们都知道嵌入式软件代码&#xff0c;是需要通过一定的方式&#xff0c;烧录在硬件芯片中&#xff0c…

ubuntu安装搜狗\谷歌输入法

目录 1 安装搜狗输入法 1.1 安装Fcitx输入框架 1.2 下载搜狗输入法安装包 1.3 安装搜狗输入法 1.4 打开配置 1.5 选择fcitx 1.6 重启系统 1.7 配置输入法 1.8 添加搜狗输入法 1.9 使用 2 安装谷歌输入法 2.1 下载fcitx-googlepinyin 2.2 选择fcitx 2.3 重启系统 …

hive小练习 拓展

基于hive表小练习-CSDN博客的拓展 -- 1. 查询没有参与任意一门考试的学生姓名 LEFT JOIN操作时&#xff0c;数据库系统会从左表&#xff08;即LEFT JOIN关键字左边的表&#xff09;返回所有的行&#xff0c; 即使在右表&#xff08;即LEFT JOIN关键字右边的表&#xff09…

Python便捷数据处理库之Baisou使用详解

概要 Baisou,中文译名为“便捷数据处理库”,是一个基于Python的库,旨在简化数据处理和分析的过程。它拥有丰富的数据类型和函数,可以帮助开发者轻松地处理数据,进行统计分析,以及实现复杂的数据转换。Baisou的设计理念是“简单、高效、易用”,让开发者能够更加专注于业…

无线领夹麦克风哪个牌子好,口碑最好的麦克风品牌良心推荐

在自媒体行业迅速发展的背景下&#xff0c;无线领夹麦克风已成为提升音频质量的重要工具。它能够在多种环境中保持语音的清晰度&#xff0c;有效增强创作效率和作品的专业性。市场上有许多无线麦克风产品&#xff0c;但并非所有都兼具高性能与合理价格。基于我的个人使用经验&a…

Firewalld 防火墙基础

Firewalld 防火墙基础 一、Firewalld概述firewalld 简介firewalld 和 iptables 的关系firewalld 与 iptables service 的区别 二、Firewalld 网络区域区域介绍Firewalld数据处理流程 三、Firewalld 防火墙的配置方法firewall-config 图形工具“区域”选项卡“服务”选项卡改变防…