Hadoop分布式搭建

一、平台准备

安装VMware虚拟机平台

Vmware workstation 16

一路next即完成

网络配置:

  1. VM虚拟网络编辑:
    点击更改设置,设置子网IP:192.168.88.0
    设置连接模式:NAT模式
  2. 在主机的网络连接设置中更改VMnet8网络适配器属性:
    ip地址使用192.168.88.1
    DNS修改为192.168.88.2
安装 Linux 操作系统 CentOS7.x 64

根据正常安装步骤安装,几个注意的步骤:

  1. 尽量选择英文
  2. 要开启网卡服务

这里准备三台Linux用于搭建集群,分别命名为node1,node2,node3

node1内存:4g 处理器内核4

node2内存:2g 处理器内核2

node3内存:2g 处理器内核2

二、Linux部署Hadoop

服务器基础环境配置
  1. 网络配置
    安装三台虚拟机,主服务器node1,从服务器node2,node3
    配置ip:192.168.88.151,192.168.88.152,192.168.88.153,
    设置hosts映射,在主机hosts文件写入:
    192.168.88.151 node1.icu
    192.168.88.152 node2.icu
    192.168.88.153 node3.icu
    使用ping node1.icu 测试是否成功组建局域网
    同时在服务器中使用ping 测试是否能够联网
  2. 防火墙关闭
    关闭防火墙是为了某些端口的使用不被屏蔽
firewall-cmd --state	#查看防火墙状态
systemctl stop firewalld.service  #停止firewalld服务
systemctl disable firewalld.service  #开机禁用firewalld服务
  1. 设置时间同步(保证集群的同步)
ntpdate ntp5.aliyun.com
  1. 设置ssh免密登录
#node1生成公钥私钥 (一路回车)
	ssh-keygen  
#node1配置免密登录到node1 node2 node3
	ssh-copy-id node1
	ssh-copy-id node2
	ssh-copy-id node3
  1. 统一工作目录
mkdir -p /export/server #软件安装的路径
mkdir -p /export/data #数据存放路径
mkdir -p /export/software #安装包存放路径
运行环境配置

在/export/server下安装

JDK安装配置

使用finalShell 连接这三台虚拟机,使用finalShell 可以对多端服务器同时发送命令进行安装

  1. 在 /export/server 安装JDK
tar zxvf jdk-8u241-linux-x64.tar.gz #解压
rm rf jdk-8u241-linux-x64.tar.gz #删除安装包
  1. 配置环境变量
vim /etc/profile #修改配置文件
# 配置java变量和路径
export JAVA_HOME=/export/server/jdk1.8.0_241
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 重启资源生效
source /etc/profile
# 查看版本
java -version
  1. 远程主机分发同步
#把jdk从当前路径复制到 node3主机下的同目录
scp -r /export/server/jdk1.8.0_241/ root@node3:/export/server/

同时也要相应编辑 /etc/profile 或 进行远程同步

Hadoop安装部署
  1. Hadoop安装

上传hadoop安装包到 /export/server

tar zxvf hadoop-3.3.0.tar.gz
rm -rf hadoop-3.3.0.tar.gz
  1. 集群角色规划
    采用分布式部署,需要划分角色

节点

HDFS主节点

HDFS从节点

HDFS辅助节点

YARN主节点

YARN从节点

node1

NameNode

DataNode

ResourceManager

NodeManager

node2

DataNode

SecondaryNameNode

NodeManager

node3

DataNode

NodeManager

HDFS

  • NameNode:集群的管理,存储元数据(描述数据的数据)信息 一个
  • DataNode:存储真实数据的节点 多个
  • SecondaryNameNode:辅助主节点 一个

YARN

集群负责海量数据运算时的资源调度,集群中的角色主要有: CPU ,内存,磁盘,网络带宽

  • ResourceManager:主节点 分配资源
  • NodeManager:从节点 执行任务
  1. 核心配置
#文件路径 /export/server/hadoop-3.9.0/etc/hadoop/

hadoopl-env.sh

#文件最后添加
export JAVA_HOME=/export/server/jdk1.8.0_241

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

core-site.xml

<!-- 设置默认使用的文件系统 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>

hdfs-site.xml

<!-- 设置SNN进程运行机器位置信息 -->
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>node2:9868</value>
</property>

mapred-site.xml

<!-- 设置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>
 
<!-- MR程序历史服务器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>

yarn-site.xml

<!-- 设置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>

wokers(配置工作的主机域名)

node1.icu
node2.icu
node3.icu

以上是对一台主机的配置,接下来使用远程分发同步命令快速实现对其他主机的部署

cd /export/server

scp -r hadoop-3.3.0 root@node2:$PWD
scp -r hadoop-3.3.0 root@node3:$PWD

配置Hadoop的环境变量

vim /etc/profile

export HADOOP_HOME=/export/server/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile


#使用scp同步给其他两台机器哦
scp /etc/profile node2:/etc/profile
scp /etc/profile node3:/etc/profile

查看是否完成的基本安装:

#查看已安装的Hadoop信息
hadoop

Hadoop集群初始化namenode:

**注意:**Hadoop集群初始化namenode只能执行该命令一次,如果报错,请检查错误原因重试上述设置再次执行,如果多次执行会造成程序无响应,最终失败。

初始化:

hdfs namenode -format

如下信息代表成功:

四台物理服务器如何实现虚拟化vsan 三台服务器虚拟化_linux


初始化成功之后可以正常使用Hadoop了

脚本启停命令:

#HDFS
start-dfs.sh
stop-dfs.sh
#YARN
start-yarn.sh
stop-yarn.sh
#Hadoop集群
start-all.sh
stop-all.sh

启动之后,可以在主机上使用 jps 命令查看已经启动的进程有哪些

四台物理服务器如何实现虚拟化vsan 三台服务器虚拟化_hadoop_02

查看HDFS和YARN图形化界面UI

HDFS:http://namenode_host:9870 (namenode_host是namenode运行所在的主机名或者ip)

其中:主机名访问需要在windows中配置hosts 添加主机名

四台物理服务器如何实现虚拟化vsan 三台服务器虚拟化_分布式_03

四台物理服务器如何实现虚拟化vsan 三台服务器虚拟化_hadoop_04


YARN:http://namenode_host:8088

四台物理服务器如何实现虚拟化vsan 三台服务器虚拟化_四台物理服务器如何实现虚拟化vsan_05


四台物理服务器如何实现虚拟化vsan 三台服务器虚拟化_linux_06

至此,Hadoop分布式的搭建就已经完成了