个人博客SkyAsh的小窝
介绍
官方网站展示的hadoop的运行模式有三种
- Local(Standalone) Mode 本地模式
- Pseudo-Distributed Mode 伪分布式
- Fuly-Drstributed Mode 完全分布式
区别
- 本地模式:单机运行,只是用来演示一下官方案例。生产环境不用。
- 伪分布式:单机运行,但具备 Hadoop 集群的所有功能,一台服务器模拟一个分布式的环境。预算不足的公司用来测试,生产环境不用。
- 完全分布式:多台服务器组成分布式环境。生产环境使用。
盗个图
本地运行模式:官方 WordCount(单词计数)案例
创建wordcount文件夹
在hadoop-3.3.1目录下创建wordcount文件夹
mkdir wcinput
编辑word.txt
进入wordcount目录
若文件不存在,vim编辑器会自动生成文件
内容随便输入,如果懒的话直接复制我的
vim word.txt
hello world
I Love You
It is the time you have wasted for your rose that makes your rose so important.
:wq保存并退出
执行程序
返回目录hadoop-3.3.1
cd /opt/module/hadoop-3.3.1
或者
cd ../ #返回上一级目录
运行
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount wcinput wcoutput
查看结果
cat wcoutput/part-r-00000
完全分布式
xsync 集群分发脚本编写
进入/home/hadoop目录
cd /home/hadoop
创建bin目录
mkdir bin
进入bin目录
cd bin
编辑脚本
vim xsync
输入以下内容
#!/bin/bash
#1. 判断参数个数
# 判断参数是否小于1
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
# 对102,103,104都进行分发
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
使脚本有执行权限
chmod +x xsync
测试
xsync /home/hadoop/bin
成功
全局调用
把脚本复制到/bin
sudo cp xsync /bin/
配置hadoop103,hadoop104
软件包分发
直接分发opt目录
xsync /opt
环境变量配置
由于之前我们只给hadoop102配置了环境变量,所以我们使用分发脚本给103,104都分发过去
使用命令
由于是给103,104两个机子的etc目录进行修改,所以需要加sudo
sudo xsync /etc/profile.d/my_env.sh
103,104生效环境变量
[hadoop@hadoop103 ~]$ source /etc/profile
[hadoop@hadoop104 ~]$ source /etc/profile