本文已参与「新人创作礼」活动,一起开启掘金创作之路。
什么是Hadoop集群?
Hadoop集群由HDFS集群和YARN集群组成,Hadoop集群逻辑上分离,物理上在一起,而是都是标准的主从架构集群
- HDFS集群
编辑
- YARN集群
编辑
一个Hadoop集群
将所有机器看作是一个整体。
编辑
- 逻辑上分离:HDFS和YARN逻辑上没有依赖,处理数据都是分开进行的,不是启动了一方才能启动另一方
- 物理上在一起:NN,DN和RM,NM虽然不是同一个集群的进程,但是在一台机器上
- MapReduce是计算框架,代码层面的组件,没有集群之说
安装Hadoop
采用集群模式安装部署也叫分布式模式安装,在实际中Hadoop软件要运行在多台机器中。
Step1:下载Hadoop安装包
Step2:集群角色规划
编辑
Step3:服务器基础环境准备
关闭防火墙
在内网当中,如果把防火墙打开,好多端口都被屏蔽了,那分布式软件之间通信的时候就通信不上。 stop是当前关闭,disable是永久关闭,避免开机时重启防火墙
status检查防火墙状态
命令:
systemctl stop firewalld.service 当前关闭防火墙
systemctl disable firewalld.service 禁止防火墙开启时自动启动
systemctl status firewalld.service 查看当前防火墙的状态
ssh免密登录
正常情况下从一台机器访问另一台机器需要密码,涉及集群启动时,可以直接免密操作,在这里已经设置好了,ssh node1/ssh node2/ssh node3 直接进行登录
集群时间同步
yum -y install ntpdate
ntpdate ntp4.aliyun.com
统一工作目录
在/export/server/下安装软件
在/export/data/下存储数据
在/export/software/下放安装包
Step4:上传安装包,解压安装包
安装JDK
- 上传JDK压缩包:yum install lrzsz -y,然后再通过命令rz,即可选中要上传的文件
- 解压JDK压缩包:tar -zxvf jdk-8u241-linux-x64.tar.gz
- 配置环境变量:
编辑
- 重新加载环境变量
source /etc/profile
- 将JDK和配置环境变量的文件传给node2和node3:
scp -r /export/server/jdk1.8.0_241 root@node2:/export/server/
scp -r /export/server/jdk1.8.0_241 root@node3:/export/server/
scp /etc/profile root@node2:/etc
scp /etc/profile root@node3:/etc
- 检查是否有JDK:Java -version
上传Hadoop的安装包
- 通过rz命令选中安装包
- 通过tar命令解压:tar -zxvf 压缩包名
- 通过scp命令传给node2和node3
scp -r /export/server/hadoop-3.3.0 root@node2:/export/server/
scp -r /export/server/hadoop-3.3.0 root@node3:/export/server/
Hadoop的目录
编辑
修改配置文件
修改hadoop-3.3.0/etc/hadoop/hadoop-env.sh
编辑
修改hadoop-3.3.0/etc/hadoop/core-site.xml 核心配置模块文件
<configuration> <!-- 设置默认使用的文件系统 Hadoop 支持 file 、 HDFS 、 GFS 、 ali|Amazon 云等文件系统 --> <property> <name>fs.defaultFS</name> <value>hdfs://node1:8020</value> </property> <!-- 设置 Hadoop 本地保存数据路径 --> <property> <name>hadoop.tmp.dir</name> <value>/export/data/hadoop-3.3.0</value> </property> <!-- 设置 HDFS web UI 用户身份 --> <property> <name>hadoop.http.staticuser.user</name> <value>root</value> </property> <!-- 整合 hive 用户代理设置 --> <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> <!-- 垃圾桶文件保存时间 --> <property> <name>fs.trash.interval</name> <value>1440</value> </property> </configuration>
修改hdfs-site.xml文件
<configuration> <!-- 设置 SNN 进程运行机器位置信息 --> <property> <name>dfs.namenode.secondary.http-address</name> <value>node2:9868</value> </property> </configuration>
修改mapred-site.xml文件
<configuration> <!-- 设置 MR 程序默认运行模式: yarn 集群模式 local 本地模式 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!-- MR 程序历史服务器端地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>node1:10020</value> </property> <!-- 历史服务器 web 端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>node1:19888</value> </property> <property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property> <property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property> <property> <name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property> </configuration>
修改yarn-site.xml文件
<configuration> <!-- 设置 YARN 集群主角色运行机器位置 --> <property> <name>yarn.resourcemanager.hostname</name> <value>node1</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 是否将对容器实施物理内存限制 --> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <!-- 是否将对容器实施虚拟内存限制。 --> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> <!-- 开启日志聚集 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 设置 yarn 历史服务器地址 --> <property> <name>yarn.log.server.url</name> <value>http://node1:19888/jobhistory/logs</value> </property> <!-- 保存的时间 7 天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> </configuration>
修改workers文件
192.168.88.151 192.168.88.152 192.168.88.153
分发同步Hadoop的安装包
编辑
将Hadoop添加到环境变量
编辑
格式化操作
在首次启动HDFS时,必须进行格式化操作,仅在第一次启动时,初始化工作,进行HDFS清理和准备工作,通过命令hdfs namenode -format来操作,如果多次format除了造成数据丢失,还会导致hdfs集群主从角色之间互不认识,通过删除所有机器的hadoop.tmp.dir目录重新format解决
启动Hadoop集群
手动逐个进程启停
每台机器上,每次手动启动或关闭一个角色进程,可以精准控制每个程序,避免群起群停
编辑
编辑
shell脚本一键启停
前提:配置好机器之间的免密登录和workers文件
编辑
检测是否启动正常
使用jps命令(用来查看Java进程)
编辑
访问HDFS集群的页面
192.168.88.151:9870
编辑
访问YARN集群的页面
192.168.88.151:8088
编辑
HDFS初体验
创建一个文件夹
hadoop fs -mkdir /itcast
编辑
上传文件
echo 1 > 1.txt hadoop fs -put 1.txt /
编辑
MapReduce+YARN初体验
编辑
编辑
\