Amazon EC2 是一个 Web 服务, 它允许用户请求具有各种资源 (CPU 磁盘 内存等) 的虚拟机器 用户只需按使用的计算时间付费, 其他事情全交给 Amazon 处理 这些实例 (Amazon Machine Image,AMI) 基于 Linux, 可以运行您需要的任何应用程序或软件

Similar documents
雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

使用MapReduce读取XML文件

关于天云趋势 天云趋势由宽带资本和趋势科技共同投资成立于 2010 年 3 月 趋势科技是 Hadoop 的重度使用者 : 2006 年开始使用, 用于处理网页和邮件服务器评级 五个数据中心, 近 1000 个节点, 最大集群约 500 台服务器 日均处理 3.6T 日志数据 亚洲最早, 也是最大的

Java ¿ª·¢ 2.0: Óà Hadoop MapReduce ½øÐдóÊý¾Ý·ÖÎö

三种方法实现Hadoop(MapReduce)全局排序(1)

对于 Hadoop 来说, 在 HDFS 看来, 节点分为 Namenode 和 Datanode, 其中 Namenode 只有一个,Datanode 可以是很多 ; 在 MapReduce 看来, 节点又分为 Jobtracker 和 Tasktracker, 其中 Jobtracker 只有一

Hadoop 集 群 ( 第 6 期 ) WordCount 运 行 详 解 1 MapReduce 理 论 简 介 1.1 MapReduce 编 程 模 型 MapReduce 采 用 分 而 治 之 的 思 想, 把 对 大 规 模 数 据 集 的 操 作, 分 发 给 一 个 主 节 点 管

业 务 与 运 营 Business & Operation (Transform) 加 载 (Load) 至 目 的 端 的 过 程, 该 部 分 在 数 据 挖 掘 和 分 析 过 程 中 为 最 基 础 的 一 部 分 一 个 良 好 的 ETL 系 统 应 该 有 以 下 几 个 功 能 1


SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

白 皮 书 英 特 尔 IT 部 门 实 施 Apache Hadoop* 英 特 尔 分 发 版 软 件 的 最 佳 实 践 目 录 要 点 概 述...1 业 务 挑 战...2 Hadoop* 分 发 版 注 意 事 项...3 Hadoop* 基 础 架 构 注 意 事 项

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

Reducing Client Incidents through Big Data Predictive Analytics

tar -xzf hadoop tar.gz mv hadoop /app 在 Hadoop 目录下创建子目录 在 hadoop 目录下创建 tmp name 和 data 目录 cd /app/hadoop mkdir tmp mkdir

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

编写简单的Mapreduce程序并部署在Hadoop2.2.0上运行

MapReduce

校友会系统白皮书feb_08

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指

Learning Java

2 Java 语 言 程 序 设 计 教 程 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难

程模型,MapReduce 把任务分为 map( 映射 ) 阶段和 reduce( 化简 ) 由于 MapReduce 工作原理的特性, Hadoop 能以并行的方式访问数据, 从而实现快速访问数据 Hbase--HBase 是一个建立在 HDFS 之上, 面向列的 NoSQL 数据库, 用于快速读

《教育信息化前沿》

DocHdl2OnPPMtmpTarget

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

目录 1 本期内容 MapReduce 理论简介 MapReduce 编程模型 MapReduce 处理过程 运行 WordCount 程序 准备工作 运行例子

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

chp6.ppt

Flink快速上手(QuickStart)

本文由筱驀釹贡献

JavaIO.PDF

册子0906


PowerPoint Presentation

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

目录 一 安装配置步骤 虚拟机的准备工作 安装和配置 JDK 环境 配置 SSH 免密码登录 编辑 etc/hosts 文件 配置 hadoop 将 master 上的 Hadoop 安装包拷

目录 1 编译 HADOOOP 搭建环境 安装并设置 maven 以 root 用户使用 yum 安装 svn 以 root 用户使用 yum 安装 autoconf automake libtool cmake..

客户端虚拟机使用说明

六域链联盟 SDChain-Matrix 节点搭建指南 2018/07/26 Version : 1.0.0

untitled

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

2013_6_3.indd

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

IoC容器和Dependency Injection模式.doc

政府機關資訊通報第295期(5月)

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

Java 1 Java String Date

在Fedora上部署Hadoop2.2.0伪分布式平台

三种方法实现Hadoop(MapReduce)全局排序(2)

Azure_s

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

正文.indd

Cloudy computing forEducation

untitled

/ 149 / / / / / 500 1, / / / / / / / / 1,000 3, / / IT 157 / /

untitled

報 告 議 員, 本 局 對 臺 北 市 列 管 的 地 下 加 油 站, 大 部 分 都 已 取 締 完 畢 目 前 只 剩 下 1 處, 我 們 還 在 持 續 觀 察 其 是 否 有 復 業 的 跡 象 臺 北 市 的 地 下 加 油 站 只 剩 下 1 處 而 已? 王 科 長 三 中 :

PowerPoint 簡報

2 Hadoop 实战 1.1 什么是 Hadoop Hadoop 概述 Hadoop 是 Apache 软件基金会旗下的一个开源分布式计算平台 以 Hadoop 分布式文 件 系 统 Hadoop Distributed File System HDFS 和 MapReduce Goo

Chapter 9: Objects and Classes

第3章.doc

附件2

常 见 问 题 SLB 产 品 和 业 务 限 制 SLB 产 品 限 制 SLB 产 品 和 业 务 限 制 限 制 项 普 通 用 户 限 制 描 述 例 外 申 请 方 式 ( 例 外 上 限 ) 创 建 SLB 实 例 的 财 务 限 制 账 户 余 额 大 于 等 于 100 元 现 金

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

Basic System Administration

Acrobat Distiller, Job 3

4.1 AMI MQSeries API AMI MQI AMI / / AMI JavaC C++ AMI / AMI AMI - / /

计算机网络与经济(六).doc

.. 3 N

0 配置 Host MIB 设备 V ( 简体版 ) 0 Update: 2016/1/30

Java的详细介绍

建模与图形思考

深圳市亚可信息技术有限公司 NetWeaver 7.3 EhP1 ABAP on Redhat Enterprise Linux Server 62 for Oracle112 High Availability System Installation Created by


软件概述

目 录 目 录 平 台 概 述 技 术 架 构 技 术 特 点 基 于 统 一 平 台 的 多 产 品 线 支 撑 先 进 性 安 全 性 开 放 性 高 性 能 和

快 速 入 门 (Linux) 概 述 文 档 目 的 本 文 档 介 绍 了 如 何 快 速 创 建 Linux 系 统 实 例 远 程 连 接 实 例 部 署 环 境 等 旨 在 引 导 您 一 站 式 完 成 实 例 的 创 建 登 录 和 快 速 环 境 部 署 云 服 务 器 ECS 实

培 训 机 构 介 绍 中 科 普 开 是 国 内 首 家 致 力 于 IT 新 技 术 领 域 的 领 航 者, 专 注 于 云 计 算 大 数 据 物 联 网 移 动 互 联 网 技 术 的 培 训, 也 是 国 内 第 一 家 开 展 Hadoop 云 计 算 的 培

<4D F736F F D D352DBED6D3F2CDF8D7E9BDA8D3EBB9DCC0EDCFEEC4BFBDCCB3CCD5FDCEC42E646F63>

Microsoft Word - 01.DOC

EJB-Programming-4-cn.doc

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

Bluemix 从概念到应用CN改

IBM

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题

Microsoft Word - A _ doc

Hadoop 手册

Microsoft Word zw

与 改 革 委 员 会 术 产 业 司 调 整, 推 进 相 关 调 控 目 标 制 定 和 政 策 手 段 运 用 机 制 化 ; 统 筹 推 进 战 略 性 新 兴 产 业 发 展, 拟 订 和 实 施 国 家 战 略 性 新 兴 产 业 发 展 规 划, 协 调 相 关 产 业 和 区 域 规

PowerPoint Presentation

大数据分析技术 [13] 1.1 大数据 Big Data [2] IBM 5V Volume Velocity Variety Value Veracity Volume Velocity Variety Value Veracity 表 1 大数据特征表 Tab.1

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之

一种快速获取领域新词语的新方法

附录J:Eclipse教程

岳西职教中心

作 業 系 統 簡 介 光 有 電 腦 硬 體, 會 不 容 易 使 用 必 須 要 有 適 當 的 程 式, 才 方 便 操 作 硬 體 衍 生 作 業 系 統 需 求 : 提 供 方 便 使 用 者 執 行 程 式 平 台 有 效 使 用 各 種 電 腦 硬 體 資 源 Jingo C. Lia

Transcription:

用 Linux 和 Apache Hadoop 进行云计算 IBM Google VMWare 和 Amazon 等公司已经开始提供云计算产品和战略 本文讲解如何使用 Apache Hadoop 构建一个 MapReduce 框架以建立 Hadoop 集群, 以及如何创建在 Hadoop 上运行的示例 MapReduce 应用程序 还将讨论如何在云上设置耗费时间 / 磁盘的任务 云计算简介 近来云计算越来越热门了, 云计算已经被看作 IT 业的新趋势 云计算可以粗略地定义为使用自己环境之外的某一服务提供的可伸缩计算资源, 并按使用量付费 可以通过 Internet 访问 云 中的任何资源, 而不需要担心计算能力 带宽 存储 安全性和可靠性等问题 本文简要介绍 Amazon EC2 这样的云计算平台, 可以租借这种平台上的虚拟 Linux 服务器 ; 然后介绍开放源码 MapReduce 框架 Apache Hadoop, 这个框架将构建在虚拟 Linux 服务器中以建立云计算框架 但是,Hadoop 不仅可以部署在任何厂商提供的 VM 上, 还可以部署在物理机器上的一般 Linux OS 中 在讨论 Apache Hadoop 之前, 我们先简要介绍一下云计算系统的结构 图 1 显示云计算的各个层以及现有的一些服务 基础设施即服务 (Infrastructure-as-a-Service,IaaS) 是指以服务的形式租借基础设施 ( 计算资源和存储 ) IaaS 让用户可以租借计算机 ( 即虚拟主机 ) 或数据中心, 可以指定特定的服务质量约束, 比如能够运行某些操作系统和软件 Amazon EC2 在这些层中作为 IaaS, 向用户提供虚拟的主机 平台即服务 (Platform-as-a-Service,PaaS) 主要关注软件框架或服务, 提供在基础设施中进行 云 计算所用的 API Apache Hadoop 作为 PaaS, 它构建在虚拟主机上, 作为云计算平台 图 1. 云计算的层和现有服务 云计算的各个层 Amazon EC2

Amazon EC2 是一个 Web 服务, 它允许用户请求具有各种资源 (CPU 磁盘 内存等) 的虚拟机器 用户只需按使用的计算时间付费, 其他事情全交给 Amazon 处理 这些实例 (Amazon Machine Image,AMI) 基于 Linux, 可以运行您需要的任何应用程序或软件 在从 Amazon 租借服务器之后, 可以像对待物理服务器一样使用一般的 SSH 工具设置连接和维护服务器 对 EC2 的详细介绍超出了本文的范围 部署 Hadoop 云计算框架的最好方法是把它部署在 AMI 上, 这样可以利用云资源, 不需要考虑计算能力 带宽 存储等问题 但是, 在本文的下一部分中, 我们将在本地的 Linux 服务器 VMWare 映像中构建 Hadoop, 因为 Hadoop 不仅适用于云解决方案 在此之前, 我们先介绍一下 Apache Hadoop Apache Hadoop Apache Hadoop 是一个软件框架 ( 平台 ), 它可以分布式地操纵大量数据 它于 2006 年出现, 由 Google Yahoo! 和 IBM 等公司支持 可以认为它是一种 PaaS 模型 它的设计核心是 MapReduce 实现和 HDFS (Hadoop Distributed File System), 它们源自 MapReduce( 由一份 Google 文件引入 ) 和 Google File System MapReduce MapReduce 是 Google 引入的一个软件框架, 它支持在计算机 ( 即节点 ) 集群上对大型数据集进行分布式计算 它由两个过程组成, 映射 (Map) 和缩减 (Reduce) 在映射过程中, 主节点接收输入, 把输入分割为更小的子任务, 然后把这些子任务分布到工作者节点 工作者节点处理这些小任务, 把结果返回给主节点 然后, 在缩减过程中, 主节点把所有子任务的结果组合成输出, 这就是原任务的结果

图 2 说明 MapReduce 流程的概念 MapReduce 的优点是它允许对映射和缩减操作进行分布式处理 因为每个映射操作都是独立的, 所有映射都可以并行执行, 这会减少总计算时间 HDFS 对 HDFS 及其使用方法的完整介绍超出了本文的范围 从最终用户的角度来看,HDFS 就像传统的文件系统一样 可以使用目录路径对文件执行 CRUD 操作 但是, 由于分布式存储的性质, 有 NameNode 和 DataNode 的概念, 它们承担各自的责任 NameNode 是 DataNode 的主节点 它在 HDFS 中提供元数据服务 元数据说明 DataNode 的文件映射 它还接收操作命令并决定哪些 DataNode 应该执行操作和复制 DataNode 作为 HDFS 的存储块 它们还响应从 NameNode 接收的块创建 删除和复制命令 JobTracker 和 TaskTracker 在提交应用程序时, 应该提供包含在 HDFS 中的输入和输出目录 JobTracker 作为启动 MapReduce 应用程序的单一控制点, 它决定应该创建多少个 TaskTracker 和子任务, 然后把每个子任务分配给 TaskTracker 每个 TaskTracker 向 JobTracker 报告状态和完成后的任务 通常, 一个主节点作为 NameNode 和 JobTracker, 从节点作为 DataNode 和 TaskTracker Hadoop 集群的概念视图和 MapReduce 的流程见图 2

图 2. Hadoop 集群的概念视图和 MapReduce 的流程 设置 Apache Hadoop 现在在 Linux VM 上设置 Hadoop 集群, 然后就可以在 Hadoop 集群上运行 MapReduce 应用程序 Apache Hadoop 支持三种部署模式 : * 单独模式 : 在默认情况下,Hadoop 以非分布的单独模式运行 这个模式适合应用程序调试 * 伪分布模式 :Hadoop 还可以以单节点的伪分布模式运行 在这种情况下, 每个 Hadoop 守护进程作为单独的 Java 进程运行 * 全分布模式 :Hadoop 配置在不同的主机上, 作为集群运行 要想以单独或伪分布模式设置 Hadoop, 请参考 Hadoop 的网站 在本文中, 我们只讨论以全分布模式设置 Hadoop 准备环境 在本文中, 我们需要三台 GNU/Linux 服务器 ; 一个作为主节点, 另外两个作为从节点 表 1. 服务器信息

每台机器都需要安装 Java SE 6 和 Hadoop 二进制代码 本文使用 Hadoop version 0.19.1 还需要在每台机器上安装 SSH 并运行 sshd SUSE 和 RedHat 等流行的 Linux 发行版在默认情况下已经安装了它们 设置通信 更新 /etc/hosts 文件, 确保这三台机器可以使用 IP 和主机名相互通信 因为 Hadoop 主节点使用 SSH 与从节点通信, 所以应该在主节点和从节点之间建立经过身份验证的无密码的 SSH 连接 在每台机器上执行以下命令, 从而生成 RSA 公共和私有密钥 ssh-keygen t rsa 这会在 /root/.ssh 目录中生成 id_rsa.pub 重命名主节点的 id_rsa.pub( 这里改名为 59_rsa.pub) 并把它复制到从节点 然后执行以下命令, 把主节点的公共密钥添加到从节点的已授权密钥中 cat /root/.ssh/59_rsa.pub >> /root/.ssh/authorized_keys 现在尝试使用 SSH 连接从节点 应该可以成功连接, 不需要提供密码 设置主节点 把 Hadoop 设置为全分布模式需要配置 <Hadoop_home>/conf/ 目录中的配置文件 在 hadoop-site.xml 中配置 Hadoop 部署 这里的配置覆盖 hadoop-default.xml 中的配置 表 2. 配置属性属性解释 fs.default.name NameNode URI

mapred.job.tracker JobTracker URI dfs.replication 复制的数量 hadoop.tmp.dir 临时目录 hadoop-site.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>fs.default.name</name> <value>hdfs://9.30.210.159:9000</value> </property> <property> <name>mapred.job.tracker</name> <value>9.30.210.159:9001</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/root/hadoop/tmp/</value> </property> </configuration> 通过配置 hadoop-env.sh 文件指定 JAVA_HOME 注释掉这一行并指定自己的 JAVA_HOME 目录 export JAVA_HOME=<JAVA_HOME_DIR> 在 master 文件中添加主节点的 IP 地址 9.30.210.159 在 slave 文件中添加从节点的 IP 地址 9.30.210.160 9.30.210.161

设置从节点 把 hadoop-site.xml hadoop-env.sh masters 和 slaves 复制到每个从节点 ; 可以使用 SCP 或其他复制工具 对 HDFS 进行格式化 运行以下命令对 HDFS 分布式文件系统进行格式化 <Hadoop_home>/bin/hadoop namenode -format 检查 Hadoop 集群 现在, 可以使用 bin/start-all.sh 启动 Hadoop 集群 命令输出指出主节点和从节点上的一些日志 检查这些日志, 确认一切正常 如果弄乱了什么东西, 可以格式化 HDFS 并清空 hadoop-site.xml 中指定的临时目录, 然后重新启动 访问以下 URL, 确认主节点和从节点是正常的 NameNode: http://9.30.210.159:50070 JobTracker: http://9.30.210.159:50030 现在, 已经在云中设置了 Hadoop 集群, 该运行 MapReduce 应用程序了 创建 MapReduce 应用程序 MapReduce 应用程序必须具备 映射 和 缩减 的性质, 也就是说任务或作业可以分割为小片段以进行并行处理 然后, 可以缩减每个子任务的结果, 得到原任务的结果 这种任务之一是网站关键字搜索 搜索和抓取任务可以分割为子任务并分配给从节点, 然后在主节点上聚合所有结果并得到最终结果 试用示例应用程序 Hadoop 附带一些用于测试的示例应用程序 其中之一是单词计数器, 它统计某一单词在几个文件中出现的次数 通过运行这个应用程序检查 Hadoop 集群 首先, 把输入文件放在分布式文件系统中 (conf/ 目录下面 ) 我们将统计单词在这些文件中出现的次数

$ bin/hadoop fs put conf input 然后, 运行这个示例应用程序, 以下命令统计以 dfs 开头的单词出现的次数 $ bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+' 命令的输出说明映射和缩减过程 前两个命令会在 HDFS 中生成两个目录, input 和 output 可以使用以下命令列出它们 $ bin/hadoop fs ls 查看分布式文件系统中已经输出的文件 它以键 - 值对的形式列出以 dfs* 开头的单词出现的次数 $ bin/hadoop fs -cat ouput/* 现在, 访问 JobTracker 站点查看完成的作业日志 创建 Log Analyzer MapReduce 应用程序 现在创建一个 Portal (IBM WebSphere Portal v6.0) Log Analyzer 应用程序, 它与 Hadoop 中的 WordCount 应用程序有许多共同点 这个分析程序搜索所有 Portal 的 SystemOut*.log 文件, 显示在特定的时间段内应用程序在 Portal 上启动了多少次 在 Portal 环境中, 所有日志分割为 5MB 的片段, 很适合由几个节点并行地分析 hadoop.sample.portalloganalyzer.java public class PortalLogAnalyzer { public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { private static String APP_START_TOKEN = "Application started:"; private Text application = new Text(); public void map(longwritable key, Text value,

OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { String line = value.tostring(); if(line.indexof(app_start_token) > -1) { int startindex = line.indexof(app_start_token); startindex += APP_START_TOKEN.length(); String appname = line.substring(startindex).trim(); application.set(appname); output.collect(application, new IntWritable(1)); public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> { public void reduce(text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { int sum = 0; while(values.hasnext()) { sum += values.next().get(); output.collect(key, new IntWritable(sum)); public static void main(string[] args) throws IOException { JobConf jobconf = new JobConf(PortalLogAnalyzer.class); jobconf.setjobname("portal Log Analizer"); jobconf.setoutputkeyclass(text.class); jobconf.setoutputvalueclass(intwritable.class); jobconf.setmapperclass(map.class); jobconf.setcombinerclass(reduce.class); jobconf.setreducerclass(reduce.class); jobconf.setinputformat(textinputformat.class); jobconf.setoutputformat(textoutputformat.class); FileInputFormat.setInputPaths(jobConf, new Path(args[0])); FileOutputFormat.setOutputPath(jobConf, new Path(args[1])); JobClient.runJob(jobConf);

对 Hadoop API 的完整解释请参见 Hadoop 网站上的 API 文档 这里只做简要说明 Map 类实现映射功能, 它搜索日志文件的每一行, 寻找应用程序的名称 然后把应用程序名称以键 - 值对的形式放在输出集合中 Reduce 类计算具有相同键 ( 相同应用程序名称 ) 的所有值的总和 因此, 这个应用程序最终输出的键 - 值对表示每个应用程序在 Portal 上启动的次数 Main 函数配置并运行 MapReduce 作业 运行 PortalLogAnalyzer 首先, 把这些 Java 代码复制到主节点并编译 把 Java 代码复制到 <hadoop_home>/workspace 目录中 对它执行编译并存档在一个 Jar 文件中, 后面 hadoop 命令将运行这个文件 $ mkdir classes $ javac cp../hadoop-0.19.1-core.jar d classes hadoop/sample/portalloganalyzer.java $ jar cvf PortalLogAnalyzer.jar C classes/. 把 Portal 日志复制到 workspace/input 中 假设有多个日志文件, 其中包含 2009 年 5 月的所有日志 把这些日志放到 HDFS 中 $ bin/hadoop fs put workspace/input input2 在运行 PortalLogAnalyzer 时, 输出说明映射和缩减过程 $ bin/hadoop jar workspace/portalloganalizer.jar hadoop.sample.portalloganalizer input2 output2

图 3. 任务的输出 $ bin/hadoop jar workspace/portalloganalizer.jar hadoop.sample.portalloganalizer input2 output2 应用程序执行完之后, 输出应该与图 4 相似 $ bin/hadoop fs cat output2/* 图 4. 部分输出 $ bin/hadoop fs cat output2/*

在访问 JobTracker 站点时, 会看到另一个完成的作业 注意图 5 中的最后一行 图 5. 完成的作业 另一个完成的作业