Hadoop-集群搭建

91 阅读3分钟

​​本文已参与「新人创作礼」活动,一起开启掘金创作之路。

什么是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初体验

​编辑

​编辑

\