• Hadoop学习笔记:运行wordcount对文件字符串进行统计案例


    文/朱季谦

    我最近使用四台Centos虚拟机搭建了一套分布式hadoop环境,简单模拟了线上上的hadoop真实分布式集群,主要用于业余学习大数据相关体系。

    其中,一台服务器作为NameNode,一台作为Secondary NameNode,剩下两台当做DataNodes节点服务器,类似下面这样一个架构——

    image

    NameNodeSecondary NameNodeDataNodes
    master1(192.168.200.111)
    master2(192.168.200.112)
    slave1(192.168.200.117)
    slave2(192.168.200.115)

    接下来,就是开始通过hadoop自带的wordcount来统计一下文件当中的字符数量。

    启动hadoop集群后,在集群可用情况下,按照以下步骤:
    一、进入到hadoop安装目录,创建一个测试文件example.txt

    我的安装目录是:/opt/hadoop/app/hadoop/hadoop-2.7.5

    1. [root@192 hadoop-2.7.5]# pwd
    2. /opt/hadoop/app/hadoop/hadoop-2.7.5

    新建一个example.txt,并随机写入一些字符:

    1. aaa
    2. bbb
    3. cccc
    4. dedef
    5. dedf
    6. dedf
    7. ytrytrgtrcdscdscdsc
    8. dedaxa
    9. cdsvfbgf
    10. uyiuyi
    11. ss
    12. xaxaxaxa

    接着,在hdfs文件系统上新建一个input文件夹,用来存放example.txt文件——

    [root@192 hadoop-2.7.5]# hdfs dfs -mkdir /input
    

    然后,将example.txt复制到hdfs系统上的input目录下——

    [root@192 hadoop-2.7.5]# hdfs dfs -put example.txt /input
    

    检查一下,可以看到,example.txt文件已经在input目录底下了——

    1. [root@192 hadoop-2.7.5]# hdfs dfs -ls /input
    2. Found 1 items
    3. -rw-r--r-- 3 root supergroup 84 2021-10-20 12:43 /input/example.txt

    这些准备工作做好后,就可以开始使用hadoop自带的jar包来统计文件example.txt当中各字符的数量了。

    二、运行wordcount对文件字符进行统计

    直接在NameNode节点对应的服务器上执行——

    [root@192 hadoop-2.7.5]# hadoop jar /opt/hadoop/app/hadoop/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar  wordcount /input /output
    

    这行指令的大概意思是,分布式计算统计input目录底下的文件中的字符数量,将统计结果reduce到output当中,故而,最后若执行没问题,可以在output目录下获取到统计结果记录。

    我第一次执行时,发生了一个异常,即执行完后,日志运行到INFO mapreduce.Job: Running job: job_1631618032849_0002这一行时,就直接卡在了这里,没有任何动静了——

    1. [hadoop@192 bin]$ hadoop jar /opt/hadoop/app/hadoop/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount /input /output
    2. 21/10/20 10:43:29 INFO client.RMProxy: Connecting to ResourceManager at master1/192.168.200.111:8032
    3. 21/10/20 10:43:30 INFO input.FileInputFormat: Total input paths to process : 1
    4. 21/10/20 10:43:30 INFO mapreduce.JobSubmitter: number of splits:1
    5. 21/10/20 10:43:31 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1631618032849_0002
    6. 21/10/20 10:43:31 INFO impl.YarnClientImpl: Submitted application application_1631618032849_0002
    7. 21/10/20 10:43:31 INFO mapreduce.Job: The url to track the job: http://master1:8088/proxy/application_1631618032849_0002/
    8. 21/10/20 10:43:31 INFO mapreduce.Job: Running job: job_1631618032849_0002

    百度了一番后,根据一些思路,最后将mapred-site.xml最开始的配置由

    1. <?xml version="1.0"?>
    2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    3. <configuration>
    4. <property>
    5. <name>mapreduce.framework.name</name>
    6. <value>yarn</value>
    7. </property>
    8. </configuration>

    改成这里——

    1. <configuration>
    2. <property>
    3. <name>mapreduce.job.tracker</name>
    4. <value>hdfs://master1:8001</value>
    5. <final>true</final>
    6. </property>
    7. </configuration>

    接着,重启了hadoop集群,就正常了,日志信息就没有卡顿,而是一步执行完成,打印以下的日志记录——

    image

    image


    过程如果没有出现问题,就可以到最后一步,查看统计完的结果。

    三、获取统计结果

    以上步骤执行完后,直接输入指令查看output目录下的信息,可以看到,里面生成了两个文件——

    1. [root@192 hadoop-2.7.5]# hdfs dfs -ls /output
    2. Found 2 items
    3. -rw-r--r-- 3 root supergroup 0 2021-10-20 12:47 /output/_SUCCESS
    4. -rw-r--r-- 3 root supergroup 101 2021-10-20 12:47 /output/part-r-00000

    part-r-00000文件是存放统计结果的,我们查看一下——

    1. [root@192 hadoop-2.7.5]# hdfs dfs -cat /output/part-r-00000
    2. aaa 1
    3. bbb 1
    4. cccc 1
    5. cdsvfbgf 1
    6. dedaxa 1
    7. dedef 1
    8. dedf 2
    9. ss 1
    10. uyiuyi 1
    11. xaxaxaxa 1
    12. ytrytrgtrcdscdscdsc 1

    对比前面的example.txt文件,可以看到,当中dedf字符串是有两个,其他都是1个,hadoop统计结果也确实如此。

    以上,便是初步认识hadoop的一个小案例,接下来,我会在学习过程当中把值得分享的经验都总结下来。

  • 相关阅读:
    基于强化学习的空战辅助决策环境搭建(2D)
    【力扣刷题】Day30——DP专题
    SYS/BIOS 开发教程: 创建自定义平台
    967亿销售额!博世解码智能汽车新蓝图
    flink 事件处理 CEP
    基于webapi的websocket聊天室(四)
    云表:MES系统是工业4.0数字化转型的核心
    在UE4(Unreal Engine4)中安装 Quixel Bridge Megascans bridget插件
    【学习笔记】NOIP信心赛
    记一次惊险的CDH6.3.2集群断电后重启的过程
  • 原文地址:https://blog.csdn.net/weixin_40706420/article/details/134544806