【hadoop】3.本地运行模式

简介

从本章节你能够学习到:apache

  1. hadoop的三大运行模式的简单介绍。
  2. 本地模式下的两个经典案例。

一、hadoop的运行模式

(1)本地模式(local(standaolne) mode):不须要启用任何守护进程,全部程序都在同一个JVM上执行。在独立模式下测试和调试MapReduce程序都很方便,解压以后直接能够运行。很是适合咱们进行测试和开发使用。分布式

(2)伪分布式模式(Pseudo-Distributed Mode):等同于彻底分布式,但全部的守护进程只运行在一台机器上,经过启动不一样的守护进程模拟集群节点。oop

(3)彻底分布式模式(Full-Distributed Mode):Hadoop的守护进程运行在多台机器上(集群)。学习

二、本地模式运行hadoop案例

2.1 grep匹配案例

grep案例是用来进行单词匹配的案例。咱们按照官方教程来走一遍具体流程。测试

一、在hadoop-2.7.2文件下面建立一个input文件夹,并将hadoop的xml配置文件复制到里面:this

# cd /opt/module/hadoop-2.7.2
# mkdir input
# cp etc/hadoop/*.xml input/

二、能够看到input目录下拥有差很少5个xml文件,如今咱们想要知道在这些文件夹中究竟有多少个以dfs开头并至少还有一个其余的字母的单词,例如dfsu。只需执行官方为咱们提供的参考jar包结合hadoop命令便可:调试

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'

其中:code

  • hadoop是bin/hadoop,因为咱们以前配置的环境变量,能够直接使用
  • jar后跟指定须要运行的jar包,grep在官方的share案例文件夹下面。
  • grep传入参数,告诉jar包中程序运行参数为grep,使用grep模块计算
  • input为输入文件夹的信息
  • output为输出结果的文件夹
  • 'dfs[a-z.]+' 为grep所需的正则匹配参数

三、运行以后,咱们会发如今当前目录下生成了一个output文件夹,进入后发现有2个文件其中一个大小为0,表名运行是否正确,你会看到其名字为'_SUCCESS',另一个,就是咱们想要的输出结果了。查看输出结果:orm

# cat part-r-00000

输出xml

1  dfsadmin

即匹配结果单词有'dfsadmin',匹配次数为1次。

2.2 wordcount单词统计案例

接下来咱们在测试一个简单的统计单词的案例,和grep案例同样,咱们先构建一个输入文件夹,往里面放多个文件,随意的放入各类单词信息。

一、构建输入

# cd /opt/module/hadoop-2.7.2
# mkdir winput
# cd winput
# touch 1.txt
# touch 2.doc
# touch 3.xml

别忘了往文件里随便写些单词(有空格分离)

二、执行命令

# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount winput/ woutput
  • winput指定咱们须要统计的输入文件夹的路径
  • woutput则是输出结果的位置

三、执行完成以后,一样来到输出结果的文件夹woutput,查看统计结果:

beautiful	1
best	1
for	1
good	1
haha	3
is	2
item	1
learn.	1
my	1
place.	1
this	2
to	1

能够看到咱们写入的单词的统计信息。

经过以上两个例子,相信你得到了很多经验,好比

  1. 输入文件夹和输出文件夹能够随意命名,可是在运行实例的时候,要确保output处指定的文件夹不存在,不然会出错。
  2. hadoop-mapreduce-examples-2.7.2.jar中包含了很多的功能案例,经过传入不一样的参数提供不一样的服务,例如wordcount等。
  3. 确保输入路径不包含多级目录,也就是说,多个文件必须保持只在input一级目录下才行,不然也会出错。难道hadoop不支持深度遍历,固然是能够的,只不过咱们须要添加参数而已,在wordcount以后添加参数-Dmapreduce.input.fileinputformat.input.dir.recursive=true便可。

-Dmapreduce.input.fileinputformat.input.dir.recursive=true只在2.0以后生效。

参考

  1. http://hadoop.apache.org/
  2. https://archive.apache.org/dist/hadoop/common/hadoop-2.7.2/
  3. http://hadoop.apache.org/docs/r2.7.2/
相关文章
相关标签/搜索