CentOS8.2安装Hadoop3.3.1

1、安装Hadoop之前,环境的配置

1、配置免密登录

当我们远程登录一个机子的时候,ssh hostname(ip) 会发现需要输入密码,每次输入密码未免太麻烦,就需要我们配置免密,如果不配的话,传输文件的时候输密码会输到怀疑人生。

安装SSH

yum install -y openssh-clients

首先产生公钥和私钥

ssh-keygen -t rsa

查看产生的公钥和私钥

[root@bigdata801 ~]# cd .ssh/
[root@bigdata801 .ssh]# ll
total 16
-rw-------. 1 root root 1188 Dec 28  2019 authorized_keys
-rw-------. 1 root root 1679 Dec 28  2019 id_rsa
-rw-r--r--. 1 root root  396 Dec 28  2019 id_rsa.pub
-rw-r--r--. 1 root root  744 Dec 28  2019 known_hosts

发送公钥给要免密的机器

ssh-copy-id -i /root/.ssh/id_rsa.pub hostname(ip)
--例:
ssh-copy-id -i /root/.ssh/id_rsa.pub bigdata801
ssh-copy-id -i /root/.ssh/id_rsa.pub bigdata802
ssh-copy-id -i /root/.ssh/id_rsa.pub bigdata803
ssh-copy-id -i /root/.ssh/id_rsa.pub bigdata804

注:不仅其他机器要发,本机也要发

2、修改主机名以及映射

修改主机名称

vi /etc/hostname

结果如下

bigdata801

配置主机名称映射

vim /etc/hosts

注:sudo为管理员权限,Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.59.141 bigdata801
192.168.59.142 bigdata802
192.168.59.143 bigdata803
192.168.59.144 bigdata804
3、安装JDK

上传 JDK

上传方式自行选择,如果选择Xshell,运行rz可以上传文件,若没有rz命令可以安装一个,命令如下:

yum install -y lrzsz

解压到指定文件夹

tar -zxvf jdk-8u181-linux-x64.tar.gz -C /home/model/jdk/
[root@bigdata801 jdk1.8.0_181]# lltotal 25976drwxr-xr-x. 2 10 143     4096 Jul  7  2018 bin-r--r--r--. 1 10 143     3244 Jul  7  2018 COPYRIGHTdrwxr-xr-x. 3 10 143      132 Jul  7  2018 include-rw-r--r--. 1 10 143  5207314 Jun 27  2018 javafx-src.zipdrwxr-xr-x. 5 10 143      185 Jul  7  2018 jredrwxr-xr-x. 5 10 143      245 Jul  7  2018 lib-r--r--r--. 1 10 143       40 Jul  7  2018 LICENSEdrwxr-xr-x. 4 10 143       47 Jul  7  2018 man-r--r--r--. 1 10 143      159 Jul  7  2018 README.html-rw-r--r--. 1 10 143      424 Jul  7  2018 release-rw-r--r--. 1 10 143 21099920 Jul  7  2018 src.zip-rw-r--r--. 1 10 143   106782 Jun 27  2018 THIRDPARTYLICENSEREADME-JAVAFX.txt-r--r--r--. 1 10 143   154222 Jul  7  2018 THIRDPARTYLICENSEREADME.txt[root@bigdata801 jdk1.8.0_181]# pwd/home/model/jdk/jdk1.8.0_181[root@bigdata801 jdk1.8.0_181]# 

配置环境变量

vim /etc/profile

profile 的末尾添加如下代码:

export JAVA_HOME=/home/model/jdk/jdk1.8.0_181export PATH=$PATH:$JAVA_HOME/bin

重新加载配置文件

重新加载配置文件

source /etc/profile

测试

[root@bigdata801 ~]# java -versionjava version "1.8.0_181"Java(TM) SE Runtime Environment (build 1.8.0_181-b13)Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)[root@bigdata801 ~]#

4、其他机器安装

传 jdk 给其他机器

scp -r /home/model/jdk/ bigdata802:/home/model/scp -r /home/model/jdk/ bigdata803:/home/model/scp -r /home/model/jdk/ bigdata804:/home/model/

注:传输之前若没有文件夹,需要创建

传配置文件 profile 给其他机器

scp /etc/profile bigdata802:/etc/scp /etc/profile bigdata803:/etc/scp /etc/profile bigdata804:/etc/

备注,传给其他机器以后,其他机器也需要重新加载配置文件

source /etc/profile

2、Hadoop运行的三种模式

1、本地模式

默认模式。

不对配置文件进行修改。

使用本地文件系统,而不是分布式文件系统,即数据存储在本地。

Hadoop不会启动NameNode、DataNode、JobTracker、TaskTracker等守护进程,Map()和Reduce()任务作为同一个进程的不同部分来执行的。

用于对MapReduce程序的逻辑进行调试,确保程序的正确。

2、伪分布式模式

在一台物理主机上模拟多台主机。

Hadoop启动NameNode、DataNode、JobTracker、TaskTracker这些守护进程都在同一台机器上运行,是相互独立的Java进程。

在这种模式下,Hadoop使用的是分布式文件系统,各个作业也是由JobTraker服务,来管理的独立进程。在单机模式之上增加了代码调试功能,允许检查内存使用情况,HDFS输入输出,以及其他的守护进程交互。类似于完全分布式模式,因此,这种模式常用来开发测试Hadoop程序的执行是否正确。

修改3个配置文件:core-site.xml(Hadoop集群的特性,作用于全部进程及客户端)、hdfs-site.xml(配置HDFS集群的工作属性)、mapred-site.xml(配置MapReduce集群的属性)

格式化文件系统,数据存储在HDFS上。

3、完全分布式模式

Hadoop的守护进程运行在由多台主机搭建的集群上,是真正的生产环境。

在所有的主机上安装JDK和Hadoop,组成相互连通的网络。

在主机间设置SSH免密码登录,把各从节点生成的公钥添加到主节点的信任列表。

修改3个配置文件:core-site.xml、hdfs-site.xml、mapred-site.xml,指定NameNode和JobTraker的位置和端口,设置文件的副本等参数

格式化文件系统,数据存储在HDFS上。

3、Hadoop的安装(本地模式)

1、上传文件到 /opt/software 下面
[root@bigdata801 software]# pwd/opt/software[root@bigdata801 software]# ll总用量 772300-rw-r--r--  1 root root 605187279 8月  18 08:48 hadoop-3.3.1.tar.gz-rw-r--r--. 1 root root 185646832 8月  17 17:08 jdk-8u181-linux-x64.tar.gz[root@bigdata801 software]# 
2、解压hadoop到/opt/module下
[root@bigdata801 software]# tar -zxvf hadoop-3.3.1.tar.gz -C /opt/module/
[root@bigdata801 module]# pwd/opt/module[root@bigdata801 module]# ll总用量 0drwxr-xr-x  10 1000 1000 215 6月  15 13:52 hadoop-3.3.1drwxr-xr-x.  7   10  143 245 7月   7 2018 jdk1.8.0_181[root@bigdata801 module]# cd hadoop-3.3.1/[root@bigdata801 hadoop-3.3.1]# ll总用量 88drwxr-xr-x 2 1000 1000   203 6月  15 13:52 bindrwxr-xr-x 3 1000 1000    20 6月  15 13:15 etcdrwxr-xr-x 2 1000 1000   106 6月  15 13:52 includedrwxr-xr-x 3 1000 1000    20 6月  15 13:52 libdrwxr-xr-x 4 1000 1000   288 6月  15 13:52 libexec-rw-rw-r-- 1 1000 1000 23450 6月  15 13:02 LICENSE-binarydrwxr-xr-x 2 1000 1000  4096 6月  15 13:52 licenses-binary-rw-rw-r-- 1 1000 1000 15217 6月  15 13:02 LICENSE.txt-rw-rw-r-- 1 1000 1000 29473 6月  15 13:02 NOTICE-binary-rw-rw-r-- 1 1000 1000  1541 5月  22 00:11 NOTICE.txt-rw-rw-r-- 1 1000 1000   175 5月  22 00:11 README.txtdrwxr-xr-x 3 1000 1000  4096 6月  15 13:15 sbindrwxr-xr-x 4 1000 1000    31 6月  15 14:18 share[root@bigdata801 hadoop-3.3.1]#
3、配置环境变量
[root@bigdata801 hadoop-3.3.1]# vim /etc/profile

在文件末尾追加:

export HADOOP_HOME=/opt/module/hadoop-3.3.1export PATH=$PATH:$HADOOP_HOME/binexport PATH=$PATH:$HADOOP_HOME/sbin

输入Hadoop,出现以下内容,说明安装成功

[root@bigdata801 hadoop-3.3.1]# hadoopUsage: hadoop [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS] or    hadoop [OPTIONS] CLASSNAME [CLASSNAME OPTIONS]  where CLASSNAME is a user-provided Java class  OPTIONS is none or any of:buildpaths                       attempt to add class files from build tree--config dir                     Hadoop config directory--debug                          turn on shell script debug mode--help                           usage informationhostnames list[,of,host,names]   hosts to use in slave modehosts filename                   list of hosts to use in slave modeloglevel level                   set the log4j level for this commandworkers                          turn on worker mode  SUBCOMMAND is one of:    Admin Commands:daemonlog     get/set the log level for each daemon    Client Commands:archive       create a Hadoop archivechecknative   check native Hadoop and compression libraries availabilityclasspath     prints the class path needed to get the Hadoop jar and the required librariesconftest      validate configuration XML filescredential    interact with credential providersdistch        distributed metadata changerdistcp        copy file or directories recursivelydtutil        operations related to delegation tokensenvvars       display computed Hadoop environment variablesfs            run a generic filesystem user clientgridmix       submit a mix of synthetic job, modeling a profiled from production loadjar      run a jar file. NOTE: please use "yarn jar" to launch YARN applications, not this command.jnipath       prints the java.library.pathkdiag         Diagnose Kerberos Problemskerbname      show auth_to_local principal conversionkey           manage keys via the KeyProviderrumenfolder   scale a rumen input tracerumentrace    convert logs into a rumen traces3guard       manage metadata on S3trace         view and modify Hadoop tracing settingsversion       print the version    Daemon Commands:kms           run KMS, the Key Management Serverregistrydns   run the registry DNS serverSUBCOMMAND may print help when invoked w/o parameters or with -h.[root@bigdata801 hadoop-3.3.1]# 

4、本地模式运行DEMO案例

1、Hadoop的目录下创建wcinput文件夹
[root@bigdata801 hadoop-3.3.1]# mkdir wcinput
2、wcinput文件夹下创建word.txt文件
[root@bigdata801 hadoop-3.3.1]# cd wcinput/[root@bigdata801 wcinput]# vim word.txt

word.txt 文件内容如下:

zhangsan zhangsan lisi lisi lisi wangwu wangwu wangsu wangwu zhaoliu
3、执行wordcount案例
[root@bigdata801 hadoop-3.3.1]# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount wcinput/ ./wcoutput

注意:wcinput为输入路径,wcoutput为输出路径,输出路径必须为不存在的路径,如果是存在的路径,程序会报错。

4、在输出路径中查看执行结果
[root@bigdata801 wcoutput]# pwd/opt/module/hadoop-3.3.1/wcoutput[root@bigdata801 wcoutput]# ll总用量 4-rw-r--r-- 1 root root 46 8月  22 18:43 part-r-00000-rw-r--r-- 1 root root  0 8月  22 18:43 _SUCCESS[root@bigdata801 wcoutput]# cat part-r-00000 lisi	3wangsu	1wangwu	3zhangsan	2zhaoliu	1[root@bigdata801 wcoutput]# 

5、Hadoop的安装(完全分布式模式)

1、集群部署规划

注意:

NameNode 和 SecondaryNameNode 不要安装在同一台服务器

ResourceManager 也很消耗内存,不要和 NameNode、SecondaryNameNode 配置在同一台机器上

服务 bigdata801 bigdata802 bigdata803 bigdata804
HDFS NameNode SecondaryNameNode
HDFS DataNode DataNode DataNode DataNode
YARN ResourceManager
YARN NodeManager NodeManager NodeManager NodeManager
历史服务器 JobHistoryServer
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这个路径上,用户可以根据项目需求重新进行修改配置。

3、配置集群

核心配置文件 core-site.xml

<configuration>        <property>        <name>fs.defaultFSname>        <value>hdfs://bigdata801:8020value>    property>        <property>        <name>hadoop.tmp.dirname>        <value>/opt/module/hadoop-3.3.1/datavalue>    property>configuration>

HDFS配置文件 hdfs-site.xml

<configuration>        <property>        <name>dfs.namenode.http-addressname>        <value>bigdata801:9870value>    property>        <property>        <name>dfs.namenode.secondary.http-addressname>         <value>bigdata802:9868value>    property>configuration>

YARN配置文件 yarn-site.xml

<configuration>        <property>        <name>yarn.nodemanager.aux-servicesname>        <value>mapreduce_shufflevalue>    property>        <property>        <name>yarn.resourcemanager.hostnamename>        <value>bigdata803value>    property>configuration>

MapReduce配置文件 mapred-site.xml

<configuration>        <property>        <name>mapreduce.framework.namename>        <value>yarnvalue>    property>configuration>
4、配置文件分发到其他机器
[root@bigdata801 etc]# xsync hadoop/==================== bigdata801 ====================sending incremental file listsent 993 bytes  received 18 bytes  2,022.00 bytes/sectotal size is 111,509  speedup is 110.30==================== bigdata802 ====================sending incremental file listhadoop/hadoop/core-site.xmlhadoop/hdfs-site.xmlhadoop/mapred-site.xmlhadoop/yarn-site.xmlsent 3,188 bytes  received 139 bytes  2,218.00 bytes/sectotal size is 111,509  speedup is 33.52==================== bigdata803 ====================sending incremental file listhadoop/hadoop/capacity-scheduler.xmlhadoop/configuration.xslhadoop/container-executor.cfghadoop/core-site.xmlhadoop/hadoop-env.cmdhadoop/hadoop-env.shhadoop/hadoop-metrics2.propertieshadoop/hadoop-policy.xmlhadoop/hadoop-user-functions.sh.examplehadoop/hdfs-rbf-site.xmlhadoop/hdfs-site.xmlhadoop/httpfs-env.shhadoop/httpfs-log4j.propertieshadoop/httpfs-site.xmlhadoop/kms-acls.xmlhadoop/kms-env.shhadoop/kms-log4j.propertieshadoop/kms-site.xmlhadoop/log4j.propertieshadoop/mapred-env.cmdhadoop/mapred-env.shhadoop/mapred-queues.xml.templatehadoop/mapred-site.xmlhadoop/ssl-client.xml.examplehadoop/ssl-server.xml.examplehadoop/user_ec_policies.xml.templatehadoop/workershadoop/yarn-env.cmdhadoop/yarn-env.shhadoop/yarn-site.xmlhadoop/yarnservice-log4j.propertieshadoop/shellprofile.d/hadoop/shellprofile.d/example.shsent 4,947 bytes  received 1,668 bytes  13,230.00 bytes/sectotal size is 111,509  speedup is 16.86==================== bigdata804 ====================sending incremental file listhadoop/hadoop/capacity-scheduler.xmlhadoop/configuration.xslhadoop/container-executor.cfghadoop/core-site.xmlhadoop/hadoop-env.cmdhadoop/hadoop-env.shhadoop/hadoop-metrics2.propertieshadoop/hadoop-policy.xmlhadoop/hadoop-user-functions.sh.examplehadoop/hdfs-rbf-site.xmlhadoop/hdfs-site.xmlhadoop/httpfs-env.shhadoop/httpfs-log4j.propertieshadoop/httpfs-site.xmlhadoop/kms-acls.xmlhadoop/kms-env.shhadoop/kms-log4j.propertieshadoop/kms-site.xmlhadoop/log4j.propertieshadoop/mapred-env.cmdhadoop/mapred-env.shhadoop/mapred-queues.xml.templatehadoop/mapred-site.xmlhadoop/ssl-client.xml.examplehadoop/ssl-server.xml.examplehadoop/user_ec_policies.xml.templatehadoop/workershadoop/yarn-env.cmdhadoop/yarn-env.shhadoop/yarn-site.xmlhadoop/yarnservice-log4j.propertieshadoop/shellprofile.d/hadoop/shellprofile.d/example.shsent 4,943 bytes  received 1,668 bytes  4,407.33 bytes/sectotal size is 111,509  speedup is 16.87[root@bigdata801 etc]# 

分发脚本参见:scp、rsync与集群分发

在bigdata803上验证是否成功

[root@bigdata803 module]# cat hadoop-3.3.1/etc/hadoop/core-site.xml                 fs.defaultFS        hdfs://bigdata801:8020                    hadoop.tmp.dir        /opt/module/hadoop-3.3.1/data    [root@bigdata803 module]# 

由此可见分发成功

5、群起集群

配置workers

bigdata801bigdata802bigdata803bigdata804

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行

发送其他机器workers

[root@bigdata801 hadoop]# xsync workers ==================== bigdata801 ====================sending incremental file listsent 48 bytes  received 12 bytes  120.00 bytes/sectotal size is 44  speedup is 0.73==================== bigdata802 ====================sending incremental file listworkerssent 139 bytes  received 41 bytes  120.00 bytes/sectotal size is 44  speedup is 0.24==================== bigdata803 ====================sending incremental file listworkerssent 139 bytes  received 41 bytes  360.00 bytes/sectotal size is 44  speedup is 0.24==================== bigdata804 ====================sending incremental file listworkerssent 139 bytes  received 41 bytes  120.00 bytes/sectotal size is 44  speedup is 0.24[root@bigdata801 hadoop]#

启动集群HDFS

如果集群是第一次启动,需要在 bigdata801 节点格式化NameNode

注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。

root@bigdata801 hadoop-3.3.1]# hdfs namenode -format
[root@bigdata801 hadoop-3.3.1]# ll总用量 88drwxr-xr-x 2 1000 1000   203 6月  15 13:52 bindrwxr-xr-x 3 root root    17 8月  22 22:01 datadrwxr-xr-x 3 1000 1000    20 6月  15 13:15 etcdrwxr-xr-x 2 1000 1000   106 6月  15 13:52 includedrwxr-xr-x 3 1000 1000    20 6月  15 13:52 libdrwxr-xr-x 4 1000 1000   288 6月  15 13:52 libexec-rw-rw-r-- 1 1000 1000 23450 6月  15 13:02 LICENSE-binarydrwxr-xr-x 2 1000 1000  4096 6月  15 13:52 licenses-binary-rw-rw-r-- 1 1000 1000 15217 6月  15 13:02 LICENSE.txtdrwxr-xr-x 2 root root    37 8月  22 22:01 logs-rw-rw-r-- 1 1000 1000 29473 6月  15 13:02 NOTICE-binary-rw-rw-r-- 1 1000 1000  1541 5月  22 00:11 NOTICE.txt-rw-rw-r-- 1 1000 1000   175 5月  22 00:11 README.txtdrwxr-xr-x 3 1000 1000  4096 6月  15 13:15 sbindrwxr-xr-x 4 1000 1000    31 6月  15 14:18 sharedrwxr-xr-x 2 root root    22 8月  22 18:00 wcinputdrwxr-xr-x 2 root root    88 8月  22 18:43 wcoutput[root@bigdata801 hadoop-3.3.1]# 

如果有data和logs目录,说明初始化成功

如果报错1:

[root@bigdata801 sbin]# start-dfs.sh Starting namenodes on [bigdata801]ERROR: Attempting to operate on hdfs namenode as rootERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.Starting datanodesERROR: Attempting to operate on hdfs datanode as rootERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.Starting secondary namenodes [bigdata802]ERROR: Attempting to operate on hdfs secondarynamenode as rootERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.[root@bigdata801 sbin]#

在etc/profile中添加如下代码,并发送其他机器

[root@bigdata801 ~]# vim /etc/profile
export HDFS_NAMENODE_USER=rootexport HDFS_DATANODE_USER=rootexport HDFS_SECONDARYNAMENODE_USER=rootexport YARN_RESOURCEMANAGER_USER=rootexport YARN_NODEMANAGER_USER=root
[root@bigdata801 ~]# xsync /etc/profile

分别在其他机器重新加载配置文件

[root@bigdata802 ~]# source /etc/profile
[root@bigdata803 ~]# source /etc/profile
[root@bigdata804 ~]# source /etc/profile

如果报错2:

[root@bigdata801 sbin]# start-dfs.sh Starting namenodes on [bigdata801]上一次登录:日 8月 22 22:17:49 CST 2021pts/0 上bigdata801: ERROR: JAVA_HOME is not set and could not be found.Starting datanodes上一次登录:日 8月 22 22:19:27 CST 2021pts/0 上bigdata801: ERROR: JAVA_HOME is not set and could not be found.bigdata803: ERROR: JAVA_HOME is not set and could not be found.bigdata802: ERROR: JAVA_HOME is not set and could not be found.bigdata804: ERROR: JAVA_HOME is not set and could not be found.

修改配置文件hadoop-env.sh,并发送其他机器

[root@bigdata801 hadoop]# vim hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_181
[root@bigdata801 ~]# xsync hadoop-env.sh

查看集群是否启动成功

[root@bigdata801 ~]# jps5174 DataNode5496 Jps5020 NameNode[root@bigdata801 ~]# 
[root@bigdata802 ~]# jps2658 Jps2611 SecondaryNameNode2508 DataNode[root@bigdata802 ~]# 
[root@bigdata803 ~]# jps2424 DataNode2477 Jps[root@bigdata803 ~]# 
[root@bigdata804 ~]# jps2438 Jps2383 DataNode[root@bigdata804 ~]# 

关闭防火墙,并且关闭防火墙开机自启

systemctl start firewalld		#启动防火墙服务systemctl stop firewalld		#停止防火墙服务systemctl restart firewalld		#重启防火墙服务systemctl status firewalld		#检查防火墙服务状态systemctl enable firewalld		#设防火墙为开机启动systemctl disable firewalld		#禁止防火墙开机启动

NameNode 访问地址:http://bigdata801:9870

SecondaryNameNode 访问地址:http://bigdata802:9868

注意:不关闭防火墙是访问不到的,此外bigdata801,bigdata802 需要配置 windows 的 hosts(C:\Windows\System32\drivers\etc\hosts) 映射才可,不配置的话,输入对应的IP也可以

启动集群YARN

在配置了ResourceManager的节点(bigdata803)执行

start-yarn.sh

查看集群是否启动成功

[root@bigdata801 ~]# jps6211 NameNode6973 Jps6367 DataNode6879 NodeManager[root@bigdata801 ~]# 
[root@bigdata802 ~]# jps2866 DataNode3240 NodeManager3336 Jps2970 SecondaryNameNode[root@bigdata802 ~]#
[root@bigdata803 ~]# jps3089 ResourceManager3576 Jps3242 NodeManager2623 DataNode[root@bigdata803 ~]# 
[root@bigdata804 ~]# jps2584 DataNode2938 Jps2844 NodeManager[root@bigdata804 ~]# 

ResourceManager 的访问地址:http://bigdata803:8088

6、集群崩溃处理办法

1、搞崩集群

杀掉DataNode进程

[root@bigdata801 ~]# kill -9 6367

删掉data目录

[root@bigdata801 ~]# rm -rf data/
[root@bigdata802 ~]# rm -rf data/
[root@bigdata803 ~]# rm -rf data/
[root@bigdata804 ~]# rm -rf data/

此时文件是不可以下载的,因为data已经被删掉,我们之前配置了3份存储,如果删掉其中的2份,是可以正常下载的。

此时直接格式化集群是起不来的,提示需要先停掉集群,正常情况下先把 Yarn 停掉,再停 HDFS

[root@bigdata803 ~]# stop-yarn.sh
[root@bigdata801 ~]# stop-dfs.sh

此时直接格式化集群是可以起来的,但是jps发现没有了NameNode,而且访问NameNode 的地址:http://bigdata801:9870 是访问不通的,这是因为版本号不一致。正确的方式如下:

2、格式化集群

先停掉 Yarn 服务,再停 HDFS

[root@bigdata803 ~]# stop-yarn.sh
[root@bigdata801 ~]# stop-dfs.sh

删除每个集群的data和logs

[root@bigdata801 hadoop-3.3.1]# rm -rf data logs[root@bigdata802 hadoop-3.3.1]# rm -rf data logs[root@bigdata803 hadoop-3.3.1]# rm -rf data logs[root@bigdata804 hadoop-3.3.1]# rm -rf data logs

格式化集群

[root@bigdata801 hadoop-3.3.1]# hdfs namenode -format

此时启动集群,发现启动成功,jps 可以查看到进程,而且前端页面可以访问,但是数据没了。

7、配置历史服务器

为了查看程序的历史运行情况,需要配置一下历史服务器。如果不配置的话,运行完的任务我们是看不到执行情况的详细信息的。

1、修改配置文件 mapred-site.xml

在 mapred-site.xml 中增加如下配置

[root@bigdata801 hadoop]# vim mapred-site.xml
<!-- 历史服务器端地址 --><property>    <name>mapreduce.jobhistory.address</name>    <value>bigdata801:10020</value></property><!-- 历史服务器web端地址 --><property>    <name>mapreduce.jobhistory.webapp.address</name>    <value>bigdata801:19888</value></property>
2、分发配置文件 mapred-site.xml
[root@bigdata801 hadoop]# xsync mapred-site.xml ==================== bigdata801 ====================sending incremental file listsent 56 bytes  received 12 bytes  136.00 bytes/sectotal size is 1,206  speedup is 17.74==================== bigdata802 ====================sending incremental file listmapred-site.xmlsent 613 bytes  received 47 bytes  440.00 bytes/sectotal size is 1,206  speedup is 1.83==================== bigdata803 ====================sending incremental file listmapred-site.xmlsent 613 bytes  received 47 bytes  1,320.00 bytes/sectotal size is 1,206  speedup is 1.83==================== bigdata804 ====================sending incremental file listmapred-site.xmlsent 613 bytes  received 47 bytes  440.00 bytes/sectotal size is 1,206  speedup is 1.83[root@bigdata801 hadoop]# 

如果此时 Yarn 是启动的,则需要关掉重新启动,如果是关掉的,则直接启动

[root@bigdata801 ~]# start-dfs.sh Starting namenodes on [bigdata801]上一次登录:一 8月 23 21:12:17 CST 2021从 192.168.59.1pts/0 上Starting datanodes上一次登录:一 8月 23 21:21:51 CST 2021pts/0 上Starting secondary namenodes [bigdata802]上一次登录:一 8月 23 21:21:54 CST 2021pts/0 上[root@bigdata801 ~]# 
[root@bigdata803 ~]# start-yarn.sh Starting resourcemanager上一次登录:一 8月 23 21:12:19 CST 2021从 192.168.59.1pts/0 上Starting nodemanagers上一次登录:一 8月 23 21:24:45 CST 2021pts/0 上[root@bigdata803 ~]# 
3、在 bigdata801 上启动历史服务器
[root@bigdata801 ~]# mapred --daemon start historyserver
4、查看历史服务器是否启动
[root@bigdata801 ~]# jps1681 NameNode2434 Jps2195 NodeManager2376 JobHistoryServer1837 DataNode[root@bigdata801 ~]# 

此时进程中多了一个 JobHistoryServer ,服务是启动成功的

5、查看 JobHistory

地址:http://bigdata801:19888/jobhistory

8、配置日志聚集

日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。

日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。

注意:开启日志聚集功能,需要重新启动 NodeManager 、ResourceManager 和 HistoryServer。

1、修改配置文件 yarn-site.xml
[root@bigdata801 hadoop]# vim yarn-site.xml
<!-- 开启日志聚集功能 --><property>	<name>yarn.log-aggregation-enable</name>	<value>true</value></property><!-- 设置日志聚集服务器地址 --><property>	<name>yarn.log.server.url</name>	<value>http://bigdata801:19888/jobhistory/logs</value></property><!-- 设置日志保留时间为7天 --><property>	<name>yarn.log-aggregation.retain-seconds</name>	<value>604800</value></property>
2、分发配置文件 yarn-site.xml
[root@bigdata801 hadoop]# xsync yarn-site.xml ==================== bigdata801 ====================sending incremental file listsent 53 bytes  received 12 bytes  43.33 bytes/sectotal size is 1,486  speedup is 22.86==================== bigdata802 ====================sending incremental file listyarn-site.xmlsent 890 bytes  received 47 bytes  1,874.00 bytes/sectotal size is 1,486  speedup is 1.59==================== bigdata803 ====================sending incremental file listyarn-site.xmlsent 890 bytes  received 47 bytes  624.67 bytes/sectotal size is 1,486  speedup is 1.59==================== bigdata804 ====================sending incremental file listyarn-site.xmlsent 890 bytes  received 47 bytes  1,874.00 bytes/sectotal size is 1,486  speedup is 1.59[root@bigdata801 hadoop]# 
3、关闭 HistoryServer ,NodeManager 、ResourceManager
[root@bigdata801 ~]# mapred --daemon stop historyserver
[root@bigdata801 ~]# jps1681 NameNode2195 NodeManager2618 Jps1837 DataNode[root@bigdata801 ~]# 
[root@bigdata803 ~]# stop-yarn.sh
[root@bigdata803 ~]# jps1575 DataNode2700 Jps[root@bigdata803 ~]# 
[root@bigdata801 ~]# jps1681 NameNode2695 Jps1837 DataNode[root@bigdata801 ~]# 
4、启动 NodeManager 、ResourceManage 和 HistoryServer
[root@bigdata803 ~]# start-yarn.sh Starting resourcemanager上一次登录:一 8月 23 21:51:45 CST 2021pts/0 上Starting nodemanagers上一次登录:一 8月 23 21:54:46 CST 2021pts/0 上[root@bigdata803 ~]# 
[root@bigdata801 ~]# mapred --daemon start historyserver[root@bigdata801 ~]# jps1681 NameNode2918 JobHistoryServer2764 NodeManager1837 DataNode2957 Jps[root@bigdata801 ~]#
5、查看日志

历史服务器地址:http://bigdata801:19888/jobhistory

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

1、各个模块分开启动/停止(配置ssh是前提)

整体启动/停止HDFS

start-dfs.shstop-dfs.sh

整体启动/停止YARN

start-yarn.shstop-yarn.sh
2、各个服务组件逐一启动/停止

分别启动/停止HDFS组件

hdfs --daemon start/stop namenode/datanode/secondarynamenode

启动/停止YARN

yarn --daemon start/stop resourcemanager/nodemanager

10、编写Hadoop集群常用脚本

1、Hadoop集群启停脚本

启动程序包含HDFS,Yarn,Historyserver

在/root/bin/ 下创建 myhadoop.sh

[root@bigdata801 bin]# cd /root/bin/
[root@bigdata801 bin]# vim myhadoop.sh

脚本内容如下

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

赋予脚本执行权限

[root@bigdata801 bin]# chmod 777 myhadoop.sh

在文件 start-dfs.sh,stop-dfs.sh 顶部添加如下参数

#!/usr/bin/env bashHDFS_DATANODE_USER=rootHADOOP_SECURE_DN_USER=hdfsHDFS_NAMENODE_USER=rootHDFS_SECONDARYNAMENODE_USER=root

在文件 start-yarn.sh,stop-yarn.sh 顶部添加如下参数

#!/usr/bin/env bashYARN_RESOURCEMANAGER_USER=rootHADOOP_SECURE_DN_USER=yarnYARN_NODEMANAGER_USER=root

停止集群测试

[root@bigdata801 bin]# myhadoop.sh stop =================== 关闭 hadoop集群 =================== --------------- 关闭 historyserver --------------- --------------- 关闭 yarn ---------------Stopping nodemanagers上一次登录:一 8月 23 21:54:48 CST 2021pts/0 上Stopping resourcemanager上一次登录:一 8月 23 22:29:22 CST 2021 --------------- 关闭 hdfs ---------------WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER.Stopping namenodes on [bigdata801]上一次登录:一 8月 23 21:22:00 CST 2021pts/0 上Stopping datanodes上一次登录:一 8月 23 22:29:27 CST 2021Stopping secondary namenodes [bigdata802]上一次登录:一 8月 23 22:29:29 CST 2021[root@bigdata801 bin]# jps4259 Jps[root@bigdata801 bin]# 

启动集群测试

[root@bigdata801 bin]# myhadoop.sh start =================== 启动 hadoop集群 =================== --------------- 启动 hdfs ---------------WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER.Starting namenodes on [bigdata801]上一次登录:一 8月 23 22:29:31 CST 2021Starting datanodes上一次登录:一 8月 23 22:33:44 CST 2021Starting secondary namenodes [bigdata802]上一次登录:一 8月 23 22:33:47 CST 2021 --------------- 启动 yarn ---------------Starting resourcemanager上一次登录:一 8月 23 22:29:24 CST 2021Starting nodemanagers上一次登录:一 8月 23 22:33:57 CST 2021 --------------- 启动 historyserver ---------------[root@bigdata801 bin]# 

验证

[root@bigdata801 bin]# jps4950 NodeManager4615 DataNode5116 JobHistoryServer5180 Jps4461 NameNode[root@bigdata801 bin]# 
2、单一节点查看所有服务器 Java 进程

场景:启动集群以后,我们需要查看集群是否启动成功的关键一步就是在各个服务上输入JSP命令查看该服务器上对应的服务,但是每次在各个机器上输一遍未免太麻烦,所以编写以下脚本。

在 /root/bin 下创建 jpsall 文件

[root@bigdata801 bin]# cd /root/bin/[root@bigdata801 bin]# vim jpsall

脚本内容如下

#!/bin/bash  #执行 JPS 命令,查询每台服务器上的节点状态echo ===============查询每台服务器状态===============for host in bigdata801 bigdata802 bigdata803 bigdata804do    echo =============== $host ===============    ssh $host '/opt/module/jdk1.8.0_181/bin/jps'doneecho ===============查询服务器状态结束===============

授予脚本执行权限

[root@bigdata801 bin]# chmod +x jpsall

分发/root/bin/目录,保证自定义脚本在每台机器上都可以使用

[root@bigdata801 bin]# xsync /root/bin/

测试

[root@bigdata801 bin]# jpsall ===============查询每台服务器状态============================== bigdata801 ===============5712 JobHistoryServer5202 DataNode5542 NodeManager5047 NameNode5967 Jps=============== bigdata802 ===============3156 NodeManager3461 Jps3064 SecondaryNameNode2943 DataNode=============== bigdata803 ===============3488 ResourceManager3281 DataNode3651 NodeManager4139 Jps=============== bigdata804 ===============2576 DataNode2699 NodeManager2957 Jps===============查询服务器状态结束===============[root@bigdata801 bin]# 

11、常用端口号说明

端口名称 Hadoop2.x Hadoop3.x
NameNode 内部通信端口 8020 / 9000 8020/9000/9820
NameNode HTTP UI (对用户的查询端口) 50070 9870
MapReduce查看执行任务端口 8088 8088
历史服务器通信端口 19888 19888

12、集群时间同步

如果服务器在公网环境(能连接外网),可以不采用集群时间同步,因为服务器会定期和公网时间进行校准;

如果服务器在内网环境,必须要配置集群时间同步,否则时间久了,会产生时间偏差,导致集群执行任务时间不同步。

CentOS8.2 已经没有ntp时间同步服务了,使用的是chrony。

1、修改配置文件
vim /etc/chrony.conf

将第三行注释,添加第四行

# Use public servers from the pool.ntp.org project.# Please consider joining the pool (http://www.pool.ntp.org/join.html).# pool 2.centos.pool.ntp.org iburstserver 192.168.59.141 iburst

配置文件详解

# 从时间服务器192.168.1.231上获取时间,如果有别的时间服务器,再添加一行就行,总数没上限。server 192.168.59.141 iburst# 根据实际时间计算出计算机增减时间的比率,将它记录到一个文件中是最合理的,它会在重启后为系统时钟作出补偿# 甚至可能的话,会从时钟服务器获得较好的估值driftfile /var/lib/chrony/drift# chronyd根据需求减慢或加速时间调整,Tristone发现网上有好多互相抄的内容,让人不知所云# 这里表示时间的误差如果小于5秒,则通过减慢或加快时钟速度来逐渐调整时钟。# 如果时间的误差大于5秒,前3次更新时间时允许步进时间(一步到位调整时间)。# 如果改为:makestep 5 -1,则一直是按照一步到位的方式调整时间(慎用)makestep 5 3# rtcsync指令将启用一个内核模式,在该模式中,系统时间每11分钟会拷贝到实时时钟(RTC);rtcsync# 允许哪个IP访问本服务器的时间服务allow 192.168.1.0/24# 禁止哪个IP访问本服务器的时间服务deny 192.168/16# Get TAI-UTC offset and leap seconds from the system tz database.# 从system tz数据库中获取TAI-UTC偏移量和闰秒。leapsectz right/UTC# 指定日志文件的目录。logdir /var/log/chrony# 指定包含NTP验证密钥的文件。#keyfile /etc/chrony.keys
2、基本操作
systemctl stop chronyd       #停止chronyd服务systemctl start chronyd      #开始chronyd服务systemctl restart chronyd    #重启chronyd服务systemctl status chronyd     #查看chronyd服务状态systemctl enable chronyd     #开机启动chronyd服务systemctl disable chronyd    #禁止开机启动chronyd服务chronyc sources –v      #查看时间同步源,查看时间同步进度,结果解释: *说明时间同步完成,如果为?说明不成功,检查防火墙再看看chronyd有没有重启。chronyc sourcestats -v        #查看时间同步源状态:timedatectl set-local-rtc 1   #硬件时间默认为UTC:timedatectl set-ntp yes       #启用NTP时间同步:chronyc tracking              #校准时间服务器:

你可能感兴趣的:(大数据,Hadoop,ssh,hadoop,linux)