当前位置: 首页 > news >正文

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

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

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

aaa
bbb
cccc
dedef
dedf
dedf
ytrytrgtrcdscdscdsc
dedaxa
cdsvfbgf
uyiuyi
ss
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目录底下了——

[root@192 hadoop-2.7.5]# hdfs dfs -ls /input
Found 1 items
-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这一行时,就直接卡在了这里,没有任何动静了——

[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
21/10/20 10:43:29 INFO client.RMProxy: Connecting to ResourceManager at master1/192.168.200.111:8032
21/10/20 10:43:30 INFO input.FileInputFormat: Total input paths to process : 1
21/10/20 10:43:30 INFO mapreduce.JobSubmitter: number of splits:1
21/10/20 10:43:31 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1631618032849_0002
21/10/20 10:43:31 INFO impl.YarnClientImpl: Submitted application application_1631618032849_0002
21/10/20 10:43:31 INFO mapreduce.Job: The url to track the job: http://master1:8088/proxy/application_1631618032849_0002/
21/10/20 10:43:31 INFO mapreduce.Job: Running job: job_1631618032849_0002

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

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>

改成这里——

<configuration><property><name>mapreduce.job.tracker</name><value>hdfs://master1:8001</value><final>true</final></property>
</configuration>

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

image

image


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

三、获取统计结果

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

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

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

[root@192 hadoop-2.7.5]# hdfs dfs -cat /output/part-r-00000
aaa	1
bbb	1
cccc	1
cdsvfbgf	1
dedaxa	1
dedef	1
dedf	2
ss	1
uyiuyi	1
xaxaxaxa	1
ytrytrgtrcdscdscdsc	1

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

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

相关文章:

  • mac电脑系统活动监控:iStat Menus 中文 for Mac
  • 数据结构:顺序表
  • Java对象逃逸
  • 【学生成绩管理】数据库示例数据(MySQL代码)
  • 第十三章 : Spring Boot 日志记录脱敏
  • 【Python 训练营】N_3 生成互不相同且不重复的数字
  • 核药供应链创新:远大医药策略与明道云实践
  • 认识前端包常用包管理工具(npm、cnpm、pnpm、nvm、yarn)
  • 家用小型洗衣机哪款性价比高?口碑最好迷你洗衣机排行榜
  • 最新AIGC创作系统ChatGPT网站源码,Midjourney绘画系统,支持GPT-4图片对话能力(上传图片并识图理解对话),支持DALL-E3文生图
  • gitlab 12升级14(解决各种报错问题)
  • 数字图像处理(实践篇)一 将图像中的指定目标用bBox框起来吧!
  • Maven项目下详细的SSM整合流程
  • 喜报|AIRLOOK荣获“创客北京2023”创新创业大赛企业组三等奖
  • 接口测试基本流程
  • ES6指北【2】—— 箭头函数
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 30天自制操作系统-2
  • 5、React组件事件详解
  • Apache Pulsar 2.1 重磅发布
  • const let
  • Hibernate最全面试题
  • Java读取Properties文件的六种方法
  • JS变量作用域
  • Linux快速复制或删除大量小文件
  • PHP面试之三:MySQL数据库
  • Python3爬取英雄联盟英雄皮肤大图
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • vue-cli3搭建项目
  • 测试开发系类之接口自动化测试
  • 创建一个Struts2项目maven 方式
  • 如何实现 font-size 的响应式
  • 时间复杂度与空间复杂度分析
  • 算法---两个栈实现一个队列
  • 找一份好的前端工作,起点很重要
  • 字符串匹配基础上
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​油烟净化器电源安全,保障健康餐饮生活
  • # Panda3d 碰撞检测系统介绍
  • # 数据结构
  • #14vue3生成表单并跳转到外部地址的方式
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (2022 CVPR) Unbiased Teacher v2
  • (3)nginx 配置(nginx.conf)
  • (5)STL算法之复制
  • (Python) SOAP Web Service (HTTP POST)
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .gitignore文件—git忽略文件
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .NET Micro Framework 4.2 beta 源码探析
  • .netcore 获取appsettings
  • .NET开发人员必知的八个网站