WEB开发网
开发学院软件开发Java 用 Hadoop 进行分布式数据处理,第 3 部分: 应用程... 阅读

用 Hadoop 进行分布式数据处理,第 3 部分: 应用程序开发

 2010-08-11 00:00:00 来源:WEB开发网   
核心提示: 清单 3. 使用 Hadoop 流实用工具hadoopjar$HADOOP_HOME/hadoop-流.jar\-inputinputData-outputoutputData-mappermap_exec-reducerreduce_exec清单 3 说明如何在 Hadoop 内使用 流 实用

清单 3. 使用 Hadoop 流实用工具

hadoop jar $HADOOP_HOME/hadoop-流.jar \ 
 -input inputData 
 -output outputData 
 -mapper map_exec 
 -reducer reduce_exec 

清单 3 说明如何在 Hadoop 内使用 流 实用工具,图 3 图形化地显示了如何定义流。请注意这是一个流使用的简单示例。大量的选项可用于制定如何解析数据、制定如何调用图像、为分区器和合成器指定替换图像以及调整其他配置。

图 3. 图形流示例
用 Hadoop 进行分布式数据处理,第 3 部分: 应用程序开发

Ruby 示例

通过已经获得的在 流 实用工具基本理解上的经验,您已经准备编写一个简单的 Ruby map 和 reduce 应用程序并查看如何在 Hadoop 框架中使用过程。虽然此处的示例伴随着规范的 MapReduce 应用程序,但是稍后您将看到其他的应用程序(取决于您将如何用 map 和 reduce 格式实现它们)。

首选是 mapper。此脚本从 stdin 提取文本输入,首先标记它,然后将一系列键值对发送到 stdout。像大多数面向对象的脚本语言一样,这个任务几乎太简单了。如清单 4 中所示的 mapper 脚本(通过一些注释和空白区域可给与其大一点的大小)。此程序使用一个迭代器来从 stdin 中读取一行,同时另一个迭代器将该行分割成单个的标记。使用为 1 的相关值(通过选项卡分隔)将每一个标记(单词)发送到 stdout。

清单 4. Ruby map 脚本(map.rb)

#!/usr/bin/env ruby 
 
# Our input comes from STDIN 
STDIN.each_line do |line| 
 
 # Iterate over the line, splitting the words from the line and emitting 
 # as the word with a count of 1. 
 line.split.each do |word| 
  puts "#{word}\t1" 
 end 
 
end 

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:Hadoop 进行 分布式

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接