当前位置:   article > 正文

Hadoop3:集群搭建及常用命令与shell脚本整理(入门篇,从零开始搭建)_编写hadoop集群shell启动脚本

编写hadoop集群shell启动脚本

一、集群环境说明

1、用VMware安装3Centos7.9虚拟机
2、虚拟机配置:2C,2G内存,50G存储
3、集群架构设计
从表格中,可以看出,Hadoop集群,主要有2个模块服务,一个是HDFS服务,一个是YARN服务
在这里插入图片描述

二、搭建集群

1、安装3台Centos7.9虚拟机

安装教程:VMware安装Centos7详细教程及初始化配置

1.1、修改三台主机名

三台虚拟机固定IP192.168.31.102、192.168.31.103、192.168.31.104
三台主机的hostname分别修改为,hadoop102,hadoop103,hadoop104

vim /etc/hostname
  • 1

在这里插入图片描述

1.2、配置三台主机hosts文件

vim /etc/hosts

192.168.31.100	hadoop100
192.168.31.101	hadoop101
192.168.31.102	hadoop102
192.168.31.103	hadoop103
192.168.31.104	hadoop104
192.168.31.105	hadoop105
192.168.31.106	hadoop106
192.168.31.107	hadoop107
192.168.31.108	hadoop108
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述

1.3、三台机器创建账号

创建atguigu账号,并设置密码为123456

useradd atguigu
echo 123456|passwd --stdin atguigu;
  • 1
  • 2

配置atguigu账号root权限

visudo

末尾添加
atguigu    ALL=(ALL)       NOPASSWD:ALL
  • 1
  • 2
  • 3
  • 4

1.4、三台机器间配置atguigu账号免密登陆

102配置到103免密登陆为例

cd							进入当前账号家目录
ssh-keygen					连续三次回车		
ssh-copy-id 192.168.31.103	复制公钥到hadoop103服务器,这样,102的atguigu就可以免密登陆hadoop103服务器
  • 1
  • 2
  • 3

参考:服务器间配置免密登陆

1.5、同步集群时间(针对内网环境的集群,公网集群可以跳过)

找一个机器,作为时间服务器,所有的机器与这台机器的时间进行定时的同步
在这里插入图片描述

1.5.1、root账号配置102机器的ntp服务

1、查看ntp服务,并设置开机自启动

systemctl status ntpd
systemctl start ntpd
systemctl enable ntpd
  • 1
  • 2
  • 3

如果命令报 Unit ntpd.service could not be found,则需要安装ntp服务

rpm -q ntp	查看服务是否安装
yum install ntp	安装服务
  • 1
  • 2

2、修改ntp.conf文件

vim /etc/ntp.conf

server 127.127.1.0
fudge 127.127.1.0 stratum 10
  • 1
  • 2
  • 3
  • 4

restrict 后面的IP,写你们自己的IP,我的是192.168.31.0网段的
在这里插入图片描述

当该节点丢失网络连接,依然可以采 本地时间作为时间服务器,为集群中的其他节点提供时间同步
在这里插入图片描述
3、修改/etc/sysconfig/ntpd文件
作用:让硬件时间和系统时间一起同步,这样更精确

vim /etc/sysconfig/ntpd

SYNC_HWCLOCK=yes
  • 1
  • 2
  • 3

4、重启ntp服务

systemctl status ntpd
systemctl stop ntpd
systemctl start ntpd
systemctl enable ntpd

检查配置
systemctl status ntpd
systemctl is-enabled ntpd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
1.5.2、root账号配置103及104机器,同步102的时间

1、关闭ntp服务

systemctl stop ntpd
systemctl disable ntpd
  • 1
  • 2

2、创建定时任务,定时同步102时间

crontab -e

*/1 * * * * /usr/sbin/ntpdate hadoop102
  • 1
  • 2
  • 3

3、测试同步功能
修改时间

date -s "2021-9-11 11:11:11"
  • 1

1分钟后,查看时间

date
  • 1

在这里插入图片描述

2、三台虚拟机都安装JDK,并配置环境变量

2.1、卸载系统自带的OpenJDK

2.1.1、查看openJDK

[root@CFDB2 ~]$ rpm -qa|grep java
tzdata-java-2018e-3.el7.noarch
java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64
java-1.7.0-openjdk-headless-1.7.0.181-2.6.14.8.el7_5.x86_64
java-1.7.0-openjdk-1.7.0.181-2.6.14.8.el7_5.x86_64
javapackages-tools-3.4.1-11.el7.noarch
python-javapackages-3.4.1-11.el7.noarch
java-1.8.0-openjdk-headless-1.8.0.171-8.b10.el7_5.x86_64
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.1.2、卸载openJDK

rpm -qa | grep -i java | xargs n1 rpm -e --nodeps
  • 1

2.2、安装JDK8

tar -zxvf jdk-7u79-linux-x64.tar.gz -C /usr/local/jdks/
cd /usr/local/jdks/

vim /etc/profile.d/java.sh

#!/bin/bash
#
export JAVA_HOME=/usr/local/jdks/jdk1.8.0_211
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
--------------------------
source /etc/profile  #执行该命令
java -version  #查看java是否安装成功
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3、三台虚拟机都安装Hadoop3,并配置环境变量

1、准备Hadoop3安装包
在这里插入图片描述2、三台机器上准备两个目录
在这里插入图片描述
3、将hadoop3安装包上传到software目录下
在这里插入图片描述
4、解压并配置环境变量
解压安装

tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
  • 1

配置环境变量

进入目录
 cd /etc/profile.d/
 
 创建文件,并添加如下内容
vim hadoop.sh
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

重新加载环境变量,这样新配置的hadoop环境变量才会生效
source /etc/profile
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

检查hadoop安装是否成

hadoop version
  • 1

在这里插入图片描述

4、hadoop的4个自定义配置文件及workers配置

1、准备一个同步文件的脚本

参考:服务器同步文件脚本
这样,在102上配置好后,用该脚本同步到另外两台机器上即可。

2、core-site.xml

vim /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
  • 1

完整配置内容如下

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://hadoop102:8020</value>
  <description>指定 NameNode 的地址</description>
</property>

<property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/module/hadoop-3.1.3/data</value>
  <description>指定 Hadoop 数据的存储目录</description>
</property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

3、hdfs-site.xml

vim /opt/module/hadoop-3.1.3/etc/hadoop/hdfs-site.xml
  • 1

完整配置内容如下

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property>
  <name>dfs.namenode.http-address</name>
  <value>hadoop102:9870</value>
  <description>nn web 端访问地址</description>
</property>

<property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>hadoop104:9868</value>
  <description>2 nn web 端访问地址</description>
</property>
</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

4、mapred-site.xml

vim /opt/module/hadoop-3.1.3/etc/hadoop/mapred-site.xml
  • 1

完整配置内容如下

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

5、yarn-site.xml

vim /opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml
  • 1

完整配置内容如下

<?xml version="1.0"?>
<configuration>

  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    <description>指定 MR 走 shuffle</description>
  </property>
  
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop103</value>
    <description>指定 ResourceManager 的地址</description>
  </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_MAPRED_HOME</value>
    <description>系统环境变量的继承</description>
  </property>
  
  <property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
    <description>开启日志聚集功能</description>
  </property>
  
  <property>
    <description>设置日志聚集服务器地址</description>
    <name>yarn.log.server.url</name>
    <value>http://hadoop102:19888/jobhistory/logs</value>
  </property>
  
  <property>
    <description>设置日志保留时间为 7 天, -1 表示不保存日志</description>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
  </property>

</configuration>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

6、配置workers

vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
  • 1

完整配置内容如下

hadoop102
hadoop103
hadoop104
  • 1
  • 2
  • 3

7、使用xsync同步脚本,将配置文件同步到103、104

cd /opt/module/hadoop-3.1.3/etc/hadoop

xsync core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml workers
  • 1
  • 2
  • 3

5、102上启动HDFS服务

1、第一次启动的准备工作

需要在hadoop102上格式化 NameNode(后面重启hadoop集群,无需这一步操作)

cd /opt/module/hadoop-3.1.3
hdfs namenode -format
  • 1
  • 2

在这里插入图片描述

2、启动HDFS服务

cd /opt/module/hadoop-3.1.3
sbin/start-dfs.sh
  • 1
  • 2

在这里插入图片描述

3、访问web页

http://hadoop102:9870
  • 1

在这里插入图片描述

6、103上启动YARN服务

1、启动YARN服务

cd /opt/module/hadoop-3.1.3
sbin/start-yarn.sh
  • 1
  • 2

在这里插入图片描述

2、访问web页

http://hadoop103:8088
  • 1

在这里插入图片描述

7、检查各个集群节点服务

从图中可以看出,和我们设计的集群架构完全匹配
在这里插入图片描述

8、在102上开启YARN的历史任务查询服务

cd /opt/module/hadoop-3.1.3
bin/mapred --daemon start historyserver
  • 1
  • 2

在这里插入图片描述

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

1、整体启动或停止HDFS或YARN服务

102上,启动或停止HDFS服务

cd /opt/module/hadoop-3.1.3
sbin/start-dfs.sh
sbin/stop-dfs.sh
  • 1
  • 2
  • 3

103上,启动或停止YARN服务

cd /opt/module/hadoop-3.1.3
sbin/start-yarn.sh
sbin/stop-yarn.sh
  • 1
  • 2
  • 3

2、各个服务组件独立启动或停止

分别启动或停止HDFS组件

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

分别启动或停止YARN组件

yarn --daemon start/stop resourcemanager/nodemanager
  • 1

3、编写脚本,一键启动或停止器群并检查服务脚本

1、一键启动或停止脚本

cd /home/atguigu/bin/
vim myhadoop
  • 1
  • 2

脚本内容

#!/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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

脚本用法

myhadoop start/stop
  • 1

在这里插入图片描述
2、一键检查服务脚本

cd /home/atguigu/bin/
vim jpsall
  • 1
  • 2

脚本内容

#!/bin/bash

for host in hadoop102 hadoop103 hadoop104
do
		echo =============== $host ===============
		ssh $host jps
done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

脚本用法

jpsall
  • 1

在这里插入图片描述

10、简单测试集群功能

1、命令行上传文件及HDFS web端查看

上传小文件

创建文件

mkdir /opt/module/hadoop-3.1.3/wcinput
cd /opt/module/hadoop-3.1.3/wcinput
vim word.txt
ss ss
cls cls
banzhang
bobo
yangge
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

上传文件

hadoop fs -mkdir /input	创建hdfs目录
hadoop fs -put $HADOOP_HOME/wcinput/word.txt /input	上传文件到input目录
  • 1
  • 2

HDFS WEB页查看
这里的input就是-mkdir创建出来的
在这里插入图片描述
这个word.txt就是-put上传的
在这里插入图片描述
第一个下载、第二个查看文件前32K内容、第三个查看文件末尾的32K内容
在这里插入图片描述


上传大文件

上传文件
上传jar包到hdfs根目录

hadoop fs -put /opt/software/hadoop-3.1.3.tar.gz /
  • 1

HDFS WEB页查看
在这里插入图片描述
在这里插入图片描述

2、HDFS系统中查看上传的文件位置及文件内容

服务器上查看

txt文本文件查看方法
可以直接cat命令查看

cd /opt/module/hadoop-3.1.3/data/dfs/data/current/BP-823420375-192.168.31.102-1714395693863/current/finalized/subdir0/subdir0
  • 1

在这里插入图片描述
jar包文件查看方法

cd /opt/module/hadoop-3.1.3/data/dfs/data/current/BP-823420375-192.168.31.102-1714395693863/current/finalized/subdir0/subdir0

cat blk_1073741826 >> tmp.tar.gz
cat blk_1073741827 >> tmp.tar.gz
cat blk_1073741828 >> tmp.tar.gz

tar -zxvf tmp.tar.gz
ll
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述

3、命令行执行MapReduce任务及YRAN web端查看任务

命令行执行MapReduce任务

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
  • 1

YRAN web页查看任务
在这里插入图片描述

4、YRAN web页面查看历史任务

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

5、YRAN web页查看任务执行的日志

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

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号