大数据系列(二)hadoop实现最基础word count

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zl592886931/article/details/89848752

运行WorldCount例子

hadoop默认的样例jar在下面的位置

/你的hadoop位置/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.2.jar
在这里插入图片描述

我们先来创建数据文件目录以及结果输出目录:

hadoop fs -mkdir -p /data/wordcount 
hadoop fs -mkdir -p /output/

我们可以通过hadoop fs -ls / 命令来查看我们创建的目录

然后我们创建一个wordcount文件,并在里面输入一些内容

vi wordcount
输入如下内容:
test hadoop
hello hadoop
hi hdfs
hadoop hdfs
test yarn
hi yarn

我们将文件放入hdfs里

hadoop fs -put ./wordcount /data/wordcount

然后开始执行wordcount(最终结果输出在hdfs中的/data/wordcountresult文件夹内):

hadoop jar hadoop-mapreduce-examples-3.1.2.jar wordcount /data/wordcount /output/wordcountresult

我们来看下结果,执行下面的命令:

hadoop fs -text /output/wordcountresult/part-r-00000

我们看到结果:
在这里插入图片描述

扫描二维码关注公众号,回复: 6171919 查看本文章

顺便我们看下我们hadoop上面的任务截图:
在这里插入图片描述

split和block的区别和联系

当我们使用put将文件存储在hdfs中,文件会根据block的值进行分块存储,然后我们使用MapReduce进行计算时候,可以设定map数量,而map又与split相关,那么他们到底有什么关联呢?

  1. split是MapReduce里的概念,是切片的概念,split是逻辑切片 ;而block是hdfs中切块的大小,block是物理切块;
  2. split的大小在默认的情况下和HDFS的block切块大小一致,为了是MapReduce处理的时候减少由于split和block之间大小不一致,可能会完成多余的网络之间的传输。

可以通过配置文件进行设置:

--minsize 默认大小为1mapreduce.input.fileinputformat.split.minsize  

--maxsize 默认大小为Long.MAXValue mapreduce.input.fileinputformat.split.maxsize

在mapreduce的FileInputFormat类中有个getSplits() 方法对文件进行split,算法如下:

Math.max(minSize,Math.min(maxSize, blockSize));其中maxSize是取得longValueMax的值

1.如果blockSize小于maxSize && blockSize 大于 minSize之间,那么split就是blockSize;

2.如果blockSize小于maxSize && blockSize 小于 minSize之间,那么split就是minSize;

3.如果blockSize大于maxSize && blockSize 大于 minSize之间,那么split就是maxSize;

猜你喜欢

转载自blog.csdn.net/zl592886931/article/details/89848752