0


【Linux】—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为例)

在这里插入图片描述

如果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[$#-lt1]thenecho Not Enough Arguement!exit;fi#2. 遍历集群所有机器forhostin hadoop102 hadoop103 hadoop104
doecho====================$host====================#3. 遍历所有目录,挨个发送forfilein$@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:$pdirelseecho$file does not exists!fidonedone
  • 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 不要安装在同一台服务器。
    hadoop102hadoop103hadoop104HDFSNameNode
    DataNodeDataNodeSecondaryNameNode
    DataNodeYARNNodeManagerResourceManager
    NodeManagerNodeManager

    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。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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/bashif[$#-lt1]thenecho"No Args Input..."exit;ficase$1in"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/bashforhostin hadoop102 hadoop103 hadoop104
doecho===============$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 "命令。

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

标签: 分布式 linux hadoop

本文转载自: https://blog.csdn.net/sodaloveer/article/details/139789632
版权归原作者 sodaloveer 所有, 如有侵权,请联系我们删除。

“【Linux】—Hadoop运行环境搭建(完全分布式)”的评论:

还没有评论