MapReduce分布式计算

MapReduce计算的数据准备

对 hdfs 具体操作细节请参考另一篇博文

在桌面新建一个 testinput.txt 文本

touch /home/hadoop/桌面/testinput.txt		

启动 hadoop:

cd /usr/local/hadoop
./sbin/start-dfs.sh
jps

创建 hdfs 虚拟文件 input1 和 input2:

cd /usr/local/hadoop
./bin/hdfs dfs -mkdir -p /user/hadoop/input1
./bin/hdfs dfs -mkdir -p /user/hadoop/input2
./bin/hdfs dfs -ls			# 查看hdfs下的文件目录

将桌面文件 testinput.txt 文件上传至 hdfs 的 input1 文件夹中:

./bin/hdfs dfs -put /home/hadoop/桌面/testinput.txt input1

将 etc/hadoop 下的所有 xml 文件上传至 HDFS 的 input2 文件夹中:

./bin/hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input2

基于MapReduce的圆周率计算

进入 share/hadoop/mapreduce 文件夹,找到 hadoop-mapreduce-examples-3.2.0.jar :

cd /usr/local/hadoop/share/hadoop/mapreduce

使用 Hadoop 自带例子 pi 计算圆周率:

cd /usr/local/hadoop
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar pi 50 50		# 注意修改为自己的版本号

50是运行50次map任务
100是每个map任务投掷次数,所以总投掷次数是50×100=5000

实现的原理


MapReduce 的 Wordcount 计算

创建 hdfs 虚拟文件 output1(其实本步可以省略):

cd /usr/local/hadoop
./bin/hdfs dfs -mkdir -p /user/hadoop/output1

使用 MapReduce 的 wordcount 统计 input1 目录中的文本英文单词数:

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar wordcount /user/hadoop/input1 /user/hadoop/output1/wordcount		# 主要修改为自己的版本号

查看 output1/wordcount 目录下的文件:

./bin/hdfs dfs -ls output1/wordcount

查看统计结果:

./bin/hdfs dfs -cat output1/wordcount/part-r-00000

该实验遇到的报错:

/input1 路径不存在,这个摸鱼怪忘加 /user/hadoop/ ,在这里犯二了;该路径应是建立文件时的完整路径😂😂

/user/hadoop/output1 文件已经存在,wordcount 程序会根据输出数据路径新建文件(所以这也是上面提到可以省略建立虚拟文件 output1),重新指定路径为:/user/hadoop/output1/wordcount


MapReduce的正则表达式计算

创建 hdfs 虚拟文件 output2(同样此步也可以省略):

cd /usr/local/hadoop
./bin/hdfs dfs -mkdir -p /user/hadoop/output2

使用 MapReduce 的 grep 程序统计 input2 目录中的 XML 文本中满足’dfs[a-z.]+ ’匹配规则的字符:

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep /user/hadoop/input2 /user/hadoop/output2/count 'dfs[a-z.]+'	# 主要修改为自己的版本号

查看统计结果:

./bin/hdfs dfs -cat output2/count/part-r-00000

至此,实验内容已经完成了,主要用到了 MapReduce 自带的 pi、wordcount、grep例子

如果还有什么不足,还希望大佬指正!!!

参考文章:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值