• 数据挖掘实验:使用 Hadoop 实现 WordCount 应用


    一、实验内容

    使用 Hadoop 实现WordCount 应用。

    WordCount 是一个最简单的分布式应用实例,主要功能是统计输入目录中所有单词出现的总次数,如文本文件中有如下内容:

    Hello world

    则统计结果应为:

    Hello 1

    world 1

    WordCount 可以使用多种方式实现,本次实验内容选择使用 Hadoop 实现 WordCount 程序,并完成对应实验报告

    二、平台及版本

    • Windows10
    • JDK1.8.0_192
    • Hadoop2.7.3

    三、实验原理

    3.1 安装 Java1.8,并配置环境变量

    路径:C:\Program Files\Java\jdk1.8.0_192

    环境变量:JAVA_HOME,值:C:\Program Files\Java\jdk1.8.0_192

    在这里插入图片描述

    3.2 安装Hadoop2.7.3

    1. hadoop-2.7.3下载hadoop-2.7.3.tar.gz,解压后放到C盘根目录下:

    在这里插入图片描述

    1. 原版的Hadoop不支持Windows系统,我们需要修改一些配置方便在Windows上运行,需要从网上搜索下载hadoop对应版本的windows运行包hadooponwindows-master.zip()。解压后,复制解压开的bin文件和etc文件到hadoop-2.7.3文件中,并替换原有的bin和etc文件。

    2. 配置Java环境变量:

      并在Path系统变量中加上:%JAVA_HOME%\bin;

    3. 配置Hadoop环境变量:

      并在Path系统变量中加上:%HADOOP_HOME%\bin;

    4. 使用编辑器打开C:\hadoop-2.7.3\etc\hadoop\hadoop-env.cmd,找到set JAVA_HOME,将等号右边的值改成自己Java jdk的路径(如果路径中有Program Files,则将Program Files改为 PROGRA~1)。

    5. 配置好上面所有操作后,win+R 输入cmd 打开命令提示符,然后输入hadoop version,按回车,如果出现如图所示结果,则说明安装成功:

    3.3 Hadoop核心配置文件

    在hadoop-2.7.3根目录下新建data文件夹和tmp文件夹,再在data文件夹里面新建datanote和namenote文件夹:

    在hadoop-2.7.3\etc\hadoop中找到以下几个文件用文本编辑器打开。

    1. 打开 hadoop-2.7.3/etc/hadoop/core-site.xml, 复制下面内容粘贴到最后并保存:

      
          
              fs.defaultFS
              hdfs://localhost:9000
          
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    2. 打开hadoop-2.7.3/etc/hadoop/mapred-site.xml, 复制下面内容粘贴到最后并保存:

      
          
             mapreduce.framework.name
             yarn
          
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    3. 打开hadoop-2.7.3/etc/hadoop/hdfs-site.xml, 复制下面内容粘贴到最后并保存:

      
       
              dfs.replication
              1
          
          
              dfs.namenode.name.dir
              file:/C:/hadoop-2.7.3/data/namenode
          
          
              dfs.datanode.data.dir
              file:/C:/hadoop-2.7.3/data/datanode
          
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
    4. 打开hadoop-2.7.3/etc/hadoop/yarn-site.xml,复制下面内容粘贴到最后并保存:

      
          
             yarn.nodemanager.aux-services
             mapreduce_shuffle
          
          
             yarn.nodemanager.aux-services.mapreduce.shuffle.class
             org.apache.hadoop.mapred.ShuffleHandler
          
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10

    从C:\hadoop-2.7.3\bin下拷贝hadoop.dll到 C:\Windows\System32 ,不然在window平台使用MapReduce测试时报错:

    3.4 启动Hadoop服务

    到C:\hadoop-2.7.3\bin下,按下Win+R进入命令行窗口,输入hdfs namenode -format,执行结果如下图所示:

    格式化之后,namenode文件夹里会自动生成一个current文件,说明格式化成功:

    到C:\hadoop-2.7.3\sbin下,按下Win+R进入命令行窗口,输入start-all,启动Hadoop集群

    出现下面四个窗口表示启动Hadoop集群成功:

    在同命令行窗口下输入start-all(或运行start-all.cmd),启动Hadoop服务,等待他启动完成。

    完成之后,输入jps,可以查看运行的所有服务:

    访问http://localhost:50070,这是Hadoop的管理页面:

    在这里插入图片描述

    访问http://localhost:8088,这是yarn的Web界面:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nKm4aKoZ-1663553603228)(C:\Users\81228\AppData\Roaming\Typora\typora-user-images\image-20220917192604677.png)]

    在同命令行窗口下输入stop-all(或运行stop-all.cmd),关闭Hadoop服务。

    四、WordCount实现

    到C:\hadoop-2.7.3\sbin下,按下Win+R进入命令行窗口,输入start-all(或运行start-all.cmd),启动Hadoop服务。

    1. 按Win+R输入cmd打开命令行窗口,键入hadoop fs -mkdir /wordcount命令,在hdfs中创建一个wordcount文件夹。

      可以在http://localhost:8088/中查看。

    2. 键入hadoop fs -mkdir /wordcount/input命令,在wordcount文件夹下创建input文件夹。

    3. 再次键入hdfs dfs -ls /wordcount命令,显示wordcount文件夹里的内容:

    1. 键入hadoop fs -put C:/Users/81228/Desktop/input.txt /wordcount/input命令,将桌面的input.txt放入hdfs中的input内。

    2. 键入hdfs dfs -ls /wordcount/input命令,显示wordcount/input文件夹里的内容,可以看到input.txt已经在input中:

    3. 键入hadoop dfs -cat /wordcount/input/input.txt命令,查看上传文件中的内容:

      这是taylor swift的歌——《Love Story》的歌词 😃

    4. 键入hadoop jar C:/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /wordcount/input/input.txt /wordcount/output命令,运行C:/hadoop-2.7.3/share/hadoop/mapreduce文件夹中hadoop-mapreduce-examples-2.7.3.jar这个Java程序,调用wordcount方法,输入为/wordcount/input/input.txt,输出结果存储在/wordcount/output里。以下是运行细节:

      报错信息:Diagnostics: Failed to setup local dir /tmp/hadoop-81228/nm-local-dir, which was marked as good.

      解决方法:使用管理员身份命令行启动Hadoop集群,然后使用普通用户身份命令行提交作业。

    5. 以管理员身份打开命令行窗口,cd定位到C:\hadoop-2.7.3\sbin下,再次启动Hadoop集群:

    6. 再次运行7中的命令,可以看到,成功运行:

    7. 键入hdfs dfs -ls /wordcount命令,显示wordcount文件夹里的内容,可以看到output文件夹:

    8. 键入hadoop dfs -cat /wordcount/output命令,output文件夹下有两个文件:

      在工作的顺利完成,MapReduce的运行时创建的输出目录中的文件_SUCCESS。

    9. 键入hadoop dfs -cat /wordcount/output/part-r-00000命令,查看part-r-00000文件,里面就是我们要的结果:

      完整的MapReduce结果如下所示:

    'Cause  1
    And     8
    Baby    4
    Begging 1
    But     1
    Cause   1
    Don't   1
    Escape  1
    Go      1
    He      1
    I       18
    I'll    4
    I'm     1
    I've    1
    Is      1
    It's    4
    Juliet  3
    Little  1
    Marry   1
    My      1
    Oh      4
    On      1
    Romeo   6
    See     1
    So      2
    That    1
    They're 1
    This    1
    We      2
    When    1
    Wondering       1
    You'll  2
    a       9
    afraid  1
    air     1
    all     3
    alone   4
    and     5
    around  1
    away    2
    balcony 1
    ball    1
    be      10
    been    1
    begging 1
    both    2
    but     2
    can     2
    cause   1
    close   2
    come    1
    coming  1
    crowd   1
    crying  1
    dad     1
    daddy   2
    dead    1
    did     1
    difficult       1
    do      2
    don't   3
    dress   1
    ever    1
    everything      1
    eyes    2
    fading  1
    faith   1
    feel    1
    feeling 1
    first   2
    flashback       1
    for     2
    from    2
    garden  1
    go      2
    got     1
    gowns   1
    ground  1
    have    1
    head    1
    hello   1
    how     1
    if      2
    in      3
    is      3
    it      1
    it's    1
    just    4
    keep    2
    knelt   1
    knew    1
    know    3
    left    2
    letter  1
    lights  1
    little  1
    love    6
    make    2
    me      7
    mess    1
    met     1
    my      4
    never   2
    of      3
    oh      7
    on      2
    out     4
    outskirts       1
    party   1
    pebbles 1
    pick    1
    please  2
    prince  2
    princess        2
    pulled  1
    quiet   1
    real    1
    really  1
    ring    1
    run     2
    said    6
    save    2
    saw     2
    say     5
    scarlet 1
    see     3
    sneak   1
    so      1
    somewhere       2
    staircase       1
    standing        1
    starts  1
    stay    2
    story   4
    summer  1
    take    2
    talked  1
    tell    1
    that's  1
    the     13
    there   1
    there's 2
    they    1
    think   1
    this    3
    through 1
    throwing        1
    tired   1
    to      11
    town    2
    trying  1
    waiting 4
    was     4
    way     1
    we      3
    we'll   1
    we're   1
    were    7
    what    1
    when    2
    while   1
    white   1
    yes     4
    you     16
    you'll  1
    young   2
    your    3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
  • 相关阅读:
    learning vim
    【C++】匿名对象 ③ ( 函数返回值为对象值时 匿名对象 的 拷贝构造函数 与 析构函数 调用情况分析 )
    从实际出发⭐《G1、JDK17、Flux性能调优》⭐
    深度学习——卷积神经网络压缩方法总结(等待补充)
    旅游管理系统-JAVA【数据库设计、源码、开题报告】
    从0到1配置TensorRT环境
    你有多了解Shiro认证-SSM?
    计算机组成原理知识点总结——第二章数据的表示和运算
    【算法|动态规划No.32 | 完全背包问题】完全背包模板题
    第十三届蓝桥杯省赛 C++ C 组 E 题、Python B组 D题、PythonC组 D 题—— 数位排序(AC)
  • 原文地址:https://blog.csdn.net/ProgramNovice/article/details/126928311