Hadoop学习3:Hadoop3.1.3本地模式测试以及完全分布模式测试

1 本地模式

1.1 样例测试

在对应的hadoop家目录下执行以下命令
在这里插入图片描述

cd /opt/module/hadoop 3.1.3
# 在hadoop-3.1.3文件下面创建一个input文件夹
mkdir input

# 将Hadoop的xml配置文件复制到input
cp etc/hadoop/*.xml input

#执行share目录下的MapReduce程序,这里需要在hadoop的家目录下执行,如上图那样
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output 'dfs[a-z.]+'
#注意:输入路径output不能存在。如果存在,会抛出FileAlreadyExistsException.异常.4)查看输出结果

cd output
cat part-r-00000

结果
在这里插入图片描述

注意运行代码中的grep不是Linux内置命令的grep,而是hadoop官方案例中的的一个方法,作用是统计符合正则表达式的单词以及统计次数,最左边的表示次数,如上边的1

案例主要是获取input目录下符合正则表达式'dfs[a-z.]+'的内容,这里可以自己添加例如文本文件进行测试如下:
在这里插入图片描述
在这里插入图片描述

2 完全分布模式

2.1 集群分发

2.1.1 scp命令实现服务器与服务器之间的数据安全拷贝
  • 前提条件:两个服务器之间要能ping
  • 作用:实现服务器之间的数据的拷贝,避免频繁的配置,例如JDK以及Hadoop的配置
  • 语法

scp [选项] 要拷贝的文件或者目录 拷贝的文件到哪个位置

  • 常用选项-r:用于目录的递归拷贝
  • 实例
#从本服务器拷贝文件到其他服务器:将本服务器的当前目录下的test.txt文件拷贝到用户为cxj主机名为hadoop103的服务器下的/opt/sortware目录下
scp test.txt cxj@hadoop103:/opt/sortware

#从其他服务器拷贝文件到本服务器
scp cxj@hadoop102:/opt/sortware/test1.txt /opt/sortware

#目录拷贝
scp -r test  cxj@hadoop102:/opt/sortware

过程如下,需要输入密码验证身份
在这里插入图片描述

2.1.2 rsync远程同步工具
  • 含义rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。类似scp语法是一样的,主要区别是rsync相当于差异性拷贝,就是有区别才拷贝
  • 语法参考scp
  • 常用选项
    在这里插入图片描述

还有一个选项是-r,但是-a参数可以替代-r,除了可以递归同步以外,还可以同步元信息(比如修改时间、权限等)。由于 rsync 默认使用文件大小和修改时间决定文件是否需要更新,所以-a比-r更有用。更详细可以看这里:rsync 用法教程

  • 实例
#文件同步
rsync -av test.txt cxj@hadoop102:/opt/sortware
#目录同步
rsync -av test cxj@hadoop102:/opt/sortware
  • scprsync对比
    对于同一个文件以及使用上述命令进行了同步,当不修改test.txt文件再次同步,就会出现如下:箭头位置表示传输的文件列表

    第一次传输结果
    在这里插入图片描述
    第二次传输结果
    在这里插入图片描述

目录同步是一样的,当目录下的文件删除或者修改后,再次使用该命令就会同步差异的文件,注意这是手动的同步,不是自动实时同步文件

2.1.3 简化同步脚本编写
  • 问题:上述脚本都是每一次同步对于不同的服务器都要进行输入一次命令,对于同步的内容,事实上除了服务器,其他都是一样的

  • 意义:通过shell脚本进行过程的简化这个过程:也就是自定义脚本,通过向脚本传递目录与文件的参数,就会自动将这个目录或文件同步到配置好的服务器的相应的位置

  • 准备:在对应用户的家目录下创建bin目录
    在这里插入图片描述
    创建的原因是要将等下的shell脚本丢到里边,然后将这个shell脚本在其他地方作为一个命令执行

    创建bin目录的意义是,环境变量已经自动配置用户对应家目录的bin目录的环境变量,所以可以直接输入脚本就执行对应的脚本,在家目录下通过$PATH可以看到
    在这里插入图片描述
    我这里在bin目录下创建xsync文件,名字随意,shell脚本可以是任意名,但是执行的时候就需要执行对应的名字。如果 设置的是xsync.sh那么执行命令的时候使用的是xsync.sh 参数...
    在这里插入图片描述
    更改文件名命令mv 旧文件名 新文件名

  • 实例

#!/bin/bash
if [ $# -lt 1 ]	#输入的需要同步文件至少一个
	then echo "无可用参数"
	exit
fi

for host in hadoop102 hadoop103  #服务器名列表
do
	for file in $@	#参数列表遍历
	do  
		if [ -e $file ]	#判断本地文件是否存在
		then
			#逻辑:切换到要同步的文件或者目录的所在目录并通过pwd获取
			#绝对路径
			#$()执行命令;
			#--P参数:表示切换到实际的路径,主要是处理软连接的问题,
			#因为直接cd,pwd软连接会显示软链接所在的目录,而不是软链接
			#所指向的路径
			#dirname:内置指令,获取目录名
			pdir=$( cd -P $(dirname $file);pwd )
			#basename:获取文件文件名	
			fname=$( basename $file )
			#登录到对应的host,这里需要首先配置好主机名映射,然后执行
			#创建对应的父目录,这里成功执行会有输入密码的过程
			ssh $host "mkdir -p $pdir"
			#同步指令,参考上述
			rsync -av $pdir/$fname $host:$pdir
		else echo "$file不存在"
		fi
	done
done
  • 添加可执行可执行权限chmod u+x xsync
  • 使用
    在这里插入图片描述
  • 不足之处:第一次连接以及后续的ssh连接都需要输入密码。这里解决就需要配置ssh的免登录

3 SSH免登录

3.1 SSH免登录原理

基本过程
在这里插入图片描述
过程简述
在这里插入图片描述

  1. 服务器A通过ssh登录到服务器B,通过ssh登录前,A就生成密钥对,并将其中的公钥拷贝一份到B
  2. B随机生成一个字符串,例如一个数字1。然后通过Authorized_keys获取对应的公钥,然后通过公钥进行加密成另一个字符串,这里假设加密后是2
  3. 将加密后的字符串2发送到服务器AA使用私钥进行解密,如果公钥是当初服务器A生成的,那么就会解密出1
  4. 这个时候,服务器A和服务器B都拥有原始字符串1,服务器A将原始字符串1和会话ID1001(这里假设是1001)组合,在使用私钥进行加密,假设加密后得到的字符串是abc
  5. 将加密后的字符串abc发回到服务器B,服务器再使用本身的公钥将原始字符串1当前会话ID进行加密,然后加密的结果和服务器A发来的加密字符串进行对比,如果对比正确,就免登录通过

3.2 SSH免登录配置

3.2.1 公钥和私钥生成

在需要生成要公钥和私钥的服务器上执行以下命令

ssh-keygen -t rsa

在这里插入图片描述

~/.ssh目录下生成两个文件id. rsa(私钥)id_rsa.pub(公钥)

3.2.2 公钥分发

使用以下命令将上述的生成的公钥进行分发到指定的机器上。想跟那个机器就发哪个。

ssh-copy-id 主机ip   # ssh-copy-id hadoop102  hadoop102是主机名,需要自行配置,也可以写对应的ip地址

被分发公钥的主机~/.ssh目录下会出现对应的认证文件,通过该文件可以获取对应的公钥,如果需要操作本机的,通过ssh登录也是需要密码的,但是本机也是可以给本机分发公钥进行免登录配置。如下是生成的认证文件
在这里插入图片描述

注意:免登录配置是区分用户的,目前实现了其中一个用户的免登录配置,要是实现其他用户,例如使用其他用户登录后还想免密登录到其他服务器,就需要重新执行上述步骤

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Hadoop进行测试,你可以按照以下步骤进行操作: 1. 安装Hadoop:首先,你需要在你的系统上安装Hadoop。你可以从Apache官方网站上下载Hadoop的最新版本,并按照它们提供的安装指南进行安装。 2. 配置Hadoop:一旦安装完成,你需要配置Hadoop以适应你的测试环境。这包括设置Hadoop集群的节点、端口和其他参数。你可以编辑Hadoop的配置文件,如`hadoop-env.sh`和`core-site.xml`来进行配置。 3. 准备测试数据:在进行测试之前,你需要准备一些测试数据。这些数据可以是文本文件、日志文件、图像等。确保你的数据存储在Hadoop分布式文件系统(HDFS)中,这样Hadoop才能对其进行处理。 4. 编写MapReduce程序:Hadoop使用MapReduce模型来处理和分析大规模数据。你需要编写MapReduce程序来定义你的数据处理逻辑。这包括编写Mapper和Reducer函数,并指定它们的输入和输出格式。 5. 打包和部署程序:将你编写的MapReduce程序打包成一个JAR文件,并将其部署到Hadoop集群上。你可以使用Hadoop提供的命令行工具或Hadoop API来完成这个步骤。 6. 运行测试:一切准备就绪后,你可以使用Hadoop提供的命令行工具或API来运行你的测试程序。Hadoop会将你的程序分发到集群的各个节点上,并根据你的指示执行MapReduce任务。 7. 检查结果:当你的测试程序运行完成后,你可以检查Hadoop的输出结果。这可能包括生成的文件、日志或其他形式的输出。确保结果与你预期的一致,并根据需要进行调试和优化。 这些是使用Hadoop进行测试的基本步骤。根据你的具体需求和环境,可能还需要进行一些额外的配置和操作。建议参考Hadoop的官方文档和其他相关资源,以获取更详细的指导和帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值