04学习大数据-Hadoop运行模式

04学习大数据-Hadoop运行模式,第1张

04学习大数据-Hadoop运行模式

本地模式:单机运行,演示一下官方案例,生成环境不用。

本地运行模式:

在hadoop-3.1.3目录下创建wcinput文件

[root@hadoop102 hadoop-3.1.3]# mkdir wcinput
 

创建一个文件,输入一些内容

vim word.txt

hadoop yarn
hadoop mapreduce
atguigu
atguigu

目的:统计这个文件里的每个单词出现的次数

回到 Hadoop 目录/opt/module/hadoop-3.1.3

执行程序

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput/ ./wcoutput

查看结果

cat wcoutput/part-r-00000


完全分布式运行模式

1. 集群分发脚本 xsync

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

前提:在hadoop102,103,104都存在/opt/moudule/ ,/opt/software/ 文件夹

第一种方式,在hadoop102上推送数据给hadoop103

在 hadoop102 上,将 hadoop102 中/opt/module/jdk1.8.0_212 目录拷贝到hadoop103 上

命令:

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

需要yes 然后输入密码

第二种方式,可以在hadoop103上,去拉取102中的hadoop内容。

[zuck@hadoop103 module]$ scp -r root@hadoop102:/opt/module/hadoop-3.1.3 ./
 

至此 103的JDK和HADOOP已经拷贝完成。

第三种方式,站在hadoop103上,将hadoop102的数据拷贝到hadoop104上

命令分析:

 

scp -r root@hadoop102:/opt/module/* zuck@hadoop104:/opt/module/

 rsync 远程同步工具

rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync 和 scp 区别:用 rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更新。scp 是把所有文件都复制过去。

测试一下这个工具

删掉hadoop103上的wcinput

[zuck@hadoop103 hadoop-3.1.3]$ ls
bin  etc  include  lib  libexec  LICENSE.txt  NOTICE.txt  README.txt  sbin  share  wcinput  wcoutput
[zuck@hadoop103 hadoop-3.1.3]$ rm -rf wcinput/ wcoutput/
 

现在将hadoop102上的内容(里面有wcinput,wcoutput)同步到hadoop103上

在hadoop102上输入以下命令:(在module目录下输入)

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

......
wcinput/
wcinput/word.txt
wcoutput/
wcoutput/._SUCCESS.crc
wcoutput/.part-r-00000.crc
wcoutput/_SUCCESS
wcoutput/part-r-00000

sent 4,809,055 bytes  received 5,483,651 bytes  457,453.60 bytes/sec
total size is 844,991,426  speedup is 82.10
[zuck@hadoop102 module]$ 

回到hadoop103上查看wcinput,wcoutput文件又同步了。


xsync 集群分发脚本

需求:循环复制文件到所有节点的相同目录下

期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)

 echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/atguigu/.local/bin:/home/atguigu/bin:/opt/module/jdk1.8.0_212/bin

脚本实现

1. 在/home/atguigu/bin 目录下创建 xsync 文件

[atguigu@hadoop102 opt]$ cd /home/atguigu
[atguigu@hadoop102 ~]$ mkdir bin
[atguigu@hadoop102 ~]$ cd bin
[atguigu@hadoop102 bin]$ vim xsync

2. 脚本的代码

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ] #如果参数小于1
then
	echo Not Enough Arguement!	#输出没有参数然后退出
	exit;
fi

#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104 # 获取到3台主机的名称
do
	 echo ==================== $host ====================
	 
	 #3. 遍历所有目录,挨个发送
	 for file in $@ # 遍历你给的路径的个数,多少个都行,一般传1个值
	 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

 3. 核心代码分析:

pdir = $(cd -P $(dirname $file);pwd)

获取父目录,无论你传的路径是相对路径还是绝对路径,都可以获得到你输入的路径,

-P的含义:软连接,命令 ln -s aaa bbb (给aaa创建了一个软连接)

输入cd bbb时,进入了/home/xxx/bbb

输入 cd -P bbb时,进入了/home/xxx/aaa

vim xsync 将上面代码输入进去

创建了xsync,但是还没有可执行的权限。

输入

chmod 777 xsync


使用一下xsync脚本,在hadoop102上同步一下bin目录

xsync bin/

这里我出现了

[zuck@hadoop102 ~]$ xsync bin/
bash: xsync: command not found...
Similar command is: 'sync'
 

这个问题,解决方法在bash: xsync: command not found的解决方法_Faith-CSDN博客

脚本执行情况:

 

同步分发完毕

目前需要把/etc/profile.d/my_env.sh 分发到其他两台服务器,是否能行呢?

在hadoop102下输入以下命令(/home/目录下执行):

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

完成执行:

去hadoop103机器上查看

sudo vim /etc/profile.d/my_env.sh

在hadoop103和hadoop104上source一下,让配置生效

[zuck@hadoop103 bin]$ source /etc/profile
[zuck@hadoop103 bin]$ java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
[zuck@hadoop103 bin]$ 
 


至此,hadoop102,103,104机器上所有的java,hadoop以及对应的环境变量都安装并配置好了。

xsync脚本需要稍加了解,知道如何去使用他去分发。 

  

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5138359.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存