大数据之开源Hadoop HDFS集群环境详细部署

概述

大数据分析比较耗硬件资源,同时软件资源也比较庞大,本文是小编第一次触及大数据环境,适合初学者学习。

资源规划

名称IP主机名备注
master192.168.0.200master主节点
slave-1192.168.0.201slave-1子节点

1、物理机服务器

2、CentOS 7

3、Hadoop 2.9.2

4、JDK8或以上

5、关闭防火墙Firewalld

大数据分析之Hadoop集群环境完整搭建(图1)

一、下载Hadoop,JDK

1、官网下载:https://hadoop.apache.org/releases.html

2、JDK渠道:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html

二、解压缩

1、上传至/opt目录

[root@localhost opt]# rz
总用量 499400
-r--------. 1 root root 366447449 6月  23 10:08 hadoop-2.9.2.tar.gz
-rw-r--r--. 1 root root 144935989 6月  23 10:05 jdk-8u291-linux-x64.tar.gz

2、分别解压缩源码至指定路径下

[root@localhost opt]# tar xf jdk-8u291-linux-x64.tar.gz -C /usr/local/

[root@localhost opt]# tar xf hadoop-2.9.2.tar.gz -C /usr/local/big/

三、配置

1、配置JDK运行环境

[root@localhost opt]# vim /etc/profile
## shift+G尾部添加如下
export JAVA_HOME=/usr/local/jdk1.8.0_291
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin

export HADOOP_HOME=/usr/local/big/hadoop-2.9.2
export PATH=$PATH:$HADOOP_HOME/sbin/:$HADOOP_HOME/bin/:$HIVE_HOME/bin

export HIVE_HOME=/usr/local/big/apache-hive-2.3.9
export HIVE_CONF_DIR=/usr/local/big/apache-hive-2.3.9/conf
[root@localhost opt]# source /etc/profile

2、配置Hadoop相关文档,主要有主机名、IP映射、集群角色分配、SSH免密认证、hadoop-2.9.2/etc/hadoop下启动文档修改

2.1、规范集群主机名,分别操作master、slave(node)节点

## master节点操作
[root@localhost opt]# hostnamectl set-hostname master
## slave节点操作
[root@localhost opt]# hostnamectl set-hostname slave-1

2.2、集群主机间互联互通,IP映射

[root@master opt]# vim /etc/hosts
192.168.0.200   master
192.168.0.201   slave-1

[root@slave-1 opt]# vim /etc/hosts
192.168.0.200   master
192.168.0.201   slave-1

2.3、服务器间SSH免密通信,所有节点均执行如下操作

[root@master opt]# ssh-keygen -t rsa
[root@slave-1 opt]# ssh-keygen -t rsa

大数据分析之Hadoop集群环境完整搭建(图1)

生成authorized_keys文件(只在master节点执行),并发送至各slave(node)节点

[root@master opt]# ssh-copy-id -i /root/.ssh/id_rsa.pub master

[root@master opt]# scp /root/.ssh/authorized_keys root@slave-1:/root/.ssh/

##注意此文件权限务必是644
[root@slave-1 ~]# chomod 644 /root/.ssh/authorized_keys

大数据分析之Hadoop集群环境完整搭建(图2)

master上测试免密登录

[root@master opt]# ssh slave-1
Last login: Wed Jun 23 15:06:53 2021 from 192.168.0.118
大数据分析之Hadoop集群环境完整搭建(图3)

2.4、配置Hadoop环境变量

hadoop系统变量路径在安装目录为/usr/local/big/hadoop-2.9.2的etc/hadoop/下,分别编辑如下

  • 修改 hadoop-env.sh
[root@master hadoop]# hadoop-env.sh
# export JAVA_HOME=${JAVA_HOME} (注释掉)
export JAVA_HOME=/usr/local/jdk1.8.0_291/ (添加上)

# export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/etc/hadoop"} (注释)
export HADOOP_CONF_DIR=/usr/local/big/hadoop-2.9.2/etc/hadoop (添加上)
[root@master opt]# source hadoop-env.sh
  • 修改 core-site.xml
[root@master hadoop]# vim core-site.xml
##在<configuration>*</configuration>添加

    <property>
      <name>fs.defaultFS</name>
      <value>hdfs://master:9000</value>
      <description>HDFS 的 URI,文件系统://namenode标识:端口</description>
    </property>

    <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/hadoopData</value>
      <description>namenode 上传到 hadoop 的临时文件夹</description>
    </property>

    <property>
        <name>fs.trash.interval</name>
        <value>4320</value>
    </property>
  • 修改 hdfs-site.xml
[root@master hadoop]# vim hdfs-site.xml
##在<configuration>*</configuration>添加
    <property>
       <name>dfs.namenode.name.dir</name>
       <value>/home/hadoopData/dfs/name</value>
       <description>datanode 上存储 hdfs 名字空间元数据</description>
     </property>

     <property>
       <name>dfs.datanode.data.dir</name>
       <value>/home/hadoopData/dfs/data</value>
       <description>datanode 上数据块的物理存储位置</description>
     </property>

     <property>
       <name>dfs.replication</name>
       <value>2</value>
       <description>副本个数,默认配置是 3,应小于 datanode 机器数量</description>
     </property>

     <property>
       <name>dfs.webhdfs.enabled</name>
       <value>true</value>
     </property>

     <property>
       <name>dfs.permissions.superusergroup</name>
       <value>staff</value>
     </property>

     <property>
       <name>dfs.permissions.enabled</name>
       <value>false</value>
     </property>

     <property>
       <name>dfs.http.address</name>
       <value>master:50070</value>
     </property>

     <property>
       <name>dfs.namenode.secondary.http-address</name>
       <value>slave-1:50090</value>
     </property>
  • 修改 yarn-site.xml
[root@master hadoop]# vim yarn-site.xml
##在<configuration>*</configuration>添加
<!-- Site specific YARN configuration properties -->
        <!-- 用于存储本地化文件的目录列表 -->
        <!-- 创建目录 mkdir -p /usr/local/big/hadoop-2.9.2/list -->
        <property>
            <name>yarn.nodemanager.local-dirs</name>
            <value>/usr/local/big/hadoop-2.9.2/list</value>
        </property>

        <!-- reducer 获取数据的方式 -->
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>

        <!-- 指定 yarn 的 resourcemanager 的地址 -->
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>master</value>
        </property>

        <!-- 忽略虚拟内存的检查 虚拟机上设置有很大用处 -->
        <property>
            <name>yarn.nodemanager.vmem-check-enabled</name>
            <value>false</value>
            <description>Whether virtual memory limits will be enforced for containers</description>
        </property>

        <!-- yarn 分配的内存大小 -->
        <property>
            <name>yarn.nodemanager.resource.memory-mb</name>
            <value>3276</value>
        </property>

        <!-- 每台机器最大分配内存,超过 报异常 -->
         <property>
            <name>yarn.scheduler.maximum-allocation-mb</name>
            <value>3276</value>
        </property>

        <!-- yarn 分配的 CPU 个数 -->
         <property>
            <name>yarn.nodemanager.resource.cpu-vcores</name>
            <value>2</value>
        </property>

        <!-- 每台机器最大分配CPU个数,超过 报异常 -->
         <property>
            <name>yarn.scheduler.maximum-allocation-vcores</name>
            <value>2</value>
        </property>
  • 修改 mapred-site.xml
[root@master hadoop]# vim mapred-site.xml
## 在<configuration>*</configuration>添加
        <!-- mapreduce 运行时的框架,可以是 local, classic or yarn  -->
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>

        <!-- mapreduce 历史任务的地址端口  -->
        <property>
            <name>mapreduce.jobhistory.address</name>
            <value>master:10020</value>
        </property>

        <!-- MapReduce JobHistory 服务器 Web UI 主机:端口 -->
        <property>
            <name>mapreduce.jobhistory.webapp.address</name>
            <value>master:19888</value>
        </property>
  • 修改 slaves
[root@master hadoop]# vim slaves
删除默认 localhost

添加集群主机名
master
slave-1
  • 创建临时文件存储路径
[root@master hadoop]# mkdir -p /home/hadoopData

2.5、将hadoop源码分发至slave(node)节点

[root@master hadoop]# scp /usr/local/big/hadoop-2.9.2/ root@slave-1:/usr/local/big/

##此步骤如手动以配置无需执行
[root@master hadoop]# scp /etc/profile root@slave-1:/etc/

四、初始hadoop集群,并启动

1、master节点

[root@master hadoop]# hdfs namenode -format

[root@master hadoop]# ../../sbin/start-all.sh

2、slave(node)节点

##node节点如遇到resourcemanager服务未启动,执行如下启动即可
[root@slave-1 hadoop]# ./yarn-daemon.sh start resourcemanager

五、校验

1、master节点校验

[root@master hadoop]# jps

8000 Jps
17720 DataNode
18190 NodeManager
17535 NameNode
18063 ResourceManager
大数据分析之Hadoop集群环境完整搭建(图4)

2、slave(node)节点校验

[root@slave-1 opt]# jps

5169 SecondaryNameNode
11137 Jps
5762 ResourceManager
5052 DataNode
5261 NodeManager
大数据分析之Hadoop集群环境完整搭建(图5)

3、Hadoop前端预览

http://192.168.0.200:50070/、http://192.168.0.200:8088/

大数据分析之Hadoop集群环境完整搭建(图6)
大数据分析之Hadoop集群环境完整搭建(图7)

六、Hadoop集群部署常见问题bug汇总

1、如若配置secondaryNamenode到其他node节点

方法:修改master主节点hdfs-site.xml文件如下配置

     <property>
       <name>dfs.http.address</name>
       <value>master:50070</value>
     </property>

     <property>
       <name>dfs.namenode.secondary.http-address</name>
       <value>slave-1:50090</value>
     </property>
大数据分析之Hadoop集群环境完整搭建(图8)

2、持续 更新...


大数据之开源Hadoop HDFS集群环境详细部署
https://cn.10691.cn//archives/10004
作者
Ley
发布于
2021年06月08日
许可协议