ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

02-Hadoop完全分布式

2022-02-27 22:02:31  阅读:134  来源: 互联网

标签:02 机器 登录 用户 Hadoop 主机名 ssh 目录 分布式


一、完全分布式集群搭建

1、规划

HDFS: 1个NN+N个DN

YARN: 1个RM+N个NM

避免单点故障,NN和RM建议分散到多台机器。注意负载均衡。

hadoop101 hadoop102 hadoop103
DN DN DN
NM NM NM
NN RM 2NN

 

 

 

 

 

2、准备集群,安装软件

(1)克隆三台虚拟机

  1. 在每台机器的/etc/hosts中配置集群所有机器的ip和主机名的映射
  2. 提供安装用户,配置安装用户具有root权限
  3. 保证三台机器可以互相联通

(2)安装软件,在一台机器安装,再将这台机器的软件复制到其他机器

二、常用命令

1、scp(安全拷贝)

全量复制

命令: scp -r 源文件用户名A@主机名1:path1 目标文件用户名B@主机名2:path2

-r:递归,复制目录
如果从本机执行读取或写入,用户名B@主机名2:可以省略!

解释:在主机1上,使用A用户读取path1的文件,再使用用户B登录到主机2,在主机2的path2路径执行写入。

要求: 用户名A@主机名1 对path1有读权限
      用户名B@主机名2 对path2有写权限

2、rsync (远程同步)

可以只同步变化的文件(对比文件的修改时间)!增量同步

命令: rsync -rvlt path1 目标文件用户名B@主机名2:path2

-r:递归,复制目录
-v:显示复制的过程
-l: 同步软连接
-t:基于文件的修改时间进行对比,只同步修改时间不同的文件

只能将本机的文件同步到其他机器。

注意: 
path1是个目录,目录以/结尾,只会同步目录中的内容,不会同步目录本身!
path1是个目录,目录不以/结尾,同步目录中的内容,也会同步目录本身!

3. 免输入密码登录,借助SSH实现

举例: A机器的a用户,希望在A机器上,使用b用户的身份登录到B机器!

实现步骤:

① A机器的a用户,在A机器上生成一对密钥
  ssh-keygen -t rsa
② 密钥分为公钥和私钥,a用户需要将公钥拷贝到B机器上b用户的家目录下的
  authorithxxxx_keys
    a)使用b用户登录到B机器
    b)编辑authorithxxxx_keys,将公钥的内容进行添加

  在A机器,使用a用户执行以下命令: ssh-copy-id b@B

③ A机器的a用户,可以使用 ssh b@B进行登录!

3. 免输入密码登录,借助SSH实现
举例: A机器的a用户,希望在A机器上,使用b用户的身份登录到B机器!

实现步骤: ①A机器的a用户,在A机器上生成一对密钥
ssh-keygen -t rsa
②密钥分为公钥和私钥,a用户需要将公钥拷贝到B机器上b用户的家目录下的
authorithxxxx_keys
a)使用b用户登录到B机器
b)编辑authorithxxxx_keys,将公钥的内容进行添加

在A机器,使用a用户执行以下命令: ssh-copy-id b@B

③A机器的a用户,可以使用 ssh b@B进行登录!

注意:如果使用ssh 直接登录 主机名
默认使用当前用户对目标主机进行登录!

4. 编写同步脚本

#!/bin/bash
#校验参数是否合法
#脚本名称:xsync
if(($#==0))
then
    echo 请输入要分发的文件!
    exit;
fi
#获取分发文件的绝对路径
dirpath=$(cd `dirname $1`; pwd -P)
filename=`basename $1`

echo 要分发的文件的路径是:$dirpath/$filename

#循环执行rsync分发文件到集群的每条机器
for((i=101;i<=103;i++))
do
    echo ---------------------hadoop$i---------------------
    rsync -rvlt $dirpath/$filename  atguigu@hadoop$i:$dirpath
done

5. 编写多机器执行命令脚本

#!/bin/bash
#在集群的所有机器上批量执行同一条命令
#脚本名称:xcall
if(($#==0))
then
    echo 请输入您要操作的命令!
    exit
fi

echo 要执行的命令是$*

#循环执行此命令
for((i=101;i<=103;i++))
do
    echo ---------------------hadoop$i-----------------
    ssh hadoop$i $*
done

 

标签:02,机器,登录,用户,Hadoop,主机名,ssh,目录,分布式
来源: https://www.cnblogs.com/dongchao3312/p/15943601.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有