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:

    • jar 是 hadoop 命令的一个子命令,用于运行包含 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 e c h o echo 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前加上路径才可以!!!

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

相关推荐
爱吃火鸡面呀2 小时前
DataX 实战:使用 HDFS Reader 读取 Hive ORC 表并输出到 Stream
hive·hadoop·hdfs
yumgpkpm3 小时前
CDP 7.3.1(Cloudera Runtime 7.3.1)VS Acceldata ODP 3.3.6.4 核心引擎详细版本对比
大数据·hive·hadoop·postgresql·zookeeper·spark·hbase
计算机毕业编程指导师4 小时前
【计算机大数据毕业设计选题】基于Hadoop+Spark的人工智能社交媒体情绪数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·人工智能·hadoop·计算机·毕业设计·课程设计·社交媒体
yumgpkpm4 小时前
(CDH 7)CDP Private Cloud Base 7.3.1 → Acceldata ODP 3.3.6.4 引擎迁移风险评估表
服务器·人工智能·hadoop·python·华为·zookeeper·hbase
计算机毕业编程指导师4 小时前
【计算机毕设】基于Hadoop的人口统计特征与肥胖风险关联分析的数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·数据分析·课程设计·肥胖风险
计算机毕业编程指导师4 小时前
【计算机毕业设计选题】基于Hadoop+Spark的乳腺癌数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
hadoop·python·spark·毕业设计·课程设计·乳腺癌·计算机毕设
yumgpkpm10 小时前
Acceldata ODP 3.3.6.4 vs CDP Private Cloud Base 7.3.2 对比
大数据·运维·服务器·hadoop·华为·zookeeper·hbase
yumgpkpm1 天前
Acceldata ODP(Open Data Platform)3.3.6.4(RHEL9)保姆级完整安装手册
大数据·人工智能·hive·hadoop·kafka·hbase·cloudera
sunxunyong1 天前
hs2偶发连接失败问题处理
hadoop
计算机毕业编程指导师2 天前
大数据毕设选题推荐:基于Hadoop+Spark全球碳排放减排策略分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·spark·毕业设计·碳排放减排