一、集群环境说明
1、用
VMware
安装
3
台
Centos7.9
虚拟机
2、虚拟机配置:
2C,2G内存,50G存储
3、集群架构设计
从表格中,可以看出,
Hadoop
集群,主要有
2
个模块服务,一个是
HDFS
服务,一个是
YARN
服务
二、搭建集群
1、安装3台Centos7.9虚拟机
安装教程:VMware安装Centos7详细教程及初始化配置
1.1、修改三台主机名
三台虚拟机固定
IP
:
192.168.31.102、192.168.31.103、192.168.31.104
三台主机的
hostname
分别修改为,
hadoop102,hadoop103,hadoop104
vim /etc/hostname
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.3、三台机器创建账号
创建
atguigu
账号,并设置密码为
123456
useradd atguigu
echo123456|passwd--stdin atguigu;
配置
atguigu
账号
root
权限
visudo
末尾添加
atguigu ALL=(ALL) NOPASSWD:ALL
1.4、三台机器间配置atguigu账号免密登陆
用
102
配置到
103
免密登陆为例
cd 进入当前账号家目录
ssh-keygen 连续三次回车
ssh-copy-id 192.168.31.103 复制公钥到hadoop103服务器,这样,102的atguigu就可以免密登陆hadoop103服务器
参考:服务器间配置免密登陆
1.5、同步集群时间(针对内网环境的集群,公网集群可以跳过)
找一个机器,作为时间服务器,所有的机器与这台机器的时间进行定时的同步
1.5.1、root账号配置102机器的ntp服务
1、查看
ntp
服务,并设置开机自启动
systemctl status ntpd
systemctl start ntpd
systemctl enable ntpd
如果命令报
Unit ntpd.service could not be found
,则需要安装
ntp
服务
rpm-q ntp 查看服务是否安装
yum install ntp 安装服务
2、修改
ntp.conf
文件
vim /etc/ntp.conf
server 127.127.1.0
fudge 127.127.1.0 stratum 10
restrict
后面的
IP
,写你们自己的
IP
,我的是
192.168.31.0
网段的
当该节点丢失网络连接,依然可以采 本地时间作为时间服务器,为集群中的其他节点提供时间同步
3、修改
/etc/sysconfig/ntpd
文件
作用:让硬件时间和系统时间一起同步,这样更精确
vim /etc/sysconfig/ntpd
SYNC_HWCLOCK=yes
4、重启
ntp
服务
systemctl status ntpd
systemctl stop ntpd
systemctl start ntpd
systemctl enable ntpd
检查配置
systemctl status ntpd
systemctl is-enabled ntpd
1.5.2、root账号配置103及104机器,同步102的时间
1、关闭ntp服务
systemctl stop ntpd
systemctl disable ntpd
2、创建定时任务,定时同步102时间
crontab-e
*/1 * * * * /usr/sbin/ntpdate hadoop102
3、测试同步功能
修改时间
date-s"2021-9-11 11:11:11"
1分钟后,查看时间
date
2、三台虚拟机都安装JDK,并配置环境变量
2.1、卸载系统自带的OpenJDK
2.1.1、查看
openJDK
[root@CFDB2 ~]$ rpm -qa|grepjava
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
2.1.2、卸载
openJDK
rpm-qa|grep-ijava|xargs n1 rpm-e--nodeps
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#exportJAVA_HOME=/usr/local/jdks/jdk1.8.0_211
exportCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
--------------------------
source /etc/profile #执行该命令java-version#查看java是否安装成功
3、三台虚拟机都安装Hadoop3,并配置环境变量
1、准备
Hadoop3
安装包
2、三台机器上准备两个目录
3、将
hadoop3
安装包上传到
software
目录下
4、解压并配置环境变量
解压安装
tar-zxvf hadoop-3.1.3.tar.gz -C /opt/module/
配置环境变量
进入目录
cd /etc/profile.d/
创建文件,并添加如下内容
vim hadoop.sh
#HADOOP_HOMEexportHADOOP_HOME=/opt/module/hadoop-3.1.3
exportPATH=$PATH:$HADOOP_HOME/bin
exportPATH=$PATH:$HADOOP_HOME/sbin
重新加载环境变量,这样新配置的hadoop环境变量才会生效
source /etc/profile
检查
hadoop
安装是否成
hadoop version
4、hadoop的4个自定义配置文件及workers配置
1、准备一个同步文件的脚本
参考:服务器同步文件脚本
这样,在
102
上配置好后,用该脚本同步到另外两台机器上即可。
2、core-site.xml
vim /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml
完整配置内容如下
<?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>
3、hdfs-site.xml
vim /opt/module/hadoop-3.1.3/etc/hadoop/hdfs-site.xml
完整配置内容如下
<?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>
4、mapred-site.xml
vim /opt/module/hadoop-3.1.3/etc/hadoop/mapred-site.xml
完整配置内容如下
<?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>
5、yarn-site.xml
vim /opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml
完整配置内容如下
<?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>
6、配置workers
vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
完整配置内容如下
hadoop102
hadoop103
hadoop104
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
5、102上启动HDFS服务
1、第一次启动的准备工作
需要在
hadoop102
上格式化
NameNode
(后面重启hadoop集群,无需这一步操作)
cd /opt/module/hadoop-3.1.3
hdfs namenode -format
2、启动HDFS服务
cd /opt/module/hadoop-3.1.3
sbin/start-dfs.sh
3、访问web页
http://hadoop102:9870
6、103上启动YARN服务
1、启动YARN服务
cd /opt/module/hadoop-3.1.3
sbin/start-yarn.sh
2、访问web页
http://hadoop103:8088
7、检查各个集群节点服务
从图中可以看出,和我们设计的集群架构完全匹配
8、在102上开启YARN的历史任务查询服务
cd /opt/module/hadoop-3.1.3
bin/mapred --daemon start historyserver
9、集群启动与停止方式总结
1、整体启动或停止HDFS或YARN服务
102
上,启动或停止
HDFS
服务
cd /opt/module/hadoop-3.1.3
sbin/start-dfs.sh
sbin/stop-dfs.sh
103
上,启动或停止
YARN
服务
cd /opt/module/hadoop-3.1.3
sbin/start-yarn.sh
sbin/stop-yarn.sh
2、各个服务组件独立启动或停止
分别启动或停止
HDFS
组件
hdfs --daemon start/stop namenode/datanode/secondarynamenode
分别启动或停止
YARN
组件
yarn--daemon start/stop resourcemanager/nodemanager
3、编写脚本,一键启动或停止器群并检查服务脚本
1、一键启动或停止脚本
cd /home/atguigu/bin/
vim myhadoop
脚本内容
#!/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
脚本用法
myhadoop start/stop
2、一键检查服务脚本
cd /home/atguigu/bin/
vim jpsall
脚本内容
#!/bin/bashforhostin hadoop102 hadoop103 hadoop104
doecho===============$host===============ssh$host jps
done
脚本用法
jpsall
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
上传文件
hadoop fs -mkdir /input 创建hdfs目录
hadoop fs -put$HADOOP_HOME/wcinput/word.txt /input 上传文件到input目录
HDFS WEB页查看
这里的
input
就是
-mkdir
创建出来的
这个
word.txt
就是
-put
上传的
第一个下载、第二个查看文件前32K内容、第三个查看文件末尾的32K内容
上传大文件
上传文件
上传
jar
包到
hdfs
根目录
hadoop fs -put /opt/software/hadoop-3.1.3.tar.gz /
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
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
3、命令行执行MapReduce任务及YRAN web端查看任务
命令行执行
MapReduce
任务
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
YRAN web
页查看任务
4、YRAN web页面查看历史任务
5、YRAN web页查看任务执行的日志
版权归原作者 生产队队长 所有, 如有侵权,请联系我们删除。