目录

  • 一:资源要求与准备
  • 二:安装JDK
  • 三:安装Hadoop
  • 下载
  • 集群规划
  • 安装
  • 集群配置
  • 配置core-site.xml文件
  • 配置hdfs-site.xml
  • 配置yarn-site.xml
  • 配置mapred-site.xml
  • 配置workers(旧版本是slaves)
  • 分发配置
  • 启动集群
  • 首次启动初始化NameNode
  • 启动HDFS
  • 启动Yarn
  • 查看每个节点状态
  • 上传文件测试集群
  • 总结


一:资源要求与准备

  1. Centos7 机器3台:单机至少2g内存
  2. 配置机器之间免密登录

参考链接:服务器之间ssh免密登录配置

  • 必须确保三台服务器两两之间能ssh免密登录
  • 验证:进入服务器后执行ssh命令登录三台服务器
  • 我这里将三台服务器的hostname分别设置为hadoop102、hadoop103、hadoop104并且配置了hosts文件
#免密登录验证
ssh hadoop102
ssh hadoop103
ssh hadoop104

二:安装JDK

  1. 新建文件目录
sudo mkdir -p /opt/module

注意:当前用户如果不是root用户,必须将module文件夹所属的组、主权限修改为当前操作集群的用户和用户组

  1. 解压文件
    jdk下载链接:https://pan.baidu.com/s/1XwKheQa9WI3k3XgS-uu8lg 密码:n3da
tar -zxvf jdk-8u212-linux-x64.tar.gz
  1. 配置环境变量

新建环境文件

sudo vim /etc/profile.d/my_env.sh

添加以下内容

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

使环境变量生效

source /etc/profile

或者重启shell窗口

  1. 验证
java -version

如果看到以下内容,则安装jdk成功

java version "1.8.0_212"

三:安装Hadoop

下载

集群规划

组件

机器hadoop102

机器hadoop103

机器hadoop104

HDFS

NameNode

DataNode

DataNode

SecondaryNameNode

DataNode

YARN

NodeManager

NodeManager

ResourceManager

NodeManager

安装

先在Hadoop102机器安装,配置完成后再分发其他机器

  1. 登录hadoop102机器,上传、解压安装文件到/opt/module下面
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
  1. 查看是否解压成功
ls /opt/module/
  1. 配置环境变量
  • 打开前面配置的环境变量文件
[lizzy@hadoop102 ~]$ sudo vim /etc/profile.d/my_env.sh
  • 加上Hadoop环境变量
#jdk环境变量配置
JAVA_HOME=/opt/module/jdk1.8.0_212
#hadoop环境变量配置
HADOOP_HOME=/opt/module/hadoop-3.1.3
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export PATH JAVA_HOME HADOOP_HOME
  • 重启shell窗口或者执行
source /etc/profile

集群配置

配置core-site.xml文件

cd $HADOOP_HOME/etc/hadoop
vim core-site.xml

配置文件内容如下

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:9820</value>
</property>
<!-- 指定hadoop数据的存储目录  
      
      官方配置文件中的配置项是hadoop.tmp.dir ,用来指定hadoop数据的存储目录,此次配置用的hadoop.data.dir是自己定义的变量, 因为在hdfs-site.xml中会使用此配置的值来具体指定namenode 和 datanode存储数据的目录

-->
    <property>
        <name>hadoop.data.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
</property>


</configuration>

配置hdfs-site.xml

cd $HADOOP_HOME/etc/hadoop
vim hdfs-site.xml

配置文件内容如下

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
 <!-- 指定NameNode数据的存储目录 -->
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file://${hadoop.data.dir}/name</value>
  </property>
 <!-- 指定Datanode数据的存储目录 -->

  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file://${hadoop.data.dir}/data</value>
  </property>
    
   <!-- 指定SecondaryNameNode数据的存储目录 -->

    <property>
    <name>dfs.namenode.checkpoint.dir</name>
    <value>file://${hadoop.data.dir}/namesecondary</value>
  </property>
   

  <!-- nn web端访问地址-->
<property>
  <name>dfs.namenode.http-address</name>
  <value>hadoop102:9870</value>
</property>
  <!-- 2nn web端访问地址-->
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop104:9868</value>
  </property>
</configuration>

配置yarn-site.xml

cd $HADOOP_HOME/etc/hadoop
vim yarn-site.xml

配置文件内容如下

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
     <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
</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>
    </property>
</configuration>

配置mapred-site.xml

cd $HADOOP_HOME/etc/hadoop
vim mapred-site.xml

配置文件内容如下

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
 <!—指定MapReduce程序运行在Yarn上 -->
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

配置workers(旧版本是slaves)

vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

在该文件增加如下内容
就是你的集群机器hostname,注意不要有空格和空行

hadoop102
hadoop103
hadoop104

分发配置

lizzy是我的用户名,这里根据自己实际是使用root还是其他用户来代替,如果不是root注意权限问题

  • 分发安装目录到机器hadoop103
sudo rsync -r  /opt/module/hadoop-3.1.3  lizzy:hadoop103:/opt/module/
  • 分发安装目录到机器hadoop104
sudo rsync -r  /opt/module/hadoop-3.1.3  lizzy:hadoop104:/opt/module/
  • 进入hadoop103、hadoop104 检查是否分发成功
ssh hadoop103 ls /opt/module
ssh hadoop104 ls /opt/module

启动集群

首次启动初始化NameNode

我们的NameNode配置在hadoop102节点,ssh hadoop102 进入102节点

hdfs namenode -format

没有任何报错,中途没有询问输入任何的yes / no就是成功

启动HDFS

在hadoop102机器启动

start-dfs.sh

启动Yarn

按照我们的集群规划,yarn部署在hadoop103,ssh hadoop103 到103节点启动

start-yarn.sh

查看每个节点状态

命令可以查看启动的进程,在每个节点执行jps查看进程启动状态,看下启动的服务是否符合规划

ssh hadoop102 jps
ssh hadoop103 jps
ssh hadoop104 jps

组件

机器hadoop102

机器hadoop103

机器hadoop104

HDFS

NameNode

DataNode

DataNode

SecondaryNameNode

DataNode

YARN

NodeManager

NodeManager

ResourceManager

NodeManager

上传文件测试集群

hadoop分布式集群系统的搭建笔记 hadoop集群完全分布式搭建_大数据


执行命令上传LICENSE.txt文件

hdfs dfs -put /opt/module/hadoop-3.1.3/LICENSE.txt /

打开namenode的web页面查看,文件上传集群成功:

hadoop分布式集群系统的搭建笔记 hadoop集群完全分布式搭建_hadoop分布式集群系统的搭建笔记_02

总结

这里面很多操作可以优化,比如:

  1. rsync分发避免重复操作可以写成分发脚本,集群启动也可以写成启动脚本
  2. 可以启动更多服务,配置日志服务器,配置日志聚集上传
  3. 具体上传、下载、创建文件夹等基本命令操作
  4. 中间操作如果不能成功,可以查看hadoop下的日志文件,一般是权限问题居多
  5. hadoop2.x和hadoop3.x端口不完全一样,这个需要注意,本文是hadoop-3.1.3