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

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

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

    • 1 本地模式
      • 1.1 样例测试
    • 2 完全分布模式
      • 2.1 集群分发
        • 2.1.1 scp命令实现服务器与服务器之间的数据安全拷贝
        • 2.1.2 rsync远程同步工具
        • 2.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
  • scp与rsync对比
    对于同一个文件以及使用上述命令进行了同步,当不修改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 "无可用参数"
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连接都需要输入密码
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/613117.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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