环境准备

主机名 IP 系统 HDFS
master 192.168.154.135 CentOS 7 NameNode + DataNode 主节点
slave1 192.168.154.139 CentOS 7 DataNode
slave2 192.168.154.140 CentOS 7 DataNode +SecondaryNamenode

部署过程

一、基础环境配置

在3台服务器上面操作:

1.防火墙关闭

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 systemctl stop firewalld systemctl disable firewalld

2.修改主机名

hostnamectl set-hostname master && bash hostnamectl set-hostname slave1 && bash hostnamectl set-hostname slave2 && bash

3.配置/etc/hosts文件

vi /etc/hosts

#末尾添加:

192.168.154.135 master
192.168.154.139 slave1
192.168.154.140 slave2

在master上面操作:

4.免密登陆认证

1. 使用rsa加密技术,生成公钥和私钥。一路回车即可

cd ~ ssh-keygen -t rsa

2.推送公钥

ssh-copy-id master ssh-copy-id slave1 ssh-copy-id slave2

3. 进行验证

ssh master

软件部署

1.jdk的安装

rpm -qa | grep jdk #如果有,请卸载 rpm -e xxx --nodeps #将查询到的内置jdk代替xxx

2.上传jdk1.8

将jdk-8u221-linux-x64.tar.gz上传到linux环境

3.解压jdk到/usr/local下

tar -zxvf jdk-8u221-linux-x64.tar.gz -C /opt/apps

4.更名java

cd /usr/local mv jdk1.8.0_221/ java

5.配置jdk的环境变量

sed -i '$aJAVA_HOME=/usr/local/java\nCLASSPATH=$JAVA_HOME/lib\nPATH=$PATH:$JAVA_HOME/bin\nexport PATH JAVA_HOME CLASSPATH' /etc/profile

6.更新环境变量

source /etc/profile

7.验证jdk环境

java -version

image.png

三、Hadoop部署

1.上传并解压Hadoop

unzip hadoop-2.7.2.zip

2.配置hadoop的环境变量

vim /etc/profile

#在最后加入以下两行

export HADOOP_HOME=/usr/local/hadoop-2.7.2
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

3.使当前配置生效

source /etc/profile

4.完全分布式的相关文件的配置

1.配置core-site.xml文件

cd /usr/local/hadoop-2.7.2/etc/hadoop vim core-site.xml

<configuration>
<property>
   <name>hadoop.tmp.dir</name>
   <value>/usr/local/hadoop-2.7.2/tmp</value>
  </property>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://master:9000</value>
   </property>
</configuration>
2.配置hdfs-site.xml文件

vim hdfs-site.xml

<configuration>
   <property>
      <name>dfs.replication</name>
      <value>3</value>
   </property>

   <property>
      <name>dfs.name.dir</name>
      <value>file:///usr/local/hadoop-2.7.2/tmp/namenode </value>
   </property>

   <property>
      <name>dfs.data.dir</name>
      <value>file:///usr/local/hadoop-2.7.2/tmp/datanode </value>
   </property>
   <property>
      <name>dfs.secondary.http.address</name>
      <value>slave2:50090</value>
   </property>
</configuration>

3.配置mapred-site.xml文件

vim mapred-site.xml

<configuration>
   <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
   </property>
</configuration>
4.配置hadoop-site.xml文件

vim yarn-site.xml

<configuration>
   <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
   </property>
<property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>master:8089</value>
</property>
<property>
   <name>yarn.resourcemanager.hostname</name>
   <value>master</value>
   <description>YARN集群主节点所在节点</description>
</property>
</configuration>
5.配置hadoop-env.sh脚本文件和yarn-env.sh文件

vim hadoop-env.sh

#修改这2处:

export JAVA_HOME=/usr/local/java
export HADOOP_CONF_DIR=/usr/local/hadoop-2.7.2/etc/hadoop

vim yarn-env.sh

export JAVA_HOME=/usr/local/java
6.配置slaves文件,此文件用于指定datanode守护进程所在的机器节点主机名

vim slaves

master 
slave1 
slave2

5.配置另外两台机器,使用scp

cd /usr/local scp -r ./hadoop-2.7.2 slave1:/usr/local scp -r ./hadoop-2.7.2 slave2:/usr/local

6.同步/etc/profile到slave节点上

scp /etc/profile slave1:/etc/ scp /etc/profile slave2:/etc/

7. slave节点上的同步jdk。

scp -r ./java slave1:/usr/local scp -r ./java slave2:/usr/local

8.检查是否同步了/etc/hosts文件

scp /etc/hosts slave1:/etc/ scp /etc/hosts slave2:/etc/

9.格式化NameNode

1.在master机器上运行命令

hdfs namenode -format

2.格式化的相关信息解读
1. 生成一个集群唯一标识符:clusterid 
2. 生成一个块池唯一标识符:BlockPoolId 
3. 生成namenode进程管理内容(fsimage)的存储路径: 默认配置文件属性hadoop.tmp.dir指定的路径下生成dfs/name目录 
4. 生成镜像文件fsimage,记录分布式文件系统根路径的元数据
5. 其他信息都可以查看一下,比如块的副本数,集群的fsOwner等

10.启动集群相关命令

 1. 启动脚本   
    -- start-dfs.sh         :用于启动hdfs集群的脚本
  -- start-yarn.sh        :用于启动yarn守护进程    
  -- start-all.sh         :用于启动hdfs和yarn

2. 关闭脚本    
  -- stop-dfs.sh          :用于关闭hdfs集群的脚本    
  -- stop-yarn.sh         :用于关闭yarn守护进程    
  -- stop-all.sh          :用于关闭hdfs和yarn 

3. 单个守护进程脚本    
  -- hadoop-daemons.sh   :用于单独启动或关闭hdfs的某一个守护进程的脚本    
  -- hadoop-daemon.sh    :用于单独启动或关闭hdfs的某一个守护进程的脚本          
  -- yarn-daemons.sh  :用于单独启动或关闭hdfs的某一个守护进程的脚本    
  -- yarn-daemon.sh    :用于单独启动或关闭hdfs的某一个守护进程的脚本    

11.jps查看进程

master进程:

微信截图_20210822210354.png

slave1 进程:

微信截图_20210822210639.png

slave2 进程:

微信截图_20210822210721.png