超详解Hadoop安装及集群分发脚本工具(ssh无密登录设置),每步都附有图解

一、安装Hadoop

Hadoop可以到官网去下载,官网下载地址https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz

1、将hadoop安装tar包使用Xftp上传到服务器

在这里插入图片描述

2、解压到module中
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/

查看是否已经解压到了module目录中

ll /opt/module

在这里插入图片描述

3、将Hadoop目录添加到环境变量中

注意,与JDK不同的是,JDK添加环境变量只是到bin目录,而Hadoop的环境变量还要添加一个sbin

编辑/etc/profile.d/my_env.sh

vim /etc/profile.d/my_env.sh
export HADOOP_HOME=/opt/module/hadoop-3.1.3 
export PATH=$PATH:$HADOOP_HOME/bin 
export PATH=$PATH:$HADOOP_HOME/sbin

在这里插入图片描述

然后将环境变量生效

source /etc/profile
4、测试是否成功安装

在终端中输入命令

hadoop version

在这里插入图片描述

或者在终端中输入hadoop,会出现相应的命令

hadoop

在这里插入图片描述

二、Hadoop的目录介绍

可以进入hadoop查看一下其相应的目录都有什么
在这里插入图片描述

相应的目录介绍

目录说明
bin存放对Hadoop相关服务操作的脚本,hdfs,yarn,mr
etcHadoop的配置文件目录
lib存放Hadoop的本地库
share存放启动或停止Hadoop相关服务脚本
sbin存放启动或者停止Hadoop的脚本
运行的小案例-WordCount

对于大数据统计的WordCount案例,就相当于每门语言的HelloWorld案例一样。

Hadoop的lib目录下存放着一下本地方法库,就是许多jar包,其中有一个hadoop-mapreduce-examples-3.1.3.jar包就是Hadoop提供的小案例单词统计包

首先建立一个输入文件word.txt

hello world
hello lnnu
hello gis
hello hadoop

在这里插入图片描述

运行命令

hadoop  jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount word.txt wcoutput 

注意:输出文件wcoutput是不能存在的
在这里插入图片描述

查看输出的文件夹都有什么

ll wcoutput

在这里插入图片描述

part-r-00000:就是输出的结果,代表第一个分区的输出,因为没有设置分区,所以只有一个分区

SUCCESS:成功的标识文件

查看结果文件

cat part-r-00000

在这里插入图片描述

三、集群节点分发脚本

在处理中我们肯定是选择完全分布式的形式,就要将三台机器互相通信,配置Hadoop相关文件

在搭建集群之前,首先是要有三台机器,配置好相应的准备环境,然后再配置接群。因为之前已经准备好了准备环境,Hadoop集群搭建准备环境所以在这里就可以直接配置集群了。

1、集群分发脚本xsync

因为在集群内部设置中,都是关于三台机器一起安装的软件,还要涉及一些公共的文件和数据,所以对于每一次我们一项工作就要重复三次,难免会有些耗时费力,所以通过xsync技术,完成分发脚本的编写

1)scp(secure copy)安全拷贝

首先先了解scp是什么?

scp可以实现服务器与服务器之间的数据拷贝。

基本的语法就是

scp -r filename user@host:filePath/fileName

比如:使用该命令将JDK发送到另外两台机器

scp -r /opt/module/jdk1.8.0_212 lnnu@hadoop103:/opt/module

注意:

这个命令的使用一定要确保在目标机器中已经存在目录module,并且文件夹所属组属于lnnu

会询问权限和密码
在这里插入图片描述

scp命令在发送的时候是将整个文件目录全部发送给目标机器,不管目标机器中是否存在,或者是存在很多重复的文件。

比如,对于一个1G的文件目录,里面只有一个文件是不一样的,而scp会将1G的文件目录全部发送过去,而不是只发送不一样的文件

2)rsync远程同步工具

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

rsync 和 scp 区别:用 rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更新。scp 是把所有文件都复制过去。

基本语法:

rsync -av fliename user@host:filePath/fileName

参数说明

参数说明
-a归档拷贝
-v显示赋值过程

比如:拷贝hadoop安装包到其他机器

rsync  -av  hadoop-3.1.3/ lnnu@hadoop103:/opt/module/hadoop-3.1.3/

在这里插入图片描述

3)编写集群分发脚本

我们可以借助rsync命令对脚本进行分发,然后实现循环复制文件到当前集群的所有节点的相同目录下

我们期待脚本可以放在所有的目录下都可以使用,那么就需要将脚本路径加入到环境变量中,或者将脚本编写在环境变量的路径下。

首先可以看一下,环境变量路径都有哪些
在这里插入图片描述

①我们可以将脚本编写在/home/lnnu/bin目录下即可

vim /home/lnnu/bin/xsync
#!/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 +x xsync

在这里插入图片描述

③测试脚本

xsync /home/lnnu/bin	

在这里插入图片描述

④将脚本复制到/bin中,以便全局调用

sudo cp xsync /bin/

⑤同步环境变量配置(root组)

将我们之前配置的环境变量文件my_env.sh发送集群节点

sudo /home/lnnu/bin/xsync /etc/profile.d/my_env.sh

在这里插入图片描述

4)SSH无密登录配置

上面的分发脚本在配置之后每次都要输入密码,很麻烦,所以采用SSH方式进行无密登录设置

①首先需要在机器上生产公钥和私钥

ssh-keygen -t rsa

rsa参数是使用rsa方式加密

会出现两个文件,id_rsa(私钥)、id_rsa.pub(公钥)
在这里插入图片描述

然后就会在/home/lnnu/.ssh目录下出现三个文件
在这里插入图片描述

文件的详情解释

文件说明
known_hosts记录 ssh 访问过计算机的公钥(public key)
id_rsa生成的私钥
id_rsa.pub生成的公钥
authorized_keys存放授权过的无密登录服务器公钥

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

ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104

在这里插入图片描述

这样当设置的机器再访问本机器就可以无密登录了

③还要配置无密登录103和104,同样的操作
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

牧码文

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

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

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

打赏作者

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

抵扣说明:

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

余额充值