Hadoop集群搭建


准备三台虚拟机(hadoop01, hadoop02, hadoop03),虚拟机配置要求,单台虚拟机:内存4G,硬盘50G。要求三台机器可以免密登陆
三台机器的规划

hadoop01 hadoop02 hadoop03
HDFS NameNode、DataNode DataNode SecondaryNameNode、DataNode
YARN NodeManager ResourceManager、NodeManager NodeManager

所有虚拟机操作

  1. 安装必要环境

    sudo yum install -y epel-release
    sudo yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl-static tree iotop git
  2. 修改主机名称

    sudo hostnamectl --static set-hostname hadoop01
  3. 关闭防火墙

    sudo systemctl stop firewalld
    sudo systemctl disable firewalld
  4. 创建用户

    sudo useradd fangxi
    sudo passwd fangxi
  5. 重启

    reboot
  6. 配置fangxi用户具有root权限

    vi sudo
    # 修改/etc/sudoers文件,找到下面一行(91行),在root下面添加一行,如下所示
    ## Allow root to run any commands anywhere
    root    ALL=(ALL)     ALL
    fangxi   ALL=(ALL)     ALL
  7. 创建操作文件夹,我在 /opt下创建的

    sudo mkdir module
    sudo mkdir software
  8. 修改module、software文件夹的所有者cd

    sudo chown fangxi:fangxi /opt/module /opt/software

至此单台虚拟机完成,可以创建快照克隆了。

操作hadoop02机器

  1. 安装jdk
    下载地址:https://story-has-you.oss-cn-shanghai.aliyuncs.com/jdk-8u212-linux-x64.tar.gz

    tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
    # 环境变量
    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.d/my_env.sh
  2. 安装hadoop
    下载地址: https://story-has-you.oss-cn-shanghai.aliyuncs.com/hadoop-3.1.3.tar.gz

    tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module
    # 环境变量
    sudo vim /etc/profile.d/my_env.sh
    ##HADOOP_HOME
    export HADOOP_HOME=/opt/module/hadoop-3.1.3
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin
    
    source /etc/profile.d/my_env.sh
  3. 配置免密登录,三台机器都执行

    ssh-keygen -t rsa
    
    ssh-copy-id 10.211.55.39
    ssh-copy-id 10.211.55.40
    ssh-copy-id 10.211.55.41
  4. 创建一个同步的脚本,以便以后在集群间共享文件
    vim xsync

    #!/bin/bash
    #1. 判断参数个数
    if [ $# -lt 1 ]
    then
      echo Not Enough Arguement!
      exit;
    fi
    #2. 遍历集群所有机器
    for host in 10.211.55.39 10.211.55.40 10.211.55.41
    do
      echo ====================  $host  ====================
      #3. 遍历所有目录,挨个发送
      for file in $@
      do
        #4 判断文件是否存在
        if [ -e $file ]
        then
          #5. 获取父目录
          pdir=$(cd -P $(dirname $file); pwd)
          #6. 获取当前文件的名称
          fname=$(basename $file)
          ssh $host "mkdir -p $pdir"
          rsync -av $pdir/$fname $host:$pdir
        else
          echo $file does not exists!
        fi
      done
    done
# 修改脚本 xsync 具有执行权限
chmod +x xsync
# 将脚本移动到/bin中,以便全局调用
sudo mv xsync /bin/
# 测试
xsync /bin/xsync
  1. 在集群之前拷贝jdk和hadoop

    xsync jdk1.8.0_212/
    xsync hadoop-3.1.3/
  2. 拷贝之后,需要在其他机器上执行

    source /etc/profile.d/my_env.sh

至此,三台机器已经全部操作完毕

操作Hadoop01机器配置

配置hadoop,进入 /opt/module/hadoop-3.1.3/etc/hadoop

  1. 配置 core-site.xml

    <!-- HDFS地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://10.211.55.40:8020</value>
    </property>
    <property>
        <name>hadoop.data.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
    </property>
    <property>
        <name>hadoop.proxyuser.fangxi.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.fangxi.groups</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>fangxi</value>
    </property>
  2. 配置hdfs-site.xml

    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file://${hadoop.data.dir}/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file://${hadoop.data.dir}/data</value>
    </property>
        <property>
        <name>dfs.namenode.checkpoint.dir</name>
        <value>file://${hadoop.data.dir}/namesecondary</value>
    </property>
        <property>
        <name>dfs.client.datanode-restart.timeout</name>
        <value>30</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>10.211.55.41:9868</value>
    </property>
  3. 配置yarn-site.xml

    <property>
           <name>yarn.nodemanager.aux-services</name>
           <value>mapreduce_shuffle</value>
       </property>
       <property>
           <name>yarn.resourcemanager.hostname</name>
           <value>10.211.55.41</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>
  4. 配置mapred-site.xml

    <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
    </property>
  5. 配置workers,workers配置所有的从机

    10.211.55.39
    10.211.55.40
    10.211.55.41
  6. 同步到其他机器

    xsync hadoop/

启动集群

在hadoop01上执行

  1. 先格式化namenode

    hdfs namenode -format
  2. 启动集群

    start-dfs.sh

在hadoop03上执行, ResourceManager机器上
3. 启动YARN

start-yarn.sh

为了查看程序的历史运行情况,需要配置一下历史服务器(放在hadoop02)。具体配置步骤如下

  1. 配置mapred-site.xml
    <!-- 历史服务器端地址 地址可以任意指定 -->
        <property>
            <name>mapreduce.jobhistory.address</name>
            <value>10.211.55.40:10020</value>
        </property>
        <!-- 历史服务器web端地址 -->
        <property>
            <name>mapreduce.jobhistory.webapp.address</name>
            <value>10.211.55.40:19888</value>
        </property>

配置日志的聚集,放在hadoop02

  1. 配置yarn-site.xml
    <property>
           <name>yarn.log-aggregation-enable</name>
           <value>true</value>
       </property>
       <property>
           <name>yarn.log.server.url</name>
           <value>http://10.211.55.40:19888/jobhistory/logs</value>
       </property>
       <property>
           <name>yarn.log-aggregation.retain-seconds</name>
           <value>604800</value>
       </property>

最后全部分发配置

xsync hadoop/

在hadoop02上启动历史服务器

mapred --daemon start historyserver

启动成功之后,访问:http://10.211.55.40:9870/dfshealth.html#tab-overview,访问:http://10.211.55.41:8088/cluster


Author: Re:0
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source Re:0 !
 Previous
HDFS HDFS
HDFS产出背景及定义随着数据量的越来越大,在一个操作系统存不下所有的数据,那么就分配更多的操作系统管理的磁盘中,但是不大方便维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件系统的。HDFS只是分布式文件系统中的一种。
2022-09-06
Next 
大数据以及Hadoop介绍 大数据以及Hadoop介绍
大数据概述大数据(Big Data):指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长和多样化的信息资产。主要解决:海量数据的存储和海量数据的分
2022-09-06
  TOC