一、集群环境说明
1、用VMware安装3台Centos7虚拟机
2、虚拟机配置:2C,2G内存,50G存储
3、集群架构设计
从表格中,可以看出,Hadoop集群,主要有2个模块服务,一个是HDFS服务,一个是YARN服务
二、搭建集群
1、安装3台Centos7虚拟机
安装教程:VMware安装Centos7详细教程及初始化配置
三台虚拟机固定IP:192.168.31.110、192.168.31.111、192.168.31.112
三台主机的hostname分别为,hadoop-master,hadoop-slave1,hadoop-slave2
因为3条机器相关配置类似,所以我们先在一台机器上操作完,然后将机器克隆2台即可。
克隆第一台机器master
首先从虚拟机快照中创建一个克隆,我们将先在这台机器(hadoop-master)上操作。
以下均在root用户下操作
修改主机名
bash
vim /etc/hostname
hadoop-master
修改hosts文件
bash
vim /etc/hosts
192.168.126.110 hadoop-master
192.168.126.111 hadoop-slave1
192.168.126.112 hadoop-slave2
修改ip地址
bash
vim /etc/sysconfig/network-scripts/ifcfg-ens33
创建账号
创建hadoop账号,并设置密码为hadoop
bash
useradd hadoop
echo hadoop|passwd --stdin hadoop;
配置hadoop账号root权限
bash
visudo
末尾添加
hadoop ALL=(ALL) NOPASSWD:ALL
安装hadoop
hadoop 3.1.3下载地址:Apache Hadoop
创建两个目录并赋予权限,进入software目录,并将hadoop压缩包上传上去
bash
mkdir /opt/module
mkdir /opt/software
chown hadoop:hadoop /opt/module
chown hadoop:hadoop /opt/software
cd /opt/software
切换到hadoop用户,并解压
bash
su hadoop
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
回到root用户,配置环境变量
bash
exit
cd /etc/profile.d/
vim hadoop.sh
#!/bin/bash
#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
检查hadoop
安装是否成
bash
hadoop version
hadoop的4个自定义配置文件及workers配置
切换到hadoop用户,进入到hadoop安装目录
bash
su hadoop
cd /opt/module/hadoop-3.1.3
core-site.xml
bash
vim etc/hadoop/core-site.xml
配置内容
XML
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-master: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>
hdfs-site.xml
bash
vim etc/hadoop/hdfs-site.xml
XML
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop-master:9870</value>
<description>nn web 端访问地址</description>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop-slave2:9868</value>
<description>2 nn web 端访问地址</description>
</property>
</configuration>
mapred-site.xml
bash
vim etc/hadoop/mapred-site.xml
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>hadoop-master:10020</value>
<description>历史服务器端地址</description>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop-master:19888</value>
<description>历史服务器 web 端地址</description>
</property>
</configuration>
yarn-site.xml
bash
vim etc/hadoop/yarn-site.xml
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>hadoop-slave1</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://hadoop-master:19888/jobhistory/logs</value>
</property>
<property>
<description>设置日志保留时间为 7 天, -1 表示不保存日志</description>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
配置workers
bash
vim etc/hadoop/workers
bash
hadoop-master
hadoop-slave1
hadoop-slave2
克隆slave
关闭master,克隆slave1和slave2,并开机
分别修改主机名和ip地址
hadoop-slave1:192.168.126.111
hadoop-slave2:192.168.126.112
bash
vim /etc/hostname
hadoop-slave1
bash
vim /etc/sysconfig/network-scripts/ifcfg-ens33
slave2类同
配置ssh免密
登录master
配置免密登录slave1,slave2
bash
su hadoop
cd 进入当前账号家目录
ssh-keygen 连续三次回车
ssh-copy-id hadoop-master 复制公钥到master服务器
ssh-copy-id hadoop-slave1 复制公钥到slave1服务器
ssh-copy-id hadoop-slave2 复制公钥到slave2服务器
分别登录slave1,slave2执行以上操作
初始化启动
以下在master上执行
bash
cd /opt/module/hadoop-3.1.3
hdfs namenode -format
启动hadoop
启动HDFS服务
bash
cd /opt/module/hadoop-3.1.3
sbin/start-dfs.sh
访问web页:http://192.168.126.110:9870
启动YARN服务
登录slave1
bash
ssh hadoop-slave1
cd /opt/module/hadoop-3.1.3
sbin/start-yarn.sh
访问页面:http://192.168.126.111:8088/
检查各个集群节点服务
bash
jps
集群启动与停止
在master上
bash
cd /opt/module/hadoop-3.1.3
sbin/start-dfs.sh
sbin/stop-dfs.sh
在slave1上
bash
cd /opt/module/hadoop-3.1.3
sbin/start-yarn.sh
sbin/stop-yarn.sh
测试
bash
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
bash
hadoop fs -mkdir /input
hadoop fs -put $HADOOP_HOME/wcinput/word.txt /input
bash
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
部分内容参考连接:https://blog.csdn.net/Brave_heart4pzj/article/details/138314373