2.Hadoop--多服务节点安装hadoop,ssh免密登录

安装hadoop

在hadoop101上

cd /opt
mkdir module
上传 hadoop-3.1.3.tar.gz,并解压到本地
上传 jdk-8u281-linux-x64.tar.gz安装包,并解压到本地

登录时生效的环境变量配置文件
在Linux系统登录时主要生效的环境变量配置文件有以下五个:

/etc/profile
/etc/profile.d/*.sh
~/.bash_profile
~/.bashrc
/etc/bashrc

环境变量配置文件调用过程
在这里插入图片描述
在用户登录过程先调用/etc/profile文件,在这个环境变量配置文件中会定义这些默认环境变量:

vi /etc/profile

for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done

调用/etc/profile. d/*. sh文件,也就是调用/etc/profile. d/目录下所有以. sh结尾的文件

现在很多企业的环境变量都放在/etc/profile.d/下

cd /etc/profile.d
vi my_env.sh

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_281
export PATH=$PATH:$JAVA_HOME/bin


#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

认识常用hadoop命令
在这里插入图片描述

启动hadoop模式–了解

  • Local (Standalone) Mode 本地模式 数据存储在Linux本地,测试玩
  • Pseudo-Distributed Mode 伪分布模式 数据存储在HDFS
  • Fully-Distributed Mode 数据存储在HDFS、多台服务器工作

简单测试

[root@hadoop101 module]# cd hadoop-3.1.3/
[root@hadoop101 hadoop-3.1.3]# mkdir wcinput
[root@hadoop101 hadoop-3.1.3]# cd wcinput/
[root@hadoop101 wcinput]# ll
总用量 0
[root@hadoop101 wcinput]# vi word.txt

ss ss
cls cls
banzhang
hello world

[root@hadoop101 hadoop-3.1.3]# bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput/ wcoutput/

wcinput/ 是输入路径,必须提前就有
wcoutput/ 是输出路径,必须以前没有

执行结束后,会生成wcoutput路径

[root@hadoop101 hadoop-3.1.3]# cd wcoutput/
[root@hadoop101 wcoutput]# ll
总用量 4
-rw-r--r--. 1 root root 38 96 15:17 part-r-00000
-rw-r--r--. 1 root root  0 96 15:17 _SUCCESS
[root@hadoop101 wcoutput]# cat part-r-00000 
banzhang        1
cls     2
hello   1
ss      2
world   1

拷贝文件到其他服务节点上

scp 安全拷贝

复制文件到其他服务器上
在hadoop102 ,103,104上分别创建/opt/module

在hadoop101上复制hadoop拷贝到hadoop102上

scp -r /opt/module/hadoop-3.1.3/ root@hadoop102:/opt/module

-r递归迭代

也可以在hadoop103上,拉取过来

ssh hadoop103  登录到103上
cd /opt/module
[root@hadoop103 ~]# scp -r root@hadoop101:/opt/module/hadoop-3.1.3 .

也可以在hadoop103上,将101上的文件拷贝到104上

[root@hadoop103 ~]# scp -r root@hadoop101:/opt/module/* root@hadoop104:/opt/module

rsync远程同步工具

rsync主要用于备份和镜像

rsync做文件的复制比scp的速度快,rsync只对差异文件做更新,而scp是把所有文件都复制过去

rsync -av 目录 目标目录

  • a 归档拷贝
  • v 显示复制过程

用xsync实现集群分发脚本

用yanweiling用户操作

[root@hadoop101 yanweiling]# su yanweiling
[yanweiling@hadoop101 ~]$ cd /home/yanweiling/
[yanweiling@hadoop101 ~]$ mkdir bin
[yanweiling@hadoop101 ~]$ ll
总用量 0
drwxrwxr-x. 2 yanweiling yanweiling 6 9月 6 17:48 bin
[yanweiling@hadoop101 ~]$ cd bin/
[yanweiling@hadoop101 bin]$ vi xsync
[yanweiling@hadoop101 bin]$ vi 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

-P的作用是什么?

[root@hadoop101 module]# ln -s aaa bbb
[root@hadoop101 module]# ll
总用量 0
drwxr-xr-x. 2 root root 6 9月 6 17:16 aaa
lrwxrwxrwx. 1 root root 3 9月 6 17:16 bbb -> aaa
drwxr-xr-x. 11 1000 1000 180 9月 6 15:17 hadoop-3.1.3
drwxr-xr-x. 8 10143 10143 273 12月 9 2020 jdk1.8.0_281
[root@hadoop101 module]# cd bbb/
[root@hadoop101 bbb]# ll
总用量 0
[root@hadoop101 bbb]# cd …
[root@hadoop101 module]# cd -P bbb
[root@hadoop101 aaa]#

mkdir 文件,如果文件已经存在会报错,可以增加-p

mkdir -p 文件,文件即使存在也不会报错

此时文件是不可执行的

[yanweiling@hadoop101 bin]$ ll
总用量 4
-rw-rw-r–. 1 yanweiling yanweiling 693 9月 6 17:50 xsync
在这里插入图片描述

期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)
需要将/home/yanweiling/bin追加到环境变量$PATH中

[yanweiling@hadoop101 bin]$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.8.0_131/bin:/opt/module/hadoop-3.1.3/bin:/opt/module/hadoop-3.1.3/sbin:/root/bin:/usr/java/jdk1.8.0_131/bin:/opt/module/hadoop-3.1.3/bin:/opt/module/hadoop-3.1.3/sbin:/usr/java/jdk1.8.0_131/bin:/opt/module/hadoop-3.1.3/bin:/opt/module/hadoop-3.1.3/sbin:/home/yanweiling/bin
[yanweiling@hadoop101 bin]$ xsync
Not Enough Arguement!

另外需要在每台机器上,都安装rsync

在hadoop上安装 yum -y install rsync
ssh hadoop102 ‘yum -y install rsync’
ssh hadoop103 ‘yum -y install rsync’
ssh hadoop104 ‘yum -y install rsync’

执行

[root@hadoop101 bin]# xsync /home/yanweiling/bin/
==================== hadoop102 ====================
sending incremental file list
bin/
bin/xsync

sent 842 bytes  received 39 bytes  587.33 bytes/sec
total size is 693  speedup is 0.79
==================== hadoop103 ====================
sending incremental file list
bin/
bin/xsync

sent 842 bytes  received 39 bytes  1,762.00 bytes/sec
total size is 693  speedup is 0.79
==================== hadoop104 ====================
sending incremental file list
bin/
bin/xsync

sent 842 bytes  received 39 bytes  1,762.00 bytes/sec
total size is 693  speedup is 0.79
[root@hadoop101 bin]# 

这个时候,我们发现其他服务机器上也有/home/yanweiling/bin/xsync了

使用分发脚本分发环境变量

发现用普通用户分发确不可以, 但是普通用户分发 /home/yanweiling/bin目录确可以

[yanweiling@hadoop101 bin]$ sudo xsync /etc/profile.d/my_env.sh 
sudo: xsync:找不到命令
[yanweiling@hadoop101 bin]$ su root
密码:
[root@hadoop101 bin]# xsync /etc/profile.d/my_env.sh 
==================== hadoop102 ====================
sending incremental file list
my_env.sh

sent 390 bytes  received 35 bytes  283.33 bytes/sec
total size is 296  speedup is 0.70
==================== hadoop103 ====================
sending incremental file list
my_env.sh

sent 390 bytes  received 35 bytes  850.00 bytes/sec
total size is 296  speedup is 0.70
==================== hadoop104 ====================
sending incremental file list
my_env.sh

sent 390 bytes  received 35 bytes  850.00 bytes/sec
total size is 296  speedup is 0.70
[root@hadoop101 bin]# 

为什么会报

[yanweiling@hadoop101 bin]$ sudo xsync /etc/profile.d/my_env.sh 
sudo: xsync:找不到命令

如果我们用普通用户操作,不加sudo,提示权限有问题;
加上sudo,却提示命令不存在

解决方案

[yanweiling@hadoop101 bin]$ sudo /home/yanweiling/bin/xsync /etc/profile.d/my_env.sh 
将命令写全即可

每个服务节点环境变量生效

source /etc/profile

免密ssh登录实现

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值