大数据学习——Hadoop集群搭建

上转搭建Hadoop本地模式
Hadoop官网集群搭建教程

四.Hadoop集群搭建

1.环境准备
1)再克隆2台虚拟机,加上之前单机模式的机器,共三台机器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2)编写集群分发脚本

期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)

先查看本地的PATH

[hadoop@hadoop101 hadoop-3.1.3]$ echo $PATH

在这里插入图片描述

在/home/hadoop/bin目录下创建xsync文件

[hadoop@hadoop101 ~]$ ll /home/hadoop/
[hadoop@hadoop101 ~]$ mkdir /home/hadoop/bin
[hadoop@hadoop101 hadoop-3.1.3]$ touch /home/hadoop/bin/xsync

在这里插入图片描述

打开此文件

[hadoop@hadoop101 hadoop-3.1.3]$ vim /home/hadoop/bin/xsync

在该文件中编写如下代码

#!/bin/bash
#判断参数列表是否为空
if [ $# -lt -1 ]
then
    echo "参数为空,请重新输入"
fi
#循环遍历集群的所有机器
for host in hadoop102 hadoop103
do
        #循环遍历所有目录
        for file in $@
        do
                #判断文件是否存在
                if [ -e $file ]
                then
                        #获取文件父目录绝对路径
                        pdir=$(cd -P $(dirname $file);pwd)
                        #获取文件名
                        filename=$(basename $file)
                        #免密在集群机器创建相同文件夹
                        ssh $host "mkdir -p $pdir"
                        #相集群机器分发文件
                        rsync -av $pdir/$filename $host:$pdir
                else
                        echo "$file 文件不存在"
                fi
        done
done

在这里插入图片描述

修改脚本 xsync 具有执行权限

[hadoop@hadoop101 hadoop-3.1.3]$ chmod +x /home/hadoop/bin/xsync

在这里插入图片描述
测试脚本

[hadoop@hadoop101 ~]$ xsync /home/hadoop/bin/

在这里插入图片描述
将脚本复制到/bin中,以便全局调用

[hadoop@hadoop101 hadoop-3.1.3]$ sudo cp /home/hadoop/bin/xsync /bin/

2.SSH无密登录配置(以一台机器为例)

1)配置ssh

[hadoop@hadoop101 ~]$ ssh hadoop102
[hadoop@hadoop102 ~]$ exit

在这里插入图片描述

2)免密配置

生成公钥和私钥

[hadoop@hadoop101 ~]$ cd .ssh/
[hadoop@hadoop101 .ssh]$ ssh-keygen -t rsa

在这里插入图片描述

将公钥拷贝到要免密登录的目标机器上

[hadoop@hadoop101 .ssh]$ ssh-copy-id hadoop101
[hadoop@hadoop101 .ssh]$ ssh-copy-id hadoop102
[hadoop@hadoop101 .ssh]$ ssh-copy-id hadoop103

在这里插入图片描述

注意:在hadoop102 和 hadoop103中也要分别执行以上操作
还需要在hadoop101上采用root账号,配置一下无密登录到hadoop101、hadoop102、hadoop103;

3.配置集群

1)规划hadoop集群

NameNode和SecondaryNameNode不要安装在同一台服务器
ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。

hadoop101    namenode           datanode    nodemanager
		
hadoop102    resourcemanager    datanode    nodemanager
		 
hadoop103    secondarynamenode  datanode    nodemanager

2)熟悉hadoop的配置文件

  -- hadoop的默认配置文件

     core-default.xml
     hdfs-default.xml
     mapread-default.xml
     yarn-default.xml
  -- hadoop提供可自定义的配置文件
         core-site.xml
         hdfs-site.xml
         mapread-site.xml
         yarn-site.xml
	 
  -- Hadoop 中加载配置文件的顺序
	当Hadoop集群启动后,先加载默认配置,然后再加载自定义配置文件,自定义的配置信息会覆盖默认配置
3)配置集群的相关信息(修改hadoop自定义的配置文件)
core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。
[hadoop@hadoop101 hadoop-3.1.3]$ cd etc/hadoop/
[hadoop@hadoop101 hadoop]$ ll

查看一下etc/hadoop/的配置文件
在这里插入图片描述

配置core-site.xml(配置hadoop的全局信息)

[hadoop@hadoop101 hadoop]$ vim core-site.xml

在文件中添加以下内容:

<configuration>
    <!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop101:8020</value>
    </property>

    <!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
    </property>

    <!-- 配置HDFS网页登录使用的静态用户为hadoop -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>hadoop</value>
    </property>
</configuration>

在这里插入图片描述

配置hdfs-site.xml

[hadoop@hadoop101 hadoop]$ vim hdfs-site.xml

在文件中添加以下内容:

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

在这里插入图片描述

配置yarn-site.xml

[hadoop@hadoop101 hadoop]$ vim yarn-site.xml

在文件中添加以下内容:

<configuration>

<!-- Site specific YARN configuration properties -->
    <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop102</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>
    <property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>

</configuration>

在这里插入图片描述

配置mapred-site.xml

[hadoop@hadoop101 hadoop]$ vim mapred-site.xml

在文件中添加以下内容:

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

在这里插入图片描述

在集群上分发配置好的Hadoop配置文件

[hadoop@hadoop101 hadoop]$ xsync /opt/module/hadoop-3.1.3/etc/hadoop/

在这里插入图片描述

4.群起集群

1)配置 workers

[hadoop@hadoop101 hadoop-3.1.3]$ vim /opt/module/hadoop3.1.3/etc/hadoop/workers

在文件中添加以下内容:

hadoop101
hadoop102
hadoop103

在这里插入图片描述

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

同步所有节点配置文件

[hadoop@hadoop101 hadoop-3.1.3]$ xsync /opt/module/hadoop-3.1.3/etc

在这里插入图片描述

2)启动集群

(1)如果集群是第一次启动,需要在 hadoop101 节点格式化 NameNode

[hadoop@hadoop101 hadoop]$ hdfs namenode -format

在这里插入图片描述
在这里插入图片描述

注意:格式化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停 止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。

2)启动 HDFS

[hadoop@hadoop101 hadoop-3.1.3]$ sbin/start-dfs.sh
[hadoop@hadoop101 hadoop-3.1.3]$ ll

在这里插入图片描述

3)在配置了 ResourceManager 的节点(hadoop103)启动 YARN

[atguigu@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh
[hadoop@hadoop102 hadoop-3.1.3]$ jps

在这里插入图片描述

4)Web 端查看 HDFS 的 NameNode

(a)浏览器中输入:http://hadoop102:9870
(b)查看 HDFS 上存储的数据信息
(5)Web 端查看 YARN 的 ResourceManager
(a)浏览器中输入:http://hadoop103:8088
(b)查看 YARN 上运行的 Job 信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5)集群基本测试

执行 wordcount 程序

[hadoop@hadoop103 hadoop-3.1.3]$ hadoop fs -mkdir /input
[hadoop@hadoop103 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.配置历史服务器
为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:

1)配置 mapred-site.xml

[hadoop@hadoop101 hadoop-3.1.3]$ vim etc/hadoop/mapred-site.xml

在文件中添加以下内容:

<configuration>
<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop101:10020</value>
</property>  
            
<!-- 历史服务器web端地址 -->
<property>  
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop101:19888</value>
</property>  
</configuration>

在这里插入图片描述

2)分发配置

[hadoop@hadoop101 hadoop-3.1.3]$ xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml

在这里插入图片描述

3)在 hadoop101 启动历史服务器

[hadoop@hadoop101 hadoop-3.1.3]$ mapred --daemon start historyserver

在这里插入图片描述

5)查看 JobHistory

http://hadoop102:19888/jobhistory
在这里插入图片描述
在这里插入图片描述

6.配置日志的聚集

1)配置 yarn-site.xml

[hadoop@hadoop101 hadoop-3.1.3]$ vim etc/hadoop/yarn-site.xml

在文件中添加以下内容:

<configuration>

<!-- Site specific YARN configuration properties -->
 
<!-- 设置日志聚集服务器地址 -->
<property>  
    <name>yarn.log.server.url</name>  
    <value>http://hadoop101:19888/jobhistory/logs</value>
</property> 
<!-- 设置日志保留时间为7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>
</configuration>

在这里插入图片描述

2)分发配置

[hadoop@hadoop101 hadoop-3.1.3]$ xsync $HADOOP_HOME/etc/hadoop/yarn-site.xml

在这里插入图片描述

3)关闭 NodeManager 、ResourceManager 和 HistoryServer

[hadoop@hadoop102 hadoop-3.1.3]$ sbin/stop-yarn.sh 
[hadoop@hadoop101 hadoop-3.1.3]$ mapred --daemon stop historyserver

在这里插入图片描述
在这里插入图片描述

4)启动 NodeManager 、ResourceManage 和 HistoryServer

[hadoop@hadoop102 hadoop-3.1.3]$ sbin/start-yarn.sh 
[hadoop@hadoop101 hadoop-3.1.3]$ mapred --daemon start historyserver

在这里插入图片描述
在这里插入图片描述

5)删除 HDFS 上已经存在的输出文件

[hadoop@hadoop101 hadoop-3.1.3]$ hadoop fs -rm -r /output

在这里插入图片描述

6)执行 WordCount 程序

[hadoop@hadoop101 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output

在这里插入图片描述

7)查看日志
(1)历史服务器地址
http://hadoop102:19888/jobhistory
(2)历史任务列表
(3)查看任务运行日志
(4)运行日志详情
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.Hadoop 集群常用脚本

1)Hadoop 集群启停脚本(包含 HDFS,Yarn,Historyserver):myhadoop.sh

[hadoop@hadoop101 hadoop-3.1.3]$ vim /home/hadoop/bin/myhadoop.sh

在文件中添加以下内容:

#!/bin/bash
#判断参数列表是否为空
if [ $# -lt -1 ]
then
    echo "参数列表为空,请重新输入"
    exit;
fi

#输入判断
case $1 in
#输入为start时
"start")
        echo "=======================启动hadoop集群======================="
        echo "=========================启动hdfs========================="
        ssh hadoop101 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
        echo "=========================启动yarn========================="
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
        echo "=======================启动历史日志服务======================="
        ssh hadoop101 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
#输入为stop时
"stop")

        echo "=======================关闭历史日志服务======================="
        ssh hadoop101 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
        echo "=========================关闭yarn========================="
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
        echo "=========================关闭hdfs========================="
        ssh hadoop101 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
#输入为其他时
*)
        echo "输入有误,请检查"
;;
esac

在这里插入图片描述

保存后退出,然后赋予脚本执行权限

[hadoop@hadoop101 hadoop-3.1.3]$ chmod 744 /home/hadoop/bin/myhadoop.sh

测试脚本

[hadoop@hadoop101 hadoop-3.1.3]$ myhadoop.sh stop
[hadoop@hadoop101 hadoop-3.1.3]$ myhadoop.sh start
[hadoop@hadoop101 hadoop-3.1.3]$ jps

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2)查看三台服务器Java进程脚本:jpsall

[hadoop@hadoop101 hadoop-3.1.3]$ vim /home/hadoop/bin/jpsall

在这里插入图片描述

在文件中添加以下内容:

#!/bin/bash
for host in hadoop101 hadoop102 hadoop103
do
    echo ================$host===============
    ssh $host jps
done

在这里插入图片描述

赋予脚本执行权限

[hadoop@hadoop101 hadoop-3.1.3]$ chmod 744 /home/hadoop/bin/jpsall

分发/home/atguigu/bin目录,保证自定义脚本在三台机器上都可以使用

[hadoop@hadoop101 hadoop-3.1.3]$ xsync /home/hadoop/bin/

在这里插入图片描述

测试脚本

[hadoop@hadoop101 hadoop-3.1.3]$ jpsall

在这里插入图片描述

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

十三幺Shisanyao

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

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

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

打赏作者

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

抵扣说明:

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

余额充值