ApacheHadoop 分布式集群搭建(二)集群配置与运行测试

Hadoop 集群配置

安装Hadoop

1. 安装 Hadoop

  • 版本信息
    安装Hadoop版本信息为 Apache Hadoop 原始版本,版本号为:2.9.2

    链接:https://pan.baidu.com/s/1mSYVBWEQsZRX-npBOA2cXw
    提取码: ceck

  • 上传文件
    文件上传到主机1( linux121)中,路径信息为: /opt/lagou/software/
    修改文件权限:

    chmod 755 hadoop-2.9.2.tar.gz
    修改完成后文件如下图所示:

  • 安装 Hadoop
    进行解压,并设置解压路径为 :
    tar -zxvf hadoop-2.9.2.tar.gz -C /opt/lagou/servers
    查看是否解压成功
    ll /opt/lagou/servers/hadoop-2.9.2

  • 修改目录用户和用户组

    Hadoop安装目录所属用户和所属用户组信息,默认是501 dialout,而我们操作Hadoop集群的用户使
    用的是虚拟机的root用户,为了避免出现信息错乱,修改Hadoop安装目录所属用户和用户组

    chown -R root:root /opt/lagou/servers/hadoop-2.9.2

    修改后的结果参照上图

  • Hadoop 目录说明

2. 添加环境变量

  • 添加环境变量

    vim /etc/profile

  • 添加内容:

    # HADOOP_HOME
    export HADOOP_HOME=/opt/lagou/servers/hadoop-2.9.2 # Hadoop安装目录
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin
    
    
  • 刷新,使环境变量生效

    source /etc/profile

  • 验证

    hadoop version

集群规划

框架主机1 (linux121)主机2 (linux122)主机3 (linux123)
HDFSNameNode、DataNodeDataNodeSecondaryNameNode、DataNode
YarnNodeManagerNodeManagerNodeManager、ResourceManager

需要配置的内容
Hadoop集群配置 = HDFS集群配置 + MapReduce配置 + Yarn配置

  1. HDFS 集群配置
    1. 将 JDK 路径明确配置给 HDFS,修改文件为: hadoop-env.sh
    2. 指定 namenode 节点以及数据存储目录,修改文件为: core-site.xml
    3. 指定 secondarynamenode 节点,修改文件为:hdfs-site.xml
    4. 指定 datanode 从节点,每个节点配置信息占一行,修改文件为:etc/hadoop/slaves
  2. MapReduce 集群配置
    1. 将 jdk 路径明确配置给 MapReduce,修改文件为:**mapred-env.sh **
    2. 指定 MapReduce 计算框架运行 Yarn 资源调度框架,修改文件为:mapred-site.xml
  3. Yarn 集群配置
    1. 将JDK路径明确配置给Yarn,修改文件为:yarn-env.sh
    2. 指定 ResourceManager 老大节点所在计算机节点,修改文件为:yarn-site.xml
    3. 指定 NodeManager 节点,通过 slaves 文件内容确定
  4. 配置历史服务器
    1. 设置历史服务器节点,修改文件为: mapred-site.xml
    2. 配置日志聚集,修改文件为:**yarn-site.xml **
  • 涉及到的文件及目录(部分)

配置集群

1. HDFS 集群配置

切换目录为: cd /opt/lagou/servers/hadoop-2.9.2/etc/hadoop

  • 修改 hadoop-env.sh 文件,将jdk明确配置给 HDFS

    vim hadoop-env.sh
    
    # 修改或者添加的内容为
    export JAVA_HOME=/opt/lagou/servers/jdk1.8.0_231
    

  • 指定 namenode 节点以及数据存储目录

    vim core-site.xml
    
    # 要添加的内容为: 
    <!-- 指定HDFS中NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://linux121:9000</value>
    </property>
    <!-- 指定Hadoop运行时产生文件的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/lagou/servers/hadoop-2.9.2/data/tmp</value>
    </property>
    

  • 指定secondarynamenode节点

    vim hdfs-site.xml
    
    # 要添加的内容
    <!-- 指定Hadoop辅助名称节点主机配置 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>linux123:50090</value>
    </property>
    <!--副本数量 -->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    
    

  • 指定datanode从节点

    vim slaves
    
    # 添加的内容为
    linux121
    linux122
    linux123
    

    !!! 该文件中添加的内容结尾不允许有空格,文件中不允许有空行

2. MapReduce集群配置

  • 指定MapReduce使用的jdk路径

    vim mapred-env.sh
    
    # 要添加或者修改的内容
    export JAVA_HOME=/opt/lagou/servers/jdk1.8.0_231
    

    在这里插入图片描述

  • 指定MapReduce计算框架运行Yarn资源调度框架

    # 修改文件名,去掉 template 后缀
    mv mapred-site.xml.template mapred-site.xml
    vim mapred-site.xml
    
    # 添加的内容
    <!-- 指定MR运行在Yarn上 -->
    <property>
    	<name>mapreduce.framework.name</name>
    	<value>yarn</value>
    </property>
    
    

3. Yarn集群配置

  • 指定JDK路径

    vim yarn-env.sh
    
    # 添加的内容
    export JAVA_HOME=/opt/lagou/servers/jdk1.8.0_231
    
    

  • 指定ResourceMnager的master节点信息

    vim yarn-site.xml
    
    # 添加的内容
    <!-- 指定YARN的ResourceManager的地址 -->
    <property>
    	<name>yarn.resourcemanager.hostname</name>
    	<value>linux123</value>
    </property>
    <!-- Reducer获取数据的方式 -->
    <property>
    	<name>yarn.nodemanager.aux-services</name>
    	<value>mapreduce_shuffle</value>
    </property>
    
    

  • 指定 nodemanager 节点

    配置 HDFS 时已经设置过,无需再修改。要设置的文件为: slaves

4. 配置历史服务器

  • 设置历史服务器节点

    vim mapred-site.xml
    
    # 添加的内容
    <!-- 历史服务器端地址 -->
    <property>
    	<name>mapreduce.jobhistory.address</name>
    	<value>linux121:10020</value>
    </property>
    <!-- 历史服务器web端地址 -->
    <property>
    	<name>mapreduce.jobhistory.webapp.address</name>
    	<value>linux121:19888</value>
    </property>
    

  • 配置日志聚集

    vim yarn-site.xml
    
    # 添加的内容
    <!-- 日志聚集功能使能 -->
    <property>
    	<name>yarn.log-aggregation-enable</name>
    	<value>true</value>
    </property>
    <!-- 日志保留时间设置7天 (按需求进行设置)-->
    <property>
    	<name>yarn.log-aggregation.retain-seconds</name>
     	<value>604800</value>
    </property>
    <property>
     	<name>yarn.log.server.url</name>
     	<value>http://linux121:19888/jobhistory/logs</value>
    </property>
    

第一台主机的全部配置已完成,剩余主机的配置一样的设置。接下来使用 rsync 进行文件分发,将Hadoop 内容分发给剩余主机。

分发配置

rsync 工具

  • rsync 远程同步工具

    rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

    • 基本语法

      # 基本语法
      rsync -rvl $pdir/$fname $user@$host:$pdir/$fname
      # 说明 命令	选项参数	要拷贝文件路径/名称	目的用户名@主机地址:目的路径/名称
      
    • 选项参数说明

      选项功能
      -r递归
      -v显示复制过程
      -l拷贝符号连接
  • 安装 rsync

    yum install -y rsync

  • 编写分发脚本

    在 /usr/lcoal/bin 目录下创建文件: rsync-script,并修改文件权限

    cd /usr/lcoal/bin
    touch rsync-script
    chmod 777 rsync-script
    

    创建好的文件如下图所示:

    添加内容:

    vim rsync-script
    
    # 添加的脚本内容
    #!/bin/bash
    #1 获取命令输入参数的个数,如果个数为0,直接退出命令
    paramnum=$#
    if((paramnum==0)); then
    echo no params;
    exit;
    fi
    #2 根据传入参数获取文件名称
    p1=$1
    file_name=`basename $p1`
    echo fname=$file_name
    #3 获取输入参数的绝对路径
    pdir=`cd -P $(dirname $p1); pwd`
    echo pdir=$pdir
    #4 获取用户名称
    user=`whoami`
    #5 循环执行rsync
    for((host=121; host<124; host++)); do
    echo ------------------- linux$host --------------
    rsync -rvl $pdir/$file_name $user@linux$host:$pdir
    done
    
  • 测试脚本功能

    # 将该脚本分发到其它两台主机上
    rsync-script rsync-script
    

  • 切换主机查看文件是否拷贝完成

分发配置

  • 调用脚本分发Hadoop安装目录到其它节点

    rsync-script /opt/lagou/servers/hadoop-2.9.2

  • 分发完成后进行按照 环境配置 分别为其余主机添加Hadoop环境变量

  • 分发完成后进行验证

集群启动

  • 非第一次不可以执行格式化

  • 第一次启动前在 namenode 节点进行格式化 namenode

    格式化命令 hadoop namenode -format

    格式化后创建的文件目录: cd /opt/lagou/servers/hadoop-2.9.2/data/tmp/dfs/name/current

单节点启动

  1. 在主机1上启动 namenode

    启动并查看进程

     # 启动
     hadoop-daemon.sh start datanode
     # 查看
     jps
    

  2. 三台主机上分别启动 datanode

    # 启动datanode
    hadoop-daemon.sh start datanode
    # 查看当前进程
    jps
    

  3. web端查看 hdfs 界面

    url : http://linux121:50070/dfshealth.html#tab-overview

    图中圈出来的是集群正常节点

  4. 启动 yarn

    • 启动 resourcemanager
      # 启动yarn 需要在yarn节点上执行命令
      yarn-daemon.sh start resourcemanager
      # 查看当前进程
      jps
      

    • 启动 nodemanager

      # 分别在三台主机上执行
      yarn-daemon.sh start nodemanager
      # 查看 
      jps
      

      查看三台主机中是否启动了 nodemanager

至此,完成单节点启动的方式全部完成。接下来尝试群起的方式

群启

关闭相关进程
  • 如果已经单节点方式启动了Hadoop,可以先停止之前的启动的Namenode与Datanode进程,

  • 如果之前Namenode没有执行格式化,这里需要执行格式化!!!

  • 关闭命令

    # 关闭 resourcemanager
     yarn-daemon.sh stop resourcemanager
    # 关闭 nodemanager
     yarn-daemon.sh stop nodemanager
    # 关闭 datanode
    hadoop-daemon.sh stop datanode
    # 关闭 namenode
    hadoop-daemon.sh stop namenode
    

    全部关闭后查看进程,发现只有 jps 一个进程

群启启动
  • 启动 hdfs

    在主机1中执行命令 :start-dfs.sh

    可以看到在三台主机的 datanode 都已经启动

  • 启动 yarn

    NameNode和ResourceManger不是在同一台机器,不能在NameNode上启动 YARN,应该在ResouceManager所在的机器上启动YARN

    在主机3中执行命令:start-yarn.sh

    可以看到三台主机中的 nodemanager 已经启动

  • 在三台主机中分别查看进程进行验证

Hadoop启动、停止命令汇总

单个服务组件逐一启动、停止
  • HDFS 命令

    hadoop-daemon.sh start / stop namenode / datanode / secondarynamenode

  • Yarn 命令

    yarn-daemon.sh start / stop resourcemanager / nodemanager

各个模块分开启动【群启】、停止
  • HDFS 命令

    start-dfs.sh / stop-dfs.sh

  • Yarn 命令

    start-yarn.sh / stop-yarn.sh

集群测试

体验 HDFS 存储

# 从 hdfs 上创建存储目录
hdfs dfs -mkdir -p /test/input

# 创建测试用的目录,存放测试文件
mkdir -p /usr/mkdir/testDirs
# 创建文件,并添加内容 hello Hadoop hdfs
vim hello.txt
# 上传Linux文件到hdfs中
hdfs dfs -put /usr/mkdir/testDirs/hello.txt /test/input

通过web查看存储的文件

删除本地文件,从hdfs下载文件到本地

# 删除文件
 rm -f hello.txt
# 下载文件 
hdfs dfs -get /test/input/hello.txt

体验 mapreduce 计算

  • 在 hdfs 中创建一个 wcinput 目录文件 hdfs dfs -mkdir /wcinput

  • 在本地目中创建文件 wc.txt,并添加内容

    vim wc.txt 
    
    # 添加内容
    hadoop mapreduce yarn
    hdfs hadoop mapreduce
    mapreduce yarn lagou
    lagou
    lagou
    
  • 上传 wc.txt 文件到 hdfs /input目录中 hdfs dfs -put wc.txt /wcinput

  • 切换目录到 Hadoop 官方案例目录

    cd /opt/lagou/servers/hadoop-2.9.2/share/hadoop/mapreduce/

    执行命令 hadoop jar hadoop-mapreduce-examples-2.9.2.jar wordcount /wcinput /wcoutput

查看结果 hdfs dfs -cat /wcoutput/part-r-00000

查看日志

URL http://linux121:19888/jobhistory

如果不能进入,查看一下 ucloud 外网防火墙,添加对应的端口信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

地三千

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值