Hadoop运行模式--本地(独立)模式&全分布式模式

Hadoop 官方网站:hadoop.apache.org

根据官网的说明:

  • Hadoop在GNU/Linux作为开发和生产平台受到了支持。
  • 必须安装Java
  • 如果要使用可选的启动和停止脚本,则必须安装ssh并运行sshd才能使用管理远程Hadoop守护进程的Hadoop脚本

Hadoop与JDK的对应版本可以参考:cwiki.apache.org/confluence/...

hadoop下载地址:dlcdn.apache.org/hadoop/comm...

根据官网的说明有三种运行模式

  • 本地(独立)模式
  • 伪分布模式
  • 全分布式模式

本地模式

在 hadoop-3.1.3 文件下面创建一个 wcinput 文件夹

yaml 复制代码
[muyi@hadoop102 hadoop-3.1.3]$ mkdir wcinput
[muyi@hadoop102 hadoop-3.1.3]$ ll
总用量 176
drwxr-xr-x. 2 muyi muyi    183 9月  12 2019 bin
drwxr-xr-x. 3 muyi muyi     20 9月  12 2019 etc
drwxr-xr-x. 2 muyi muyi    106 9月  12 2019 include
drwxr-xr-x. 3 muyi muyi     20 9月  12 2019 lib
drwxr-xr-x. 4 muyi muyi    288 9月  12 2019 libexec
-rw-rw-r--. 1 muyi muyi 147145 9月   4 2019 LICENSE.txt
-rw-rw-r--. 1 muyi muyi  21867 9月   4 2019 NOTICE.txt
-rw-rw-r--. 1 muyi muyi   1366 9月   4 2019 README.txt
drwxr-xr-x. 3 muyi muyi   4096 9月  12 2019 sbin
drwxr-xr-x. 4 muyi muyi     31 9月  12 2019 share
drwxrwxr-x. 2 muyi muyi      6 11月 10 08:40 wcinput
[muyi@hadoop102 hadoop-3.1.3]$ cd wcinput/

在 wcinput 文件下创建一个 word.txt 文件,在文件中输入如下内容

hadoop yarn
hadoop mapreduce
myyi
muyi
ruby 复制代码
[muyi@hadoop102 wcinput]$ vim word.txt

统计每一个单词出现的次数

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

执行程序

bash 复制代码
[muyi@hadoop102 hadoop-3.1.3]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput/ ./wcoutput

逐部分解释

  1. bin/hadoop:

    • 这是一个脚本,通常位于 Hadoop 的 bin 目录下。
    • hadoop 脚本是 Hadoop 的主命令行接口,用于执行各种 Hadoop 相关的操作,如提交作业、管理文件系统等。
  2. jar:

    • jarhadoop 命令的一个子命令,用于运行包含 MapReduce 作业的 JAR 文件。
    • jar 命令需要两个主要参数:JAR 文件的路径和主类(或作业名称)。
  3. share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar:

    • 这是包含 MapReduce 作业示例的 JAR 文件的路径。
    • hadoop-mapreduce-examples-3.1.3.jar 是 Hadoop 发行版中自带的一个 JAR 文件,其中包含了多个示例 MapReduce 作业,包括 WordCount。
  4. wordcount:

    • 这是 JAR 文件中的一个特定作业名称。
    • hadoop-mapreduce-examples-3.1.3.jar 中,wordcount 是一个预定义的作业名称,对应于 WordCount 示例。
  5. wcinput/ :

    • 这是输入数据的路径。
    • wcinput/ 是 HDFS 上的一个目录,其中包含要进行词频统计的文本文件。
  6. ./wcoutput:

    • 这是输出结果的路径。
    • ./wcoutput 是 HDFS 上的一个目录,MapReduce 作业的结果将被写入这个目录。
    • 注意:如果输出目录已经存在,Hadoop 会抛出错误,因为 Hadoop 不允许覆盖现有的输出目录。你需要先删除或重命名已存在的输出目录。

功能 :运行 Hadoop MapReduce 作业,使用 hadoop-mapreduce-examples-3.1.3.jar 中的 wordcount 示例,处理 wcinput/ 目录中的数据,并将结果输出到 ./wcoutput 目录。

查看结果

ruby 复制代码
[muyi@hadoop102 hadoop-3.1.3]$ cd wcoutput/
[muyi@hadoop102 wcoutput]$ ll
总用量 4
-rw-r--r--. 1 muyi muyi 42 11月 10 08:50 part-r-00000
-rw-r--r--. 1 muyi muyi  0 11月 10 08:50 _SUCCESS
[muyi@hadoop102 wcoutput]$ cat part-r-00000 
hadoop	2
mapreduce	1
muyi	1
myyi	1
yarn	1
[muyi@hadoop102 wcoutput]$ 

完全分布式运行模式

编写集群分发脚本

scp(secure copy) 安全拷贝

scp 可以实现服务器与服务器之间的数据拷贝。(from server1 to server2)

基本语法:

swift 复制代码
scp -r $pdir/$fname $user@$host:$pdir/$fname

命令 递归 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称

前提:在hadoop103,hadoop104都已经创建好/opt/module

推送数据

vbnet 复制代码
[muyi@hadoop102 module]$ scp -r jdk1.8.0_212/ muyi@hadoop103:/opt/module/
The authenticity of host 'hadoop103 (192.168.10.103)' can't be established.
ECDSA key fingerprint is SHA256:OPCXbzuiPqHyAbQAqf/7fSB13u8/u7Vs9z5csAVV6VU.
ECDSA key fingerprint is MD5:8e:98:30:6b:26:79:d9:16:19:d5:17:b9:4e:80:62:98.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'hadoop103,192.168.10.103' (ECDSA) to the list of known hosts.
muyi@hadoop103's password: 

拉取数据

ruby 复制代码
[muyi@hadoop103 module]$ scp -r muyi@hadoop102:/opt/module/hadoop-3.1.3 ./
The authenticity of host 'hadoop102 (192.168.10.102)' can't be established.
ECDSA key fingerprint is SHA256:OPCXbzuiPqHyAbQAqf/7fSB13u8/u7Vs9z5csAVV6VU.
ECDSA key fingerprint is MD5:8e:98:30:6b:26:79:d9:16:19:d5:17:b9:4e:80:62:98.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'hadoop102,192.168.10.102' (ECDSA) to the list of known hosts.
muyi@hadoop102's password:

在hadoop103上将hadoop102的数据发送到hadoop104上

ruby 复制代码
[muyi@hadoop103 module]$ scp -r muyi@hadoop102:/opt/module/* muyi@hadoop104:/opt/module/
muyi@hadoop102's password: 

rsync远程同步工具

rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

rsync 和 scp 区别:用 rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更新。scp 是把所有文件都复制过去。

基本语法:

swift 复制代码
rsync -av $pdir/$fname $user@$host:$pdir/$fname

命令 选项参数 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称

选项参数说明

选项 功能
-a 归档拷贝
-v 显示复制过程

删除hadoop中的wcinput和wcoutput用来测试

ruby 复制代码
[muyi@hadoop103 hadoop-3.1.3]$ rm -rf wcinput/ wcoutput/
ruby 复制代码
[muyi@hadoop102 module]$ rsync -av hadoop-3.1.3/ muyi@hadoop103:/opt/module/hadoop-3.1.3
muyi@hadoop103's password: 

xsync集群分发脚本

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

需求分析:

  • rsync命令原始拷贝

    ruby 复制代码
    rsync -av /opt/module muyi@hadoop103:/opt
  • 期望脚本:

    xsync 要同步的文件名称

  • 期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径) [muyi@hadoop102 module] <math xmlns="http://www.w3.org/1998/Math/MathML"> e c h o echo </math>echoPATH /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/muyi/.local/bin:/home/muyi/bin:/opt/module/jdk1.8.0_212/bin:/opt/module/jdk1.8.0_212/bin:/opt/module/hadoop-3.1.3/bin:/opt/module/hadoop-3.1.3/sbin [muyi@hadoop102 module]$

  • 脚本实现

    • 在/home/muyi/bin目录下创建xsync文件
    ruby 复制代码
    [muyi@hadoop102 ~]$ cd /home/muyi/bin
    -bash: cd: /home/muyi/bin: 没有那个文件或目录
    [muyi@hadoop102 ~]$ mkdir bin
    [muyi@hadoop102 ~]$ cd bin
    [muyi@hadoop102 bin]$ vim xsync
    • 在该文件中编写如下代码
    bash 复制代码
    if [ $# -lt 1 ]
    then
        echo Not Enough Arguement!
        exit;
    fi
    
    #2. 遍历集群所有机器
    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
    ruby 复制代码
    [muyi@hadoop102 bin]$ ll
    总用量 4
    -rw-rw-r--. 1 muyi muyi 703 11月 10 10:28 xsync
    [muyi@hadoop102 bin]$

    可以看到当前文件没有执行权限

    ruby 复制代码
    [muyi@hadoop102 bin]$ chmod 777 xsync 
    [muyi@hadoop102 bin]$ ll
    总用量 4
    -rwxrwxrwx. 1 muyi muyi 703 11月 10 10:28 xsync
  • 同步bin目录

    vbnet 复制代码
    [muyi@hadoop102 ~]$ xsync bin/
    ==================== hadoop102 ====================
    The authenticity of host 'hadoop102 (192.168.10.102)' can't be established.
    ECDSA key fingerprint is SHA256:OPCXbzuiPqHyAbQAqf/7fSB13u8/u7Vs9z5csAVV6VU.
    ECDSA key fingerprint is MD5:8e:98:30:6b:26:79:d9:16:19:d5:17:b9:4e:80:62:98.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'hadoop102,192.168.10.102' (ECDSA) to the list of known hosts.
    muyi@hadoop102's password: 
    muyi@hadoop102's password: 
    sending incremental file list
    
    sent 88 bytes  received 17 bytes  19.09 bytes/sec
    total size is 704  speedup is 6.70
    ==================== hadoop103 ====================
    muyi@hadoop103's password: 
    muyi@hadoop103's password: 
    sending incremental file list
    bin/
    bin/xsync
    
    sent 838 bytes  received 39 bytes  194.89 bytes/sec
    total size is 704  speedup is 0.80
    ==================== hadoop104 ====================
    muyi@hadoop104's password: 
    muyi@hadoop104's password: 
    sending incremental file list
    bin/
    bin/xsync
    
    sent 838 bytes  received 39 bytes  250.57 bytes/sec
    total size is 704  speedup is 0.80
    [muyi@hadoop102 ~]$ 
  • 查看另外两台虚拟机是否已经同步

  • 分发之前配置的环境变量
ruby 复制代码
[muyi@hadoop102 ~]$ xsync /etc/profile.d/my_env.sh

但是在这出现了权限问题,被拒绝了,那么加sudo执行呢?

ruby 复制代码
[muyi@hadoop102 ~]$ sudo xsync /etc/profile.d/my_env.sh 
sudo: xsync:找不到命令
[muyi@hadoop102 ~]$ 

很明显,也是不行的,那么我们就需要在xsync前加上路径才可以!!!

重启一下环境变量使其生效

相关推荐
清平乐的技术专栏5 小时前
Hive SQL 查询所有函数
hive·hadoop·sql
节点。csn7 小时前
Hadoop yarn安装
大数据·hadoop·分布式
不惑_7 小时前
小白入门 · 腾讯云轻量服务器部署 Hadoop 3.3.6
服务器·hadoop·腾讯云
csding117 小时前
写入hive metastore报问题Permission denied: user=hadoop,inode=“/user/hive”
数据仓库·hive·hadoop
NiNg_1_2348 小时前
基于Hadoop的数据清洗
大数据·hadoop·分布式
筒栗子12 小时前
复习打卡大数据篇——Hadoop HDFS 01
大数据·hadoop·hdfs
谷莠子90514 小时前
hadoop实验之创业有感
hadoop·docker·团队开发
lucky_syq1 天前
Hive与HBase的区别有哪些
hive·hadoop·hbase
中东大鹅1 天前
分布式数据存储基础与HDFS操作实践
大数据·linux·hadoop·分布式·hbase
zybishe1 天前
免费送源码:Java+ssm++MVC+HTML+CSS+MySQL springboot 社区医院信息管理系统的设计与实现 计算机毕业设计原创定制
java·hadoop·sql·zookeeper·html·json·mvc