栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

【Hadoop】完全分布式运行模式搭建流程

【Hadoop】完全分布式运行模式搭建流程

文章目录
    • 一、流程分析
    • 二、虚拟机准备
    • 三、拷贝 JDK、Hadoop 目录:scp 命令
    • 四、分发环境变量配置:编写集群分发脚本 xsync
    • 五、SSH 免密登录
    • 六、集群配置
    • 七、群起测试

一、流程分析

(1)配置一台客户机,如主机名为 hadoop102(关闭防火墙,配置IP),创建目录 /opt/software、/opt/module,并修改这两个目录的属主和属组都为当前用户,如用户 zlc;

(2)再拷贝出两台客户机,如主机名为 hadoop103,hadoop104;

(3)只在 hadoop102 客户机上:安装 JDK、Hadoop,安装包路径为 /opt/software,解压路径为 /opt/module,并配置二者的环境变量;

(4)将 hadoop102 上的 JDK、Hadoop 目录及配置拷贝到另外两台客户机 hadoop103、hadoop104 上

(5)配置集群

(6)单点启动

(7)配置 ssh

(8)群起并测试集群

二、虚拟机准备

1、配置一台客户机,如主机名为 hadoop102(关闭防火墙,配置IP),创建目录 /opt/software、/opt/module

2、再拷贝出两台客户机,如主机名为 hadoop103,hadoop104;

3、只在 hadoop102 客户机上:安装 JDK、Hadoop,安装包路径为 /opt/software,解压路径为 /opt/module,并配置二者的环境变量;

三、拷贝 JDK、Hadoop 目录:scp 命令

1、因为在 hadoop102 上,已经安装好了 JDK、Hadoop,因此,hadoop103、hadoop104 不必再安装一遍了,可以直接使用 scp 命令,将 hadoop102 上的 JDK、Hadoop 目录及配置拷贝到另外两台客户机上。


2、需要用到 scp 安全拷贝命令,该命令可以实现服务器与服务器之间的数据拷贝,基本语法:scp -r 要拷贝的文件路径/名称 目的地用户@主机:目的路径/名称,例如

# 拷贝 hadoop102 的 jdk 到 hadoop103
scp -r /opt/module/jdk1.8.0_212 zlc@hadoop103:/opt/module
# 拷贝 hadoop102 的 hadoop 到 hadoop103
scp -r hadoop-3.1.3/ zlc@hadoop103:/opt/module/

(注:scp 不仅支持从源机器到目的机器的推送式拷贝,也支持从目的机器到源机器的拉取式拷贝,即可以在hadoop102中,将文件拷贝给hadoop103,也可以在hadoop103上拉取hadoop102的文件。另外,也可以在 hadoop103上,将hadoop102的文件拷贝到 hadoop104)

3、下图为在 hadoop102 中,将 JDK 拷贝给 hadoop103:

同理在 hadoop102 中,将 Hadoop 拷贝给 hadoop103。

4、在 hadoop103上,将hadoop102的文件拷贝到 hadoop104:

扩展补充

远程同步工具:rsync 命令

rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。

语法:rsync -av 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称

例如:

# 删除hadoop103中/opt/module/hadoop-3.1.3/wcinput
rm -rf wcinput/

# 同步hadoop102中的/opt/module/hadoop-3.1.3到hadoop103
rsync -av hadoop-3.1.3/ zlc@hadoop103:/opt/module/hadoop-3.1.3/
四、分发环境变量配置:编写集群分发脚本 xsync

1、编写 xsync 脚本:用于集群分发脚本,循环复制文件到所有节点的相同目录下,

期望脚本在任何路径都能使用,因此脚本要放在声明了全局环境变量的路径下:

因此,可在 /home/zlc/bin 路径下创建脚本 xsync

内容如下(学习自尚硅谷的 Hadoop 教程):

#!/bin/bash

#1. 判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi

#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
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

但目前并没有可执行权限,可使用命令:chmod 777 xsync,赋予其 execute 权限


2、利用 xsync 脚本 将 /home/zlc/bin 下的 xsync 脚本,也就是它自己,同步到另外的两台客户机上(hadoop103、hadoop104)

hadoop103 上:

hadoop104 上:

3、将自定义的环境变量配置文件同步到另外两台客户机的相同目录下(此处需要用管理员权限才能进行配置文件目录的写入):

4、在另外两台客户机上(即hadoop103、hadoop104)进行配置文件目录的更新,并进行检验:

五、SSH 免密登录

1、先用 hadoop102 ssh 访问 hadoop 103

这样,在 hadoop102 的 ~ 目录下就会有一个 .ssh 隐藏目录,

同样,在 hadoop103 的 ~ 目录下也会有一个 .ssh 隐藏目录,

2、进入 hadoop102 的 .ssh 目录下,执行

ssh-keygen -t rsa

生成 hadoop102 客户机的公钥和私钥


3、将 hadoop102 的公钥发给 hadoop103 、 hadoop104(也可配置自己免密访问自己)



被免密连接的一方将会生成 authorized_keys 认证文件,因此此处是配置 hadoop102 免密访问自己,因此,也是在本机下生成 authorized_keys 认证文件

4、同理,我们在 hadoop103、hadoop104 上也重复上述配置

5、进行分发测试,在 hadoop102 客户机上分发文件到 hadoop103、hadoop104

六、集群配置

1、集群配置规划:NameNode 和 SecondaryNameNode 不要安装在同一台服务器
ResourceManager 也很消耗内存,不要和 NameNode、SecondaryNameNode 配置在同一台机器上。例如,我的集群配置规划为:

2、配置文件说明:Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。

  • 默认配置文件:

  • 自定义配置文件:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。

3、配置集群:

核心配置文件 core-site.xml

各文件自定义内容如下:

核心配置文件 core-site.xml





    
    
        fs.defaultFS
        hdfs://hadoop102:8020
    

    
    
        hadoop.tmp.dir
        /opt/module/hadoop-3.1.3/data
    

    
    
        hadoop.http.staticuser.user
        atguigu
    

HDFS 配置文件 hdfs-site.xml





	
	
        dfs.namenode.http-address
        hadoop102:9870
    
	
    
        dfs.namenode.secondary.http-address
        hadoop104:9868
    

YARN 配置文件 yarn-site.xml





    
    
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    

    
    
        yarn.resourcemanager.hostname
        hadoop103
    

    
    
        yarn.nodemanager.env-whitelist
        JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
    

MapReduce配置文件 mapred-site.xml





	
    
        mapreduce.framework.name
        yarn
    

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


5、去 hadoop103 和 hadoop104 上查看文件分发情况:

七、群起测试

1、配置 workers (注意,不要有多余的空格或空行)

2、分发此文件到集群的所有结点

3、启动集群:

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

初始化完成后,会在 hadoop 目录下生成 data、logs 目录

(2)启动 HDFS

在 hadoop102 中:

在 hadoop103 中:

在 hadoop104 中:

对比一下上面的集群配置规划表,HDFS 一行是正确的:

也可以在网页图形化界面中进行 hadoop 可视化管理:

http://hadoop102:9870


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

在 hadoop102 中:

在 hadoop103 中:

在 hadoop104 中:

对比一下上面的集群配置规划表,两行都是正确的:

也可以在网页图形化界面中进行 YARN 可视化管理:

http://hadoop103:8088

4、集群基本测试

(1)创建目录

在 hadoop104 中创建目录

在 hadoop102 中的 hdfs 的图形化管理页面查看

(2)上传客户机的本地文件到 hdfs 中


可在可视化页面中看到


(3)上传客户机的本地大文件到 hdfs 中

(4)查看 HDFS 文件存储路径

上传文件后查看文件存放在什么位置

(5)查看 HDFS 文件的备份情况

在 hadoop102 中:

在 hadoop103 中:

在 hadoop104 中:

(6)下载 HDFS 文件:例如 JDK

方法一:可直接在物理文件中读出来

解压 JDK 压缩包


方法二:也可以利用命令 hadoop fs -get 源 目的

(7)执行程序

执行 mapreduce 的一个用于计数单词的例子(注意最后两个参数表示的源路径与目的路径,是基于 hdfs 中的路径

任务在执行过程中,可以在 yarn 的图形化页面中看到:

上述命令的执行图解:


已将统计的结果输出到了 wcoutput 目录的数据文件中

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/300760.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号