Hadoop集群(第6期)_WordCount运行详解

2019-03-28 13:16|来源: 网络

相关系列目录:

Hadoop集群安装配置系列(目录) http://www.linuxidc.com/Linux/2012-12/76696.htm

1、MapReduce理论简介

 

1.1 MapReduce编程模型

  MapReduce采用"分而治之"的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果。简单地说,MapReduce就是"任务的分解与结果的汇总"。

  在Hadoop中,用于执行MapReduce任务的机器角色有两个:一个是JobTracker;另一个是TaskTracker,JobTracker是用于调度工作的,TaskTracker是用于执行工作的。一个Hadoop集群中只有一台JobTracker。

  在分布式计算中,MapReduce框架负责处理了并行编程中分布式存储、工作调度、负载均衡、容错均衡、容错处理以及网络通信等复杂问题,把处理过程高度抽象为两个函数:map和reduce,map负责把任务分解成多个任务,reduce负责把分解后多任务处理的结果汇总起来。

  需要注意的是,用MapReduce来处理的数据集(或任务)必须具备这样的特点:待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。

 

1.2 MapReduce处理过程

  在Hadoop中,每个MapReduce任务都被初始化为一个Job,每个Job又可以分为两种阶段:map阶段和reduce阶段。这两个阶段分别用两个函数表示,即map函数和reduce函数。map函数接收一个<key,value>形式的输入,然后同样产生一个<key,value>形式的中间输出,Hadoop函数接收一个如<key,(list of values)>形式的输入,然后对这个value集合进行处理,每个reduce产生0或1个输出,reduce的输出也是<key,value>形式的。

 

image

MapReduce处理大数据集的过程

 

 

2、运行WordCount程序

  单词计数是最简单也是最能体现MapReduce思想的程序之一,可以称为MapReduce版"Hello World",该程序的完整代码可以在Hadoop安装包的"src/examples"目录下找到。单词计数主要完成功能是:统计一系列文本文件中每个单词出现的次数,如下图所示。

 

image

 

2.1 准备工作

  现在以"hadoop"普通用户登录"Master.Hadoop"服务器。

  1)创建本地示例文件

  首先在"/home/hadoop"目录下创建文件夹"file"。

 

image

 

  接着创建两个文本文件file1.txt和file2.txt,使file1.txt内容为"Hello World",而file2.txt的内容为"Hello Hadoop"。

 

image

 

  2)在HDFS上创建输入文件夹

 

image

 

  3)上传本地file中文件到集群的input目录下

 

image

相关问答

更多
  • hadoop fs -mkdir /input 在HDFS中创建input文件目录 hadoop fs -put LICENSE.txt /input 我当前在hadoop的目录下,有个LICENSE.txt的文件,把它放到hdfs的input目录下面 hadoop fs -ls /input 查看文件是否正确传入到/input目录下 hadoop fs -cat /input/LICENSE.txt查看文件内容 执行:hadoop jar hadoop-mapreduce-examples-2.7.1.j ...
  • 运行自带wordcount-Hadoop2的方法   1、在linux系统中,所在目录“/home/kcm”下创建一个文件input   [ubuntu@701~]$ mkdir input   2.在文件夹input中创建两个文本文件file1.txt和file2.txt,file1.txt中内容是“hello word”,file2.txt中内容是“hello hadoop”、“hello mapreduce”(分两行)。   [ubuntu@701~]$ cd input   [ubuntu@701~ ...
  • 你仿照书上写的wordcount代码其实是一个mapreduce程序,其运行在hadoop平台上,按照正常的开发实现步骤,应该现在linux搭建hadoop集群或者伪分布,然后当你在Eclipse里面写了mapreduce程序之后,将你的项目打成jar包之后再hadoop集群里面运行,或者用Eclipse集成hadoop做测试。你这样直接在Eclipse里面写,是没办法运行的,就像你看了Java书在书上有一个helloword程序,然后你照着敲了一遍,然后直接在本机上运行,却忽略了你没装jdk一样,你的he ...
  • 1、在linux系统中,所在目录“/home/kcm”下创建一个文件input [ubuntu@701~]$ mkdir input 2.在文件夹input中创建两个文本文件file1.txt和file2.txt,file1.txt中内容是“hello word”,file2.txt中内容是“hello hadoop”、“hello mapreduce”(分两行)。 [ubuntu@701~]$ cd input [ubuntu@701~]$ vi file1.txt(编辑文件并保存) [ubuntu@70 ...
  • 1、果断看你的后台在master.....log日志文件中的日志输出,它会告诉你原因。 2、学hadoop的时候,配置项和知识点很多,个人遇到的也不一样,但解决问题不变的原则就是出现问题先找日志。只要细心和专业点,都能独立解决点这个问题。
  • MapReduce不支持多线程导入。用自带的工具importtsv+completebulkload批量导入支持多个文件并发导入。
  • 删除已存在的输出文件,或输出到不同的文件。 (我有点好奇你对错误信息的其他解释。) Delete the output file that already exists, or output to a different file. (I'm a little curious what other interpretations of the error message you considered.)
  • 你在vmware上运行吗? 在fisrt关闭防火墙! 尝试service iptables stop或chkconfig iptables off 在hdfs-site.xml添加此配置 dfs.permissions false dfs.permissions.enabled < ...
  • 这可能发生在作业仅检测到本地文件系统的情况下,它使用LocalFileSystem API与本地文件系统中的文件进行交互。 请参考以下链接, 使用MiniDFSCluster单元测试hadoop hdfs着作 这是我们在开发环境中开发的mapreduce / hdfs代码的单元测试选项之一。虽然在hadoop clsuter中部署相同的代码,但输入文件将在HDFS位置。 This probably happens in the scenario where the job only detects the ...
  • 这只是文件hdfs-site.xml中的权限问题 It was just permission problem in the file hdfs-site.xml