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

Size: px
Start display at page:

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

Transcription

1 第 1 章 Hadoop 简介 本章内容 什么是 Hadoop Hadoop 项目及其结构 Hadoop 体系结构 Hadoop 与分布式开发 Hadoop 计算模型 MapReduce Hadoop 数据管理 Hadoop 集群安全策略本章小结

2 2 Hadoop 实战 1.1 什么是 Hadoop Hadoop 概述 Hadoop 是 Apache 软件基金会旗下的一个开源分布式计算平台 以 Hadoop 分布式文 件 系 统 Hadoop Distributed File System HDFS 和 MapReduce Google MapReduce 的 开源实现 为核心的 Hadoop 为用户提供了系统底层细节透明的分布式基础架构 HDFS 的 高容错性 高伸缩性等优点允许用户将 Hadoop 部署在低廉的硬件上 形成分布式系统 MapReduce 分布式编程模型允许用户在不了解分布式系统底层细节的情况下开发并行应用程 序 所以用户可以利用 Hadoop 轻松地组织计算机资源 从而搭建自己的分布式计算平台 并且可以充分利用集群的计算和存储能力 完成海量数据的处理 经过业界和学术界长达 10 年的锤炼 目前的 Hadoop 已经趋于完善 在实际的数据处理和分析任务中担当着不可 替代的角色 Hadoop 的历史 Hadoop 的 源 头 是 Apache Nutch 该 项 目 始 于 2002 年 是 Apache Lucene 的 子 项 目 之 一 2004 年 Google 在 操 作 系 统 设 计 与 实 现 Operating System Design and Implementation OSDI 会 议 上 公 开 发 表 了 题 为 MapReduce: Simplified Data Processing on Large Clusters MapReduce: 简 化 大 规 模 集 群 上 的 数 据 处 理 的 论 文 之 后 受 到 启 发 的 Doug Cutting 等人开始尝试实现 MapReduce 计算框架 并将它与 NDFS Nutch Distributed File System 结 合 用 以 支 持 Nutch 引 擎 的 主 要 算 法 由 于 NDFS 和 MapReduce 在 Nutch 引擎中有着良好的应用 所以它们于 2006 年 2 月被分离出来 成为一套完整而独立的软件 并命名为 Hadoop 到了 2008 年年初 Hadoop 已成为 Apache 的顶级项目 包含众多子项目 它被应用到包括 Yahoo! 在内的很多互联网公司 现在的 Hadoop1.0.1 版本已经发展成为包含 HDFS MapReduce 子项目 与 Pig ZooKeeper Hive HBase 等项目相关的大型应用工程 Hadoop 的功能与作用 我们为什么需要 Hadoop 呢 众所周知 现代社会的信息增长速度很快 这些信息中又 积累着大量数据 其中包括个人数据和工业数据 预计到 2020 年 每年产生的数字信息中 将会有超过 1/3 的内容驻留在云平台中或借助云平台处理 我们需要对这些数据进行分析处 理 以获取更多有价值的信息 那么我们如何高效地存储管理这些数据 如何分析这些数据 呢 这时可以选用 Hadoop 系统 在处理这类问题时 它采用分布式存储方式来提高读写速 度和扩大存储容量 采用 MapReduce 整合分布式文件系统上的数据 保证高速分析处理数 据 与此同时还采用存储冗余数据来保证数据的安全性 Hadoop 中的 HDFS 具有高容错性 并且是基于 Java 语言开发的 这使得 Hadoop 可以 部署在低廉的计算机集群中 同时不限于某个操作系统 Hadoop 中 HDFS 的数据管理能力

3 第1章 Hadoop 简介 3 MapReduce 处理任务时的高效率以及它的开源特性 使其在同类分布式系统中大放异彩 并 在众多行业和科研领域中被广泛应用 Hadoop 的优势 Hadoop 是 一 个 能 够 让 用 户 轻 松 架 构 和 使 用 的 分 布 式 计 算 平 台 用 户 可 以 轻 松 地 在 Hadoop 上开发运行处理海量数据的应用程序 它主要有以下几个优点 高可靠性 Hadoop 按位存储和处理数据的能力值得人们信赖 高扩展性 Hadoop 是在可用的计算机集簇间分配数据完成计算任务的 这些集簇可 以方便地扩展到数以千计的节点中 高效性 Hadoop 能够在节点之间动态地移动数据 以保证各个节点的动态平衡 因 此其处理速度非常快 高容错性 Hadoop 能够自动保存数据的多份副本 并且能够自动将失败的任务重新 分配 Hadoop 应用现状和发展趋势 由 于 Hadoop 优 势 突 出 基 于 Hadoop 的 应 用 已 经 遍 地 开 花 尤 其 是 在 互 联 网 领 域 Yahoo! 通过集群运行 Hadoop 用以支持广告系统和 Web 搜索的研究 Facebook 借助集群运 行 Hadoop 来支持其数据分析和机器学习 搜索引擎公司百度则使用 Hadoop 进行搜索日志分 析和网页数据挖掘工作 淘宝的 Hadoop 系统用于存储并处理电子商务交易的相关数据 中 国移动研究院基于 Hadoop 的 大云 BigCloud 系统对数据进行分析并对外提供服务 2008 年 2 月 作 为 Hadoop 最 大 贡 献 者 的 Yahoo! 构 建 了 当 时 最 大 规 模 的 Hadoop 应 用 他们在 2000 个节点上面执行了超过 1 万个 Hadoop 虚拟机器来处理超过 5PB 的网页内 容 分析大约 1 兆个网络连接之间的网页索引资料 这些网页索引资料压缩后超过 300TB Yahoo! 正是基于这些为用户提供了高质量的搜索服务 Hadoop 目前已经取得了非常突出的成绩 随着互联网的发展 新的业务模式还将不断 涌现 Hadoop 的应用也会从互联网领域向电信 电子商务 银行 生物制药等领域拓展 相信在未来 Hadoop 将会在更多的领域中扮演幕后英雄 为我们提供更加快捷优质的服务 1.2 Hadoop 项目及其结构 现在 Hadoop 已经发展成为包含很多项目的集合 虽然其核 心 内 容 是 MapReduce 和 Hadoop 分 布 式 文 件 系 统 但 与 Hadoop 相关的 Common Avro Chukwa Hive HBase 等项目也是不可 或缺的 它们提供了互补性服务或在核心层上提供了更高层的服 务 图 1-1 是 Hadoop 的项目结构图 下面将对 Hadoop 的各个关联项目进行更详细的介绍 图 1-1 Hadoop 项目结构图

4 4 Hadoop 实战 1)Common :Common 是为 Hadoop 其他子项目提供支持的常用工具, 它主要包括 FileSystem RPC 和串行化库 它们为在廉价硬件上搭建云计算环境提供基本的服务, 并且会为运行在该平台上的软件开发提供所需的 API 2)Avro :Avro 是用于数据序列化的系统 它提供了丰富的数据结构类型 快速可压缩的二进制数据格式 存储持久性数据的文件集 远程调用 RPC 的功能和简单的动态语言集成功能 其中代码生成器既不需要读写文件数据, 也不需要使用或实现 RPC 协议, 它只是一个可选的对静态类型语言的实现 Avro 系统依赖于模式 (Schema), 数据的读和写是在模式之下完成的 这样可以减少写入数据的开销, 提高序列化的速度并缩减其大小 ; 同时, 也可以方便动态脚本语言的使用, 因为数据连同其模式都是自描述的 在 RPC 中,Avro 系统的客户端和服务端通过握手协议进行模式的交换, 因此当客户端和服务端拥有彼此全部的模式时, 不同模式下相同命名字段 丢失字段和附加字段等信息的一致性问题就得到了很好的解决 3)MapReduce :MapReduce 是一种编程模型, 用于大规模数据集 ( 大于 1TB) 的并行运算 映射 (Map) 化简 (Reduce) 的概念和它们的主要思想都是从函数式编程语言中借鉴而来的 它极大地方便了编程人员 即使在不了解分布式并行编程的情况下, 也可以将自己的程序运行在分布式系统上 MapReduce 在执行时先指定一个 Map( 映射 ) 函数, 把输入键值对映射成一组新的键值对, 经过一定处理后交给 Reduce,Reduce 对相同 key 下的所有 value 进行处理后再输出键值对作为最终的结果 图 1-2 是 MapReduce 的任务处理流程图, 它展示了 MapReduce 程序将输入划分到不同的 Map 上 再将 Map 的结果合并到 Reduce 然后进行处理的输出过程 详细介绍请参考本章 1.3 节 图 1-2 MapReduce 的任务处理流程图 4)HDFS :HDFS 是一个分布式文件系统 因为 HDFS 具有高容错性 (fault-tolerent) 的特点, 所以它可以设计部署在低廉 (low-cost) 的硬件上 它可以通过提供高吞吐率 (high throughput) 来访问应用程序的数据, 适合那些有着超大数据集的应用程序 HDFS 放宽了对可移植操作系统接口 (POSIX,Portable Operating System Interface) 的要求, 这样可以实现以流的形式访问文件系统中的数据 HDFS 原本是开源的 Apache 项目 Nutch 的基础结构, 最后它却成为了 Hadoop 基础架构之一 以下几个方面是 HDFS 的设计目标 :

5 第 1 章 Hadoop 简介 5 检测和快速恢复硬件故障 硬件故障是计算机常见的问题 整个 HDFS 系统由数百甚至数千个存储着数据文件的服务器组成 而如此多的服务器则意味着高故障率, 因此, 故障的检测和快速自动恢复是 HDFS 的一个核心目标 流式的数据访问 HDFS 使应用程序流式地访问它们的数据集 HDFS 被设计成适合进行批量处理, 而不是用户交互式处理 所以它重视数据吞吐量, 而不是数据访问的反应速度 简化一致性模型 大部分的 HDFS 程序对文件的操作需要一次写入, 多次读取 一个文件一旦经过创建 写入 关闭就不需要修改了 这个假设简化了数据一致性问题和高吞吐量的数据访问问题 通信协议 所有的通信协议都是在 TCP/IP 协议之上的 一个客户端和明确配置了端口的名字节点 (NameNode) 建立连接之后, 它和名字节点的协议便是客户端协议 (Client Protocal) 数据节点 (DataNode) 和名字节点之间则用数据节点协议 (DataNode Protocal) 关于 HDFS 的具体介绍请参考本章 1.3 节 5)Chukwa :Chukwa 是开源的数据收集系统, 用于监控和分析大型分布式系统的数据 Chukwa 是在 Hadoop 的 HDFS 和 MapReduce 框架之上搭建的, 它继承了 Hadoop 的可扩展性和健壮性 Chukwa 通过 HDFS 来存储数据, 并依赖 MapReduce 任务处理数据 Chukwa 中也附带了灵活且强大的工具, 用于显示 监视和分析数据结果, 以便更好地利用所收集的数据 6)Hive:Hive 最早是由 Facebook 设计的, 是一个建立在 Hadoop 基础之上的数据仓库, 它提供了一些用于对 Hadoop 文件中的数据集进行数据整理 特殊查询和分析存储的工具 Hive 提供的是一种结构化数据的机制, 它支持类似于传统 RDBMS 中的 SQL 语言的查询语言, 来帮助那些熟悉 SQL 的用户查询 Hadoop 中的数据, 该查询语言称为 Hive QL 与此同时, 传统的 MapReduce 编程人员也可以在 Mapper 或 Reducer 中通过 Hive QL 查询数据 Hive 编译器会把 Hive QL 编译成一组 MapReduce 任务, 从而方便 MapReduce 编程人员进行 Hadoop 系统开发 7)HBase :HBase 是一个分布式的 面向列的开源数据库, 该技术来源于 Google 论文 Bigtable : 一个结构化数据的分布式存储系统 如同 Bigtable 利用了 Google 文件系统 (Google File System) 提供的分布式数据存储方式一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力 HBase 不同于一般的关系数据库, 原因有两个 : 其一,HBase 是一个适合于非结构化数据存储的数据库 ; 其二,HBase 是基于列而不是基于行的模式 HBase 和 Bigtable 使用相同的数据模型 用户将数据存储在一个表里, 一个数据行拥有一个可选择的键和任意数量的列 由于 HBase 表是疏松的, 用户可以为行定义各种不同的列 HBase 主要用于需要随机访问 实时读写的大数据 (Big Data) 具体介绍请参考第 12 章 8)Pig :Pig 是一个对大型数据集进行分析 评估的平台 Pig 最突出的优势是它的结构能够经受住高度并行化的检验, 这个特性使得它能够处理大型的数据集 目前,Pig 的底层

6 6 Hadoop 实战 由一个编译器组成, 它在运行的时候会产生一些 MapReduce 程序序列,Pig 的语言层由一种叫做 Pig Latin 的正文型语言组成 有关 Pig 的具体内容请参考第 14 章 9)ZooKeeper :ZooKeeper 是一个为分布式应用所设计的开源协调服务 它主要为用户提供同步 配置管理 分组和命名等服务, 减轻分布式应用程序所承担的协调任务 ZooKeeper 的文件系统使用了我们所熟悉的目录树结构 ZooKeeper 是使用 Java 编写的, 但是它支持 Java 和 C 两种编程语言 有关 ZooKeeper 的具体内容请参考第 15 章 上面讨论的 9 个项目在本书中都有相应的章节进行详细的介绍 1.3 Hadoop 体系结构 如上文所说,HDFS 和 MapReduce 是 Hadoop 的两大核心 而整个 Hadoop 的体系结构主要是通过 HDFS 来实现分布式存储的底层支持的, 并且它会通过 MapReduce 来实现分布式并行任务处理的程序支持 下面首先介绍 HDFS 的体系结构 HDFS 采用了主从 (Master/Slave) 结构模型, 一个 HDFS 集群是由一个 NameNode 和若干个 DataNode 组成的 其中 NameNode 作为主服务器, 管理文件系统的命名空间和客户端对文件的访问操作 ; 集群中的 DataNode 管理存储的数据 HDFS 允许用户以文件的形式存储数据 从内部来看, 文件被分成若干个数据块, 而且这若干个数据块存放在一组 DataNode 上 NameNode 执行文件系统的命名空间操作, 比如打开 关闭 重命名文件或目录等, 它也负责数据块到具体 DataNode 的映射 DataNode 负责处理文件系统客户端的文件读写请求, 并在 NameNode 的统一调度下进行数据块的创建 删除和复制工作 图 1-3 所示为 HDFS 的体系结构 图 1-3 HDFS 体系结构图 NameNode 和 DataNode 都可以在普通商用计算机上运行 这些计算机通常运行的是

7 第 1 章 Hadoop 简介 7 GNU/Linux 操作系统 HDFS 采用 Java 语言开发, 因此任何支持 Java 的机器都可以部署 NameNode 和 DataNode 一个典型的部署场景是集群中的一台机器运行一个 NameNode 实例, 其他机器分别运行一个 DataNode 实例 当然, 并不排除一台机器运行多个 DataNode 实例的情况 集群中单一 NameNode 的设计大大简化了系统的架构 NameNode 是所有 HDFS 元数据的管理者, 用户需要保存的数据不会经过 NameNode, 而是直接流向存储数据的 DataNode 接下来介绍 MapReduce 的体系结构 MapReduce 是一种并行编程模式, 利用这种模式软件开发者可以轻松地编写出分布式并行程序 在 Hadoop 的体系结构中,MapReduce 是一个简单易用的软件框架, 基于它可以将任务分发到由上千台商用机器组成的集群上, 并以一种可靠容错的方式并行处理大量的数据集, 实现 Hadoop 的并行任务处理功能 MapReduce 框架是由一个单独运行在主节点的 JobTracker 和运行在每个集群从节点的 TaskTracker 共同组成的 主节点负责调度构成一个作业的所有任务, 这些任务分布在不同的从节点上 主节点监控它们的执行情况, 并且重新执行之前失败的任务 ; 从节点仅负责由主节点指派的任务 当一个 Job 被提交时,JobTracker 接收到提交作业和其配置信息之后, 就会将配置信息等分发给从节点, 同时调度任务并监控 TaskTracker 的执行 从上面的介绍可以看出,HDFS 和 MapReduce 共同组成了 Hadoop 分布式系统体系结构的核心 HDFS 在集群上实现了分布式文件系统,MapReduce 在集群上实现了分布式计算和任务处理 HDFS 在 MapReduce 任务处理过程中提供了对文件操作和存储等的支持, MapReduce 在 HDFS 的基础上实现了任务的分发 跟踪 执行等工作, 并收集结果, 二者相互作用, 完成了 Hadoop 分布式集群的主要任务 1.4 Hadoop 与分布式开发 我们通常所说的分布式系统其实是分布式软件系统, 即支持分布式处理的软件系统 它是在通信网络互联的多处理机体系结构上执行任务的系统, 包括分布式操作系统 分布式程序设计语言及其编译 ( 解释 ) 系统 分布式文件系统和分布式数据库系统等 Hadoop 是分布式软件系统中文件系统层的软件, 它实现了分布式文件系统和部分分布式数据库系统的功能 Hadoop 中的分布式文件系统 HDFS 能够实现数据在计算机集群组成的云上高效的存储和管理,Hadoop 中的并行编程框架 MapReduce 能够让用户编写的 Hadoop 并行应用程序运行得以简化 下面简单介绍一下基于 Hadoop 进行分布式并发编程的相关知识, 详细的介绍请参看后面有关 MapReduce 编程的章节 Hadoop 上并行应用程序的开发是基于 MapReduce 编程模型的 MapReduce 编程模型的原理是 : 利用一个输入的 key/value 对集合来产生一个输出的 key/value 对集合 MapReduce 库的用户用两个函数来表达这个计算 :Map 和 Reduce 用户自定义的 Map 函数接收一个输入的 key/value 对, 然后产生一个中间 key/value 对的集合 MapReduce 把所有具有相同 key 值的 value 集合在一起, 然后传递给 Reduce 函数

8 8 Hadoop 实战 用户自定义的 Reduce 函数接收 key 和相关的 value 集合 Reduce 函数合并这些 value 值, 形成一个较小的 value 集合 一般来说, 每次调用 Reduce 函数只产生 0 或 1 个输出的 value 值 通常我们通过一个迭代器把中间 value 值提供给 Reduce 函数, 这样就可以处理无法全部放入内存中的大量的 value 值集合了 图 1-4 是 MapReduce 的数据流图, 体现 MapReduce 处理大数据集的过程 简而言之, 这个过程就是将大数据集分解为成百上千个小数据集, 每个 ( 或若干个 ) 数据集分别由集群中的一个节点 ( 一般就是一台普通的计算机 ) 进行处理并生成中间结果, 然后这些中间结果又由大量的节点合并, 形成最终结果 图 1-4 也说明了 MapReduce 框架下并行程序中的两个主要函数 :Map Reduce 在这个结构中, 用户需要完成的工作是根据任务编写 Map 和 Reduce 两个函数 图 1-4 MapReduce 数据流图 MapReduce 计算模型非常适合在大量计算机组成的大规模集群上并行运行 图 1-4 中的每一个 Map 任务和每一个 Reduce 任务均可以同时运行于一个单独的计算节点上, 可想而知, 其运算效率是很高的, 那么这样的并行计算是如何做到的呢? 下面将简单介绍一下其原理 1. 数据分布存储 Hadoop 分布式文件系统 (HDFS) 由一个名字节点 (NameNode) 和多个数据节点 (DataNode) 组成, 每个节点都是一台普通的计算机 在使用方式上 HDFS 与我们熟悉的单机文件系统非常类似, 利用它可以创建目录, 创建 复制 删除文件, 并且可以查看文件内容等 但文件在 HDFS 底层被切割成了 Block, 这些 Block 分散地存储在不同的 DataNode 上, 每个 Block 还可以复制数份数据存储在不同的 DataNode 上, 达到容错容灾的目的 NameNode 则是整个 HDFS 的核心, 它通过维护一些数据结构来记录每一个文件被切割成了多少个 Block 这些 Block 可以从哪些 DataNode 中获得, 以及各个 DataNode 的状态等重要信息 2. 分布式并行计算 Hadoop 中有一个作为主控的 JobTracker, 用于调度和管理其他的 TaskTracker JobTracker 可以运行于集群中的任意一台计算机上 ;TaskTracker 则负责执行任务, 它必须运行于 DataNode 上, 也就是说 DataNode 既是数据存储节点, 也是计算节点 JobTracker 将 Map 任务和 Reduce 任务分发给空闲的 TaskTracker, 让这些任务并行运行, 并负责监控任务的运行情况 如果某一个 TaskTracker 出了故障,JobTracker 会将其负责的任务转交给另一个空闲的 TaskTracker 重新运行

9 第 1 章 Hadoop 简介 9 3. 本地计算数据存储在哪一台计算机上, 就由哪台计算机进行这部分数据的计算, 这样可以减少数据在网络上的传输, 降低对网络带宽的需求 在 Hadoop 这类基于集群的分布式并行系统中, 计算节点可以很方便地扩充, 因此它所能够提供的计算能力近乎无限 但是数据需要在不同的计算机之间流动, 故而网络带宽变成了瓶颈 本地计算 是一种最有效的节约网络带宽的手段, 业界将此形容为 移动计算比移动数据更经济 4. 任务粒度在把原始大数据集切割成小数据集时, 通常让小数据集小于或等于 HDFS 中一个 Block 的大小 ( 默认是 64MB), 这样能够保证一个小数据集是位于一台计算机上的, 便于本地计算 假设有 M 个小数据集待处理, 就启动 M 个 Map 任务, 注意这 M 个 Map 任务分布于 N 台计算机上, 它们将并行运行,Reduce 任务的数量 R 则可由用户指定 5. 数据分割 (Partition) 把 Map 任务输出的中间结果按 key 的范围划分成 R 份 (R 是预先定义的 Reduce 任务的个数 ), 划分时通常使用 Hash 函数 ( 如 hash(key) mod R), 这样可以保证某一段范围内的 key 一定是由一个 Reduce 任务来处理的, 可以简化 Reduce 的过程 6. 数据合并 (Combine) 在数据分割之前, 还可以先对中间结果进行数据合并 (Combine), 即将中间结果中有相同 key 的 <key, value> 对合并成一对 Combine 的过程与 Reduce 的过程类似, 在很多情况下可以直接使用 Reduce 函数, 但 Combine 是作为 Map 任务的一部分 在执行完 Map 函数后紧接着执行的 Combine 能够减少中间结果中 <key, value> 对的数目, 从而降低网络流量 7. Reduce Map 任务的中间结果在执行完 Combine 和 Partition 之后, 以文件形式存储于本地磁盘上 中间结果文件的位置会通知主控 JobTracker,JobTracker 再通知 Reduce 任务到哪一个 TaskTracker 上去取中间结果 注意, 所有的 Map 任务产生的中间结果均按其 key 值通过同一个 Hash 函数划分成了 R 份,R 个 Reduce 任务各自负责一段 key 区间 每个 Reduce 需要向许多个 Map 任务节点取得落在其负责的 key 区间内的中间结果, 然后执行 Reduce 函数, 形成一个最终的结果文件 8. 任务管道有 R 个 Reduce 任务, 就会有 R 个最终结果 很多情况下这 R 个最终结果并不需要合并成一个最终结果, 因为这 R 个最终结果又可以作为另一个计算任务的输入, 开始另一个并行计算任务, 这也就形成了任务管道 这里简要介绍了在并行编程方面 Hadoop 中 MapReduce 编程模型的原理 流程 程序结构和并行计算的实现,MapReduce 程序的详细流程 编程接口 程序实例等请参见后面章节

10 10 Hadoop 实战 1.5 Hadoop 计算模型 MapReduce MapReduce 是 Google 公司的核心计算模型 它将运行于大规模集群上的复杂的并行计 算过程高度地抽象为两个函数 Map 和 Reduce Hadoop 是 Doug Cutting 受到 Google 发表 的关于 MapReduce 的论文启发而开发出来的 Hadoop 中的 MapReduce 是一个使用简易的软 件框架 基于它写出来的应用程序能够运行在由上千台商用机器组成的大型集群上 并以一 种可靠容错的方式并行处理上 T 级别的数据集 实现了 Hadoop 在集群上的数据和任务的并 行计算与处理 一个 Map/Reduce 作业 Job 通常会把输入的数据集切分为若干独立的数据块 由 Map 任务 Task 以完全并行的方式处理它们 框架会先对 Map 的输出进行排序 然后把结果输 入给 Reduce 任务 通常作业的输入和输出都会被存储在文件系统中 整个框架负责任务的 调度和监控 以及重新执行已经失败的任务 通常 Map/Reduce 框架和分布式文件系统是运行在一组相同的节点上的 也就是说 计算节点和存储节点在一起 这种配置允许框架在那些已经存好数据的节点上高效地调度任 务 这样可以使整个集群的网络带宽得到非常高效的利用 Map/Reduce 框架由一个单独的 Master JobTracker 和集群节点上的 Slave TaskTracker 共同组 成 Master 负责调度构成一个作业的所有任务 这些任务分布在不同的 slave 上 Master 监控它 们的执行情况 并重新执行已经失败的任务 而 Slave 仅负责执行由 Master 指派的任务 在 Hadoop 上运行的作业需要指明程序的输入 / 输出位置 路径 并通过实现合适的接 口或抽象类提供 Map 和 Reduce 函数 同时还需要指定作业的其他参数 构成作业配置 Job Configuration 在 Hadoop 的 JobClient 提交作业 JAR 包 / 可执行程序等 和配置信息给 JobTracker 之后 JobTracker 会负责分发这些软件和配置信息给 slave 及调度任务 并监控它 们的执行 同时提供状态和诊断信息给 JobClient 1.6 Hadoop 数据管理 前面重点介绍了 Hadoop 及其体系结构与计算模型 MapReduce 现在开始介绍 Hadoop 的数据管理 主要包括 Hadoop 的分布式文件系统 HDFS 分布式数据库 HBase 和数据仓库 工具 Hive HDFS 的数据管理 HDFS 是分布式计算的存储基石 Hadoop 分布式文件系统和其他分布式文件系统有很多 类似的特性 对于整个集群有单一的命名空间 具有数据一致性 都适合一次写入多次读取的模型 客户端在文件没有被成功创建之 前是无法看到文件存在的

11 第 1 章 Hadoop 简介 11 文件会被分割成多个文件块, 每个文件块被分配存储到数据节点上, 而且会根据配置由复制文件块来保证数据的安全性 通过前面的介绍和图 1-3 可以看出,HDFS 通过三个重要的角色来进行文件系统的管理 : NameNode DataNode 和 Client NameNode 可以看做是分布式文件系统中的管理者, 主要负责管理文件系统的命名空间 集群配置信息和存储块的复制等 NameNode 会将文件系统的 Metadata 存储在内存中, 这些信息主要包括文件信息 每一个文件对应的文件块的信息和每一个文件块在 DataNode 中的信息等 DataNode 是文件存储的基本单元, 它将文件块 (Block) 存储在本地文件系统中, 保存了所有 Block 的 Metadata, 同时周期性地将所有存在的 Block 信息发送给 NameNode Client 就是需要获取分布式文件系统文件的应用程序 接下来通过三个具体的操作来说明 HDFS 对数据的管理 (1) 文件写入 1)Client 向 NameNode 发起文件写入的请求 2)NameNode 根据文件大小和文件块配置情况, 返回给 Client 所管理的 DataNode 的信息 3)Client 将文件划分为多个 Block, 根据 DataNode 的地址信息, 按顺序将其写入到每一个 DataNode 块中 (2) 文件读取 1)Client 向 NameNode 发起文件读取的请求 2)NameNode 返回文件存储的 DataNode 信息 3)Client 读取文件信息 (3) 文件块 (Block) 复制 1)NameNode 发现部分文件的 Block 不符合最小复制数这一要求或部分 DataNode 失效 2) 通知 DataNode 相互复制 Block 3)DataNode 开始直接相互复制 作为分布式文件系统,HDFS 在数据管理方面还有值得借鉴的几个功能 : 文件块 (Block) 的放置 : 一个 Block 会有三份备份, 一份放在 NameNode 指定的 DataNode 上, 另一份放在与指定 DataNode 不在同一台机器上的 DataNode 上, 最后一份放在与指定 DataNode 同一 Rack 的 DataNode 上 备份的目的是为了数据安全, 采用这种配置方式主要是考虑同一 Rack 失败的情况, 以及不同 Rack 之间进行数据复制会带来的性能问题 心跳检测 : 用心跳检测 DataNode 的健康状况, 如果发现问题就采取数据备份的方式来保证数据的安全性 数据复制 ( 场景为 DataNode 失败 需要平衡 DataNode 的存储利用率和平衡 DataNode 数据交互压力等情况 ): 使用 Hadoop 时可以用 HDFS 的 balancer 命令配置 Threshold 来平衡每一个 DataNode 的磁盘利用率 假设设置了 Threshold 为 10%, 那

12 12 Hadoop 实战 么执行 balancer 命令时 首先会统计所有 DataNode 的磁盘利用率的平均值 然后判 断如果某一个 DataNode 的磁盘利用率超过这个平均值 那么将会把这个 DataNode 的 Block 转移到磁盘利用率低的 DataNode 上 这对于新节点的加入十分有用 数据校验 采用 CRC32 做数据校验 在写入文件块的时候 除了会写入数据外还会 写入校验信息 在读取的时候则需要先校验后读入 单个 NameNode 如果单个 NameNode 失败 任务处理信息将会记录在本地文件系统 和远端的文件系统中 数据管道性的写入 当客户端要写入文件到 DataNode 上时 首先会读取一个 Block 然 后 将 其 写 到 第 一 个 DataNode 上 接 着 由 第 一 个 DataNode 将 其 传 递 到 备 份 的 DataNode 上 直到所有需要写入这个 Block 的 DataNode 都成功写入后 客户端才会 开始写下一个 Block 安全模式 分布式文件系统启动时会进入安全模式 系统运行期间也可以通过命令进 入安全模式 当分布式文件系统处于安全模式时 文件系统中的内容不允许修改也 不允许删除 直到安全模式结束 安全模式主要是为了在系统启动的时候检查各个 DataNode 上数据块的有效性 同时根据策略进行必要的复制或删除部分数据块 在 实际操作过程中 如果在系统启动时修改和删除文件会出现安全模式不允许修改的错 误提示 只需要等待一会儿即可 HBase 的数据管理 HBase 是一个类似 Bigtable 的分布式数据库 它的大部分特性和 Bigtable 一样 是一个 稀疏的 长期存储的 存在硬盘上 多维度的排序映射表 这张表的索引是行关键字 列 关键字和时间戳 表中的每个值是一个纯字符数组 数据都是字符串 没有类型 用户在表 格中存储数据 每一行都有一个可排序的主键和任意多的列 由于是稀疏存储的 所以同一 张表中的每一行数据都可以有截然不同的列 列名字的格式是 <family>:<label> 它是由 字符串组成的 每一张表有一个 family 集合 这个集合是固定不变的 相当于表的结构 只 能通过改变表结构来改变表的 family 集合 但是 label 值相对于每一行来说都是可以改变的 HBase 把同一个 family 中的数据存储在同一个目录下 而 HBase 的写操作是锁行的 每一行都是一个原子元素 都可以加锁 所有数据库的更新都有一个时间戳标记 每次更新 都会生成一个新的版本 而 HBase 会保留一定数量的版本 这个值是可以设定的 客户端可 以选择获取距离某个时间点最近的版本 或者一次获取所有版本 以上从微观上介绍了 HBase 的一些数据管理措施 那么 HBase 作为分布式数据库在整 体上从集群出发又是如何管理数据的呢 HBase 在分布式集群上主要依靠由 HRegion HMaster HClient 组成的体系结构从整体 上管理数据 HBase 体系结构有三大重要组成部分 HBaseMaster HBase 主服务器 与 Bigtable 的主服务器类似

13 第 1 章 Hadoop 简介 13 HRegionServer:HBase 域服务器, 与 Bigtable 的 Tablet 服务器类似 HBase Client:HBase 客户端是由 org.apache.hadoop.hbase.client.htable 定义的 下面将对这三个组件进行详细的介绍 (1)HBaseMaster 一个 HBase 只部署一台主服务器, 它通过领导选举算法 (Leader Election Algorithm) 确保只有唯一的主服务器是活跃的,ZooKeeper 保存主服务器的服务器地址信息 如果主服务器瘫痪, 可以通过领导选举算法从备用服务器中选择新的主服务器 主服务器承担着初始化集群的任务 当主服务器第一次启动时, 会试图从 HDFS 获取根或根域目录, 如果获取失败则创建根或根域目录, 以及第一个元域目录 在下次启动时, 主服务器就可以获取集群和集群中所有域的信息了 同时主服务器还负责集群中域的分配 域服务器运行状态的监视 表格的管理等工作 (2)HRegionServer HBase 域服务器的主要职责有服务于主服务器分配的域 处理客户端的读写请求 本地缓冲区回写 本地数据压缩和分割域等功能 每个域只能由一台域服务器来提供服务 当它开始服务于某域时, 它会从 HDFS 文件系统中读取该域的日志和所有存储文件, 同时还会管理操作 HDFS 文件的持久性存储工作 客户端通过与主服务器通信获取域和域所在域服务器的列表信息后, 就可以直接向域服务器发送域读写请求, 来完成操作 (3)HBaseClient HBase 客户端负责查找用户域所在的域服务器地址 HBase 客户端会与 HBase 主机交换消息以查找根域的位置, 这是两者之间唯一的交流 定位根域后, 客户端连接根域所在的域服务器, 并扫描根域获取元域信息 元域信息中包含所需用户域的域服务器地址 客户端再连接元域所在的域服务器, 扫描元域以获取所需用户域所在的域服务器地址 定位用户域后, 客户端连接用户域所在的域服务器并发出读写请求 用户域的地址将在客户端被缓存, 后续的请求无须重复上述过程 综上所述, 在 HBase 的体系结构中,HBase 主要由主服务器 域服务器和客户端三部分组成 主服务器作为 HBase 的中心, 管理整个集群中的所有域, 监控每台域服务器的运行情况等 ; 域服务器接收来自服务器的分配域, 处理客户端的域读写请求并回写映射文件等 ; 客户端主要用来查找用户域所在的域服务器地址信息 Hive 的数据管理 Hive 是建立在 Hadoop 上的数据仓库基础构架 它提供了一系列的工具, 用来进行数据提取 转化 加载, 这是一种可以存储 查询和分析存储在 Hadoop 中的大规模数据的机制 Hive 定义了简单的类 SQL 的查询语言, 称为 Hive QL, 它允许熟悉 SQL 的用户用 SQL 语言查询数据 作为一个数据仓库,Hive 的数据管理按照使用层次可以从元数据存储 数据存储和数据交换三方面来介绍

14 14 Hadoop 实战 (1) 元数据存储 Hive 将元数据存储在 RDBMS 中, 有三种模式可以连接到数据库 : Single User Mode : 此模式连接到一个 In-memory 的数据库 Derby, 一般用于 Unit Test Multi User Mode: 通过网络连接到一个数据库中, 这是最常用的模式 Remote Server Mode : 用于非 Java 客户端访问元数据库, 在服务器端启动一个 MetaStoreServer, 客户端利用 Thrift 协议通过 MetaStoreServer 来访问元数据库 (2) 数据存储首先,Hive 没有专门的数据存储格式, 也没有为数据建立索引, 用户可以非常自由地组织 Hive 中的表, 只需要在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符, 它就可以解析数据了 其次,Hive 中所有的数据都存储在 HDFS 中,Hive 中包含 4 种数据模型 :Table External Table Partition 和 Bucket Hive 中的 Table 和数据库中的 Table 在概念上是类似的, 每一个 Table 在 Hive 中都有一个相应的目录来存储数据 例如, 一个表 pvs, 它在 HDFS 中的路径为 :/wh/pvs, 其中, wh 是在 hive-site.xml 中由 ${hive.metastore.warehouse.dir 指定的数据仓库的目录, 所有的 Table 数据 ( 不包括 External Table) 都保存在这个目录中 (3) 数据交换数据交换主要分为以下几部分, 如图 1-5 所示 用户接口 : 包括客户端 Web 界面和数据库接口 元数据存储 : 通常存储在关系数据库中, 如 MySQL Derby 等 解释器 编译器 优化器 执行器 Hadoop: 利用 HDFS 进行存储, 利用 MapReduce 进行计算 用户接口主要有三个 : 客户端 数据库接口和 Web 界面, 其中最常用的是客户端 Client 是 Hive 的客户端, 当启动 Client 模式时, 用户会想要连接 Hive Server, 这时需要指出 Hive Server 所在的节点, 并且在该节点启动 HiveServer Web 界面是通过浏览器访问 Hive 的 Hive 将元数据存储在数据库中, 如 MySQL Derby 中 Hive 中的元数据包括表的名字 表的列 表的分区 表分区的属性 表的属性 ( 是否为外部表等 ) 表的数据所在目录等 解释器 编译器 优化器完成 Hive QL 查询语句从词法分析 语法分析 编译 优化到查询计划的生成 生成的查询计划存储在 HDFS 中, 并且随后由 MapReduce 调用执行 Hive 的数据存储在 HDFS 中, 大部分的查询由 MapReduce 完成 ( 包含 * 的查询不会生成 MapRedcue 任务, 比如 select * from tbl) 以上从 Hadoop 的分布式文件系统 HDFS 分布式数据库 HBase 和数据仓库工具 Hive 入手介绍了 Hadoop 的数据管理, 它们都通过自己的数据定义 体系结构实现了数据从宏观到微观的立体化管理, 完成了 Hadoop 平台上大规模的数据存储和任务处理

15 第 1 章 Hadoop 简介 15 客户端 数据库接口 Web 界面 Thrift 服务器 元数据存储 驱动器 ( 编译器 优化器等 ) HIVE JobTracker NameNode 数据节点任务执行单元 Hadoop 图 1-5 Hive 数据交换图 1.7 Hadoop 集群安全策略 众所周知,Hadoop 的优势在于其能够将廉价的普通 PC 组织成能够高效稳定处理事务的大型集群, 企业正是利用这一特点来构架 Hadoop 集群 获取海量数据的高效处理能力的 但是,Hadoop 集群搭建起来后如何保证它安全稳定地运行呢? 旧版本的 Hadoop 中没有完善的安全策略, 导致 Hadoop 集群面临很多风险, 例如, 用户可以以任何身份访问 HDFS 或 MapReduce 集群, 可以在 Hadoop 集群上运行自己的代码来冒充 Hadoop 集群的服务, 任何未被授权的用户都可以访问 DataNode 节点的数据块等 经过 Hadoop 安全小组的努力, 在 Hadoop 版本中已经加入最新的安全机制和授权机制 (Simple 和 Kerberos), 使 Hadoop 集群更加安全和稳定 下面从用户权限管理 HDFS 安全策略和 MapReduce 安全策略三个方面简要介绍 Hadoop 的集群安全策略 有关安全方面的基础知识如 Kerberos 认证等读者可自行查阅相关资料

16 16 Hadoop 实战 (1) 用户权限管理 Hadoop 上的用户权限管理主要涉及用户分组管理, 为更高层的 HDFS 访问 服务访问 Job 提交和配置 Job 等操作提供认证和控制基础 Hadoop 上的用户和用户组名均由用户自己指定, 如果用户没有指定, 那么 Hadoop 会调用 Linux 的 whoami 命令获取当前 Linux 系统的用户名和用户组名作为当前用户的对应名, 并将其保存在 Job 的 user.name 和 group.name 两个属性中 这样用户所提交 Job 的后续认证和授权以及集群服务的访问都将基于此用户和用户组的权限及认证信息进行 例如, 在用户提交 Job 到 JobTracker 时,JobTracker 会读取保存在 Job 路径下的用户信息并进行认证, 在认证成功并获取令牌之后,JobTracker 会根据用户和用户组的权限信息将 Job 提交到 Job 队列 ( 具体细节参见本小节的 HDFS 安全策略和 MapReduce 安全策略 ) Hadoop 集群的管理员是创建和配置 Hadoop 集群的用户, 它可以配置集群, 使用 Kerberos 机制进行认证和授权 同时管理员可以在集群的服务 ( 集群的服务主要包括 NameNode DataNode JobTracker 和 TaskTracker) 授权列表中添加或更改某确定用户和用户组, 系统管理员同时负责 Job 队列和队列的访问控制矩阵的创建 (2)HDFS 安全策略用户和 HDFS 服务之间的交互主要有两种情况 : 用户机和 NameNode 之间的 RPC 交互获取待通信的 DataNode 位置, 客户机和 DataNode 交互传输数据块 RPC 交互可以通过 Kerberos 或授权令牌来认证 在认证与 NameNode 的连接时, 用户需要使用 Kerberos 证书来通过初试认证, 获取授权令牌 授权令牌可以在后续用户 Job 与 NameNode 连接的认证中使用, 而不必再次访问 Kerberos Key Server 授权令牌实际上是用户机与 NameNode 之间共享的密钥 授权令牌在不安全的网络上传输时, 应给予足够的保护, 防止被其他用户恶意窃取, 因为获取授权令牌的任何人都可以假扮成认证用户与 NameNode 进行不安全的交互 需要注意的是, 每个用户只能通过 Kerberos 认证获取唯一一个新的授权令牌 用户从 NameNode 获取授权令牌之后, 需要告诉 NameNode : 谁是指定的令牌更新者 指定的更新者在为用户更新令牌时应通过认证确定自己就是 NameNode 更新令牌意味着延长令牌在 NameNode 上的有效期 为了使 MapReduce Job 使用一个授权令牌, 用户应将 JobTracker 指定为令牌更新者 这样同一个 Job 的所有 Task 都会使用同一个令牌 JobTracker 需要保证这一令牌在整个任务的执行过程中都是可用的, 在任务结束之后, 它可以选择取消令牌 数据块的传输可以通过块访问令牌来认证, 每一个块访问令牌都由 NameNode 生成, 它们都是特定的 块访问令牌代表着数据访问容量, 一个块访问令牌保证用户可以访问指定的数据块 块访问令牌由 NameNode 签发被用在 DataNode 上, 其传输过程就是将 NameNode 上的认证信息传输到 DataNode 上 块访问令牌是基于对称加密模式生成的,NameNode 和 DataNode 共享了密钥 对于每个令牌,NameNode 基于共享密钥计算一个消息认证码 (Message Authentication Code,MAC) 接下来, 这个消息认证码就会作为令牌验证器成为令牌的主要组成部分 当一个 DataNode 接收到一个令牌时, 它会使用自己的共享密钥重新

17 第 1 章 Hadoop 简介 17 计算一个消息认证码, 如果这个认证码同令牌中的认证码匹配, 那么认证成功 (3)MapReduce 安全策略 MapReduce 安全策略主要涉及 Job 提交 Task 和 Shuffle 三个方面 对于 Job 提交, 用户需要将 Job 配置 输入文件和输入文件的元数据等写入用户 home 文件夹下, 这个文件夹只能由该用户读 写和执行 接下来用户将 home 文件夹位置和认证信息发送给 JobTracker 在执行过程中,Job 可能需要访问多个 HDFS 节点或其他服务, 因此,Job 的安全凭证将以 <String key, binary value> 形式保存在一个 Map 数据结构中, 在物理存储介质上将保存在 HDFS 中 JobTracker 的系统目录下, 并分发给每个 TaskTracker Job 的授权令牌将 NameNode 的 URL 作为其关键信息 为了防止授权令牌过期,JobTracker 会定期更新授权令牌 Job 结束之后所有的令牌都会失效 为了获取保存在 HDFS 上的配置信息,JobTracker 需要使用用户的授权令牌访问 HDFS, 读取必需的配置信息 任务 (Task) 的用户信息沿用生成 Task 的 Job 的用户信息, 因为通过这个方式能保证一个用户的 Job 不会向 TaskTracker 或其他用户 Job 的 Task 发送系统信号 这种方式还保证了本地文件有权限高效地保存私有信息 在用户提交 Job 后,TaskTracker 会接收到 JobTracker 分发的 Job 安全凭证, 并将其保存在本地仅对该用户可见的 Job 文件夹下 在与 TaskTracker 通信的时候,Task 会用到这个凭证 当一个 Map 任务完成时, 它的输出被发送给管理此任务的 TaskTracker 每一个 Reduce 将会与 TaskTracker 通信以获取自己的那部分输出, 此时, 就需要 MapReduce 框架保证其他用户不会获取这些 Map 的输出 Reduce 任务会根据 Job 凭证计算请求的 URL 和当前时间戳的消息认证码 这个消息认证码会和请求一起发到 TaskTracker, 而 TaskTracker 只会在消息认证码正确并且在封装时间戳的 N 分钟之内提供服务 在 TaskTracker 返回数据时, 为了防止数据被木马替换, 应答消息的头部将会封装根据请求中的消息认证码计算而来的新消息认证码和 Job 凭证, 从而保证 Reduce 能够验证应答消息是由正确的 TaskTracker 发送而来 1.8 本章小结 本章首先介绍了 Hadoop 分布式计算平台 : 它是由 Apache 软件基金会开发的一个开源分布式计算平台 以 Hadoop 分布式文件系统 (HDFS) 和 MapReduce(Google MapReduce 的开源实现 ) 为核心的 Hadoop 为用户提供了系统底层细节透明的分布式基础架构 由于 Hadoop 拥有可计量 成本低 高效 可信等突出特点, 基于 Hadoop 的应用已经遍地开花, 尤其是在互联网领域 本章接下来介绍了 Hadoop 项目及其结构, 现在 Hadoop 已经发展成为一个包含多个子项目的集合, 被用于分布式计算, 虽然 Hadoop 的核心是 Hadoop 分布式文件系统和 MapReduce, 但 Hadoop 下的 Common Avro Chukwa Hive HBase 等子项目提供了互补性服务或在核心层之上提供了更高层的服务 紧接着, 简要介绍了以 HDFS 和 MapReduce 为核心的 Hadoop 体系结构

18 18 Hadoop 实战 本章之后又从分布式系统的角度介绍了 Hadoop 是如何做到并行计算和数据管理的 分布式计算平台 Hadoop 实现了分布式文件系统和分布式数据库 Hadoop 中的分布式文件系统 HDFS 能够实现数据在电脑集群组成的云上高效的存储和管理功能,Hadoop 中的并行编程框架 MapReduce 基于 HDFS 来保证用户可以编写应用于 Hadoop 的并行应用程序 本章又介绍了 Hadoop 的数据管理, 主要包括 Hadoop 的分布式文件系统 HDFS 分布式数据库 HBase 和数据仓库工具 Hive 它们都有自己完整的数据定义和体系结构, 以及实现数据从宏观到微观的立体管理数据办法, 这都为 Hadoop 平台的数据存储和任务处理打下了基础 本章最后还介绍了关于 Hadoop 的一些基本的安全策略, 包括用户权限管理 HDFS 安全策略和 MapReduce 安全策略, 为用户的实际使用提供了参考 本章中的许多内容在本书后面的章节中会详细介绍

19 第 2 章 Hadoop 的安装与配置 本章内容 在 Linux 上安装与配置 Hadoop 在 Mac OSX 上安装与配置 Hadoop 在 Windows 上安装与配置 Hadoop 安装和配置 Hadoop 集群日志分析及几个小技巧本章小结

20 20 Hadoop 实战 Hadoop 的安装非常简单, 大家可以在官网上下载到最新的几个版本, 截至本书截稿时, Hadoop 的最新版本是 1.0.1, 下载网址为 Hadoop 是为了在 Linux 平台上使用而开发的, 但是在一些主流的操作系统如 UNIX Windows 甚至 Mac OS X 系统上 Hadoop 也运行良好 不过, 在 Windows 上运行 Hadoop 稍显复杂, 首先必须安装 Cygwin 来模拟 Linux 环境, 然后才能安装 Hadoop 本章将介绍在 Linux Mac OS X 和 Windows 系统上安装最新的 Hadoop1.0.1 版本, 其中,Linux 系统是 Ubuntu 11.10,Mac OS X 系统是 版本,Windows 系统采用 Windows Xp sp3 这些安装步骤均由笔者成功实践过, 大家可直接参照执行 2.1 在 Linux 上安装与配置 Hadoop 在 Linux 上安装 Hadoop 之前, 需要先安装两个程序 : 1)JDK 1.6( 或更高版本 ) Hadoop 是用 Java 编写的程序,Hadoop 的编译及 MapReduce 的运行都需要使用 JDK 因此在安装 Hadoop 前, 必须安装 JDK 1.6 或更高版本 2)SSH( 安全外壳协议 ), 推荐安装 OpenSSH Hadoop 需要通过 SSH 来启动 Slave 列表中各台主机的守护进程, 因此 SSH 也是必须安装的, 即使是安装伪分布式版本 ( 因为 Hadoop 并没有区分开集群式和伪分布式 ) 对于伪分布式,Hadoop 会采用与集群相同的处理方式, 即按次序启动文件 conf/slaves 中记载的主机上的进程, 只不过在伪分布式中 Salve 为 localhost( 即为自身 ), 所以对于伪分布式 Hadoop,SSH 一样是必需的 安装 JDK 1.6 下面介绍安装 JDK 1.6 的具体步骤 (1) 下载和安装 JDK 1.6 确保可以连接到互联网, 从 页面下载 JDK 1.6 安装包 ( 文件名类似 jdk-***-linux-i586.bin, 不建议安装 JDK 1.7 版本, 因为并不是所有软件都支持 1.7 版本 ) 到 JDK 安装目录 ( 本章假设 IDK 安装目录均为 /usr/lib/ jvm/jdk) (2) 手动安装 JDK 1.6 在终端下进入 JDK 安装目录, 并输入命令 : sudo chmod u+x jdk-***-linux-i586.bin 修改完权限之后就可以进行安装了, 在终端输入命令 : sudo -s./jdk-***-linux-i586.bin 安装结束之后就可以开始配置环境变量了 (3) 配置环境变量输入命令 :

21 第2章 Hadoop 的安装与配置 21 sudo gedit /etc/profile 输入密码 打开 profile 文件 在文件最下面输入如下内容 #set Java Environment export JAVA_HOME=/usr/lib/jvm/jdk export CLASSPATH=".:$JAVA_HOME/lib:$CLASSPATH" export PATH="$JAVA_HOME/:$PATH" 这一步的意义是配置环境变量 使系统可以找到 JDK 4 验证 JDK 是否安装成功 输入命令 java version 会出现如下 JDK 版本信息 java version "1.6.0_22" Java(TM) SE Runtime Environment (build 1.6.0_22-b04) Java HotSpot(TM) Client VM (build 17.1-b03, mixed mode, sharing) 如 果 出 现 上 述 JDK 版 本 信 息 说 明 当 前 安 装 的 JDK 并 未 设 置 成 Ubuntu 系 统 默 认 的 JDK 接下来还需要手动将安装的 JDK 设置成系统默认的 JDK 5 手动设置系统默认 JDK 在终端依次输入命令 sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk/bin/java 300 sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk/bin/javac 300 sudo update-alternatives --config java 接下来输入 java version 就可以看到所安装的 JDK 的版本信息了 配置 SSH 免密码登录 同样以 Ubuntu 为例 假设用户名为 u 1 确认已经连接上互联网 然后输入命令 sudo apt-get install ssh 2 配置为可以免密码登录本机 首先查看在 u 用户下是否存在.ssh 文件夹 注意 ssh 前面有. 这是一个隐藏文件夹 输入命令 ls a /home/u 一般来说 安装 SSH 时会自动在当前用户下创建这个隐藏文件夹 如果没有 可以手 动创建一个 接下来 输入命令 注意下面命令中不是双引号 是两个单引号 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 解释一下 ssh-keygen 代表生成密钥 -t 注意区分大小写 表示指定生成的密钥类型

22 22 Hadoop 实战 dsa 是 dsa 密钥认证的意思, 即密钥类型 ;-P 用于提供密语 ;-f 指定生成的密钥文件 在 Ubuntu 中,~ 代表当前用户文件夹, 此处即 /home/u 这个命令会在.ssh 文件夹下创建 id_dsa 及 id_dsa.pub 两个文件, 这是 SSH 的一对私钥 和公钥, 类似于钥匙和锁, 把 id_dsa.pub( 公钥 ) 追加到授权的 key 中去 输入命令 : cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 这条命令的功能是把公钥加到用于认证的公钥文件中, 这里的 authorized_keys 是用于认 证的公钥文件 至此免密码登录本机已配置完毕 3) 验证 SSH 是否已安装成功, 以及是否可以免密码登录本机 输入命令 : ssh version 显示结果 : OpenSSH_5.8p1 Debian-7ubuntu1, OpenSSL 1.0.0e 6 Sep 2011 Bad escape character 'rsion'. 显示 SSH 已经安装成功了 输入命令 : ssh localhost 会有如下显示 : The authenticity of host 'localhost (::1)' can't be established. RSA key fingerprint is 8b:c3:51:a5:2a:31:b7:74:06:9d:62:04:4f:84:f8:77. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'localhost' (RSA) to the list of known hosts. Linux master generic #48-Ubuntu SMP Fri Oct 16 14:04:26 UTC 2011 i686 To access official Ubuntu documentation, please visit: Last login: Sat Feb 18 17:12: from master admin@hadoop:~$ 这说明已经安装成功, 第一次登录时会询问是否继续链接, 输入 yes 即可进入 实际上, 在 Hadoop 的安装过程中, 是否免密码登录是无关紧要的, 但是如果不配置免密码登录, 每次启动 Hadoop 都需要输入密码以登录到每台机器的 DataNode 上, 考虑到一般的 Hadoop 集群动辄拥有数百或上千台机器, 因此一般来说都会配置 SSH 的免密码登录 安装并运行 Hadoop 介绍 Hadoop 的安装之前, 先介绍一下 Hadoop 对各个节点的角色定义 Hadoop 分别从三个角度将主机划分为两种角色 第一, 最基本的划分为 Master 和

23 第 2 章 Hadoop 的安装与配置 23 Slave, 即主人与奴隶 ; 第二, 从 HDFS 的角度, 将主机划分为 NameNode 和 DataNode( 在 分布式文件系统中, 目录的管理很重要, 管理目录相当于主人, 而 NameNode 就是目录管理 者 ); 第三, 从 MapReduce 的角度, 将主机划分为 JobTracker 和 TaskTracker( 一个 Job 经常 被划分为多个 Task, 从这个角度不难理解它们之间的关系 ) Hadoop 有官方发行版与 cloudera 版, 其中 cloudera 版是 Hadoop 的商用版本, 这里先介 绍 Hadoop 官方发行版的安装方法 Hadoop 有三种运行方式 : 单机模式 伪分布式与完全分布式 乍看之下, 前两种方式 并不能体现云计算的优势, 但是它们便于程序的测试与调试, 所以还是很有意义的 你可以在以下地址获得 Hadoop 的官方发行版 : Hadoop/core/ 下载 hadoop tar.gz 并将其解压, 本书后续都默认将 Hadoop 解压到 /home/u/ 目录下 (1) 单机模式配置方式 安装单机模式的 Hadoop 无须配置, 在这种方式下,Hadoop 被认为是一个单独的 Java 进程, 这种方式经常用来调试 (2) 伪分布式 Hadoop 配置 可以把伪分布式的 Hadoop 看做只有一个节点的集群, 在这个集群中, 这个节点既是 Master, 也是 Slave; 既是 NameNode, 也是 DataNode; 既是 JobTracker, 也是 TaskTracker 伪分布式的配置过程也很简单, 只需要修改几个文件 进入 conf 文件夹, 修改配置文件 指定 JDK 的安装位置 : Hadoop-env.sh: export JAVA_HOME=/usr/lib/jvm/jdk 这是 Hadoop 核心的配置文件, 这里配置的是 HDFS(Hadoop 的分布式文件系统 ) 的地址及端口号 conf/core-site.xml: <configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration> 以下是 Hadoop 中 HDFS 的配置, 配置的备份方式默认为 3, 在单机版的 Hadoop 中, 需要将其改为 1 conf/hdfs-site.xml: <configuration> <property> <name>dfs.replication</name> <value>1</value>

24 24 Hadoop 实战 </property> </configuration> 以下是 Hadoop 中 MapReduce 的配置文件 配置 JobTracker 的地址及端口 conf/mapred-site.xml: <configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration> 接下来 在启动 Hadoop 前 需要格式化 Hadoop 的文件系统 HDFS 进入 Hadoop 文件 夹 输入命令 bin/hadoop NameNode format 格式化文件系统 接下来启动 Hadoop 输入命令 启动所有进程 bin/start-all.sh 最后 验证 Hadoop 是否安装成功 打开浏览器 分别输入网址 (MapReduce 的 Web 页面 ) (HDFS 的 Web 页面 ) 如果都能查看 说明 Hadoop 已经安装成功 对 于 Hadoop 来 说 启 动 所 有 进 程 是 必 须 的 但 是 如 果 有 必 要 你 依 然 可 以 只 启 动 HDFS start-dfs.sh 或 MapReduce start-mapred.sh 关于完全分布式的 Hadoop 会在 2.4 节详述 2.2 在 Mac OSX 上安装与配置 Hadoop 由于现在越来越多的人使用 Mac Book 故笔者在本章中增加了在 Mac OS X 上安装与 配置 Hadoop 的内容 供使用 Mac Book 的读者参考 安装 Homebrew Mac OS X 上的 Homebrew 是类似于 Ubuntu 下 apt 的一种软件包管理器 利用它可以自 动下载和安装软件包 安装 Homebrew 之后 就可以使用 Homebrew 自动下载安装 Hadoop 安装 Homebrew 的步骤如下 1 从 Apple 官方下载并安装内置 GCC 编译器 Xcode 现在版本为 4.2 安装 Xcode 主要是因为一些软件包的安装依赖于本地环境 需要在本地编译源码 Xcode 的下载地址为

25 第2章 Hadoop 的安装与配置 25 2 使用命令行安装 Homebrew 输入命令 /usr/bin/ruby -e "$(/usr/bin/curl -fkssl master/library/contributions/install_homebrew.rb)" 这个命令会将 Homebrew 安装在 /usr/local 目录下 以保证在使用 Homebrew 安装软件 包时不用使用 sudo 命令 安装完成后可以使用 brew v 命令查看是否安装成功 使用 Homebrew 安装 Hadoop 安装完 Homebrew 之后 就可以在命令行输入下面的命令来自动安装 Hadoop 自动安 装的 Hadoop 在 /usr/local/cellar/hadoop 路径下 需要注意的是 在使用 brew 安装软件时 会自动检测安装包的依赖关系 并安装有依赖关系的包 在这里 brew 就会在安装 Hadoop 时 自动下载 JDK 和 SSH 并进行安装 brew install hadoop 配置 SSH 和使用 Hadoop 接下来需要配置 SSH 免密码登录和启动 Hadoop 由于其步骤和内容与 Linux 的配置完 全相同 故这里不再赘述 2.3 在 Windows 上安装与配置 Hadoop 安装 JDK 1.6 或更高版本 相对于 Linux JDK 在 Windows 上的安装过程更容易 你可以在 zh_cn/download/manual.jsp 下 载 到 最 新 版 本 的 JDK 这 里 再 次 申 明 Hadoop 的 编 译 及 MapReduce 程序的运行 很多地方都需要使用 JDK 的相关工具 因此只安装 JRE 是不够的 安装过程十分简单 运行安装程序即可 程序会自动配置环境变量 在之前的版本中还 没有这项功能 新版本的 JDK 已经可以自动配置环境变量了 安装 Cygwin Cygwin 是 在 Windows 平 台 下 模 拟 UNIX 环 境 的 一 个 工 具 只 有 通 过 它 才 可 以 在 Windows 环境下安装 Hadoop 可以通过下面的链接下载 Cygwin 双击运行安装程序 选择 install from internet 根据网络状况 选择合适的源下载程序 进入 select packages 界面 然后进入 Net 选中 OpenSSL 及 OpenSSH 如图 2-1 所示 图 2-1 勾选 openssl 及 openssh

26 26 Hadoop 实战 如果打算在 Eclipse 上编译 Hadoop 还必须安装 Base Category 下的 sed 如图 2-2 所示 图 2-2 勾选 sed 另外建议安装 Editors Category 下的 vim 以便在 Cygwin 上直接修改配置文件 配置环境变量 依 次 右 击 我 的 电 脑 在 弹 出 的 快 捷 菜 单 中 依 次 单 击 属 性 高 级 系 统 设 置 环境变量 修改环境变量里的 path 设置 在其后添加 Cygwin 的 bin 目录 安装 sshd 服务 单击桌面上的 Cygwin 图标 启动 Cygwin 执行 ssh-host-config 命令 当要求输入 Yes/ No 时 选择输入 No 当显示 Have fun 时 表示 sshd 服务安装成功 启动 sshd 服务 在桌面上的 我的电脑 图标上右击 在弹出的快捷菜单中单击 管理 命令 启动 CYGWIN sshd 服务 或者直接在终端下输入下面的命令启动服务 net start sshd 配置 SSH 免密码登录 执行 ssh-keygen 命令生成密钥文件 按如下命令生成 authorized_keys 文件 cd ~/.ssh/ cp id_rsa.pub authorized_keys 完成上述操作后 执行 exit 命令先退出 Cygwin 窗口 如果不执行这一步操作 后续的 操作可能会遇到错误 接下来 重新运行 Cygwin 执行 ssh localhost 命令 在第一次执行时会有提示 然后输 入 yes 直接回车即可 安装并运行 Hadoop 在 Windows 上安装 Hadoop 与在 Linux 上安装的过程一样 这里就不再赘述了 不过有 两点需要注意 1 在配置 conf/hadoop-evn.sh 文件中 Java 的安装路径时 如果路径之间有空格 需要 将整个路径用双引号引起来 例如可以进行配置 export JAVA_HOME="/cygdrive/c/Program Files/Java/jdk1.6.0_22" 其中 cygdrive 表示安装 cygdrive 之后系统的根目录

27 第2章 Hadoop 的安装与配置 27 另外一种办法是在 cygwin 窗口使用类似下面的命令创建文件链接 使后面的文件指向 Windows 下安装的 JDK 然后将 conf/hadoop-env.sh 中 JDK 配置为此链接文件 $ ln -s /cygdrive/c/program\ Files/Java/jdk1.6.0_22 /usr/local/jdk 2 在配置 conf/mapred-site.xml 文件时 应增加对 mapred.child.tmp 属性的配置 配置 的值应为一个 Linux 系统的绝对路径 如果不配置 Job 在运行时就会报错 具体配置为 <property> <name>mapred.child.tmp</name> <value>/home/administrator/hadoop-1.0.1/tmp</value> </property> 同 样 需 要 在 conf/core-site.xml 文 件 中 为 hadoop.tmp.dir 属 性 配 置 一 个 和 mapred.child. tmp 属性相似的绝对路径 2.4 安装和配置 Hadoop 集群 网络拓扑 通常来说 一个 Hadoop 的集群体系结构由两层网络拓扑组成 如图 2-3 所示 结合实 际应用来看 每个机架中会有 30~40 台机器 这些机器共享一个 1GB 带宽的网络交换机 在所有的机架之上还有一个核心交换机或路由器 通常来说其网络交换能力为 1GB 或更高 可以很明显地看出 同一个机架中机器节点之间的带宽资源肯定要比不同机架中机器节点间 丰富 这也是 Hadoop 随后设计数据读写分发策略要考虑的一个重要因素 Switch1 Rack1 Rack2 Node1 Node2 Node3 Node4 Node5 Node6 Disks Disks Disks Disks Disks Disks 图 Hadoop 的网络拓扑结构 定义集群拓扑 在实际应用中 为了使 Hadoop 集群获得更高的性能 读者需要配置集群 使 Hadoop 能够感知其所在的网络拓扑结构 当然 如果集群中机器数量很少且存在于一个机架中 那 么就不用做太多额外的工作 而当集群中存在多个机架时 就要使 Hadoop 清晰地知道每台

28 28 Hadoop 实战 机器所在的机架 随后, 在处理 MapReduce 任务时,Hadoop 就会优先选择在机架内部做数 据传输, 而不是在机架间传输, 这样就可以更充分地使用网络带宽资源 同时,HDFS 可以 更加智能地部署数据副本, 并在性能和可靠性间找到最优的平衡 在 Hadoop 中, 网络的拓扑结构 机器节点及机架的网络位置定位都是通过树结构来 描述的 通过树结构来确定节点间的距离, 这个距离是 Hadoop 做决策判断时的参考因素 NameNode 也是通过这个距离来决定应该把数据副本放到哪里的 当一个 Map 任务到达时, 它会被分配到一个 TaskTracker 上运行,JobTracker 节点则会使用网络位置来确定 Map 任务 执行的机器节点 在图 2-3 中, 笔者使用树结构来描述网络拓扑结构, 主要包括两个网络位置 : 交换机 / 机架 1 和交换机 / 机架 2 因为图 2-3 中的集群只有一个最高级别的交换机, 所以此网络拓扑 可简化描述为 / 机架 1 和 / 机架 2 在配置 Hadoop 时,Hadoop 会确定节点地址和其网络位置的映射, 此映射在代码中通过 Java 接口 DNSToSwitchMaping 实现, 代码如下 : public interface DNSToSwitchMapping { public List<String> resolve(list<string> names); 其中参数 names 是 IP 地址的一个 List 数据, 这个函数的返回值为对应网络位置的字符串列表 在 opology.node.switch.mapping.impl 中的配置参数定义了一个 DNSToSwitchMaping 接口的实现,NameNode 通过它确定完成任务的机器节点所在的网络位置 在图 2-3 的实例中, 可以将节点 1 节点 2 节点 3 映射到 / 机架 1 中, 节点 4 节点 5 节点 6 映射到 / 机架 2 中 事实上在实际应用中, 管理员可能不需要手动做额外的工作去配置这些映射关系, 系统有一个默认的接口实现 ScriptBasedMapping 它可以运行用户自定义的一个脚本区完成映射 如果用户没有定义映射, 它会将所有的机器节点映射到一个单独的网络位置中默认的机架上 ; 如果用户定义了映射, 那么这个脚本的位置由 topology.script.file. name 的属性控制 脚本必须获取一批主机的 IP 地址作为参数进行映射, 同时生成一个标准的网络位置给输出 建立和安装 Cluster 要建立 Hadoop 集群, 首先要做的就是选择并购买机器, 在机器到手之后, 就要进行网络部署并安装软件了 安装和配置 Hadoop 有很多方法, 这部分内容在前文已经详细讲解过 ( 见 2.1 节 2.2 节和 2.3 节 ), 同时还告诉了读者在实际部署时应该考虑的情况 为了简化我们在每个机器节点上安装和维护相同软件的过程, 通常会采用自动安装法, 比如 Red Hat Linux 下的 Kickstart 或 Debian 的全程自动化安装 这些工具先会记录你的安装过程, 以及你对选项的选择, 然后根据记录来自动安装软件 同时它们会在每个进程结尾提供一个钩子执行脚本, 在对那些不包含在标准安装中的最终系统进行调整和自定义时这是非常有用的

29 第2章 Hadoop 的安装与配置 29 下面我们将具体介绍如何部署和配置 Hadoop Hadoop 为了应对不同的使用需求 不管 是开发 实际应用还是研究 有着不同的运行方式 包括单机式 单机伪分布式 完全分 布式等 前面已经详细介绍了在 Windows MacOSX 和 Linux 下 Hadoop 的安装和配置 下 面将对 Hadoop 的分布式配置做具体的介绍 1. Hadoop 集群的配置 在配置伪分布式的过程中 大家也许会觉得 Hadoop 的配置很简单 但那只是最基本的 配置 Hadoop 的配置文件分为两类 1 只 读 类 型 的 默 认 文 件 src/core/core-default.xml src/hdfs/hdfs-default.xml src/ mapred/mapred-default.xml conf/mapred-queues.xml 2 定位 site-specific 设置 conf/core-site.xml conf/hdfs-site.xml conf/mapred-site. xml conf/mapred-queues.xml 除此之外 也可以通过设置 conf/hadoop-env.sh 来为 Hadoop 的守护进程设置环境变量 在 bin/ 文件夹内 Hadoop 是 通 过 org.apache.hadoop.conf.configuration 来 读 取 配 置 文 件 的 在 Hadoop 的 设置中 Hadoop 的配置是通过资源 resource 定位的 每个资源由一系列 name/value 对以 XML 文件的形式构成 它以一个字符串命名或以 Hadoop 定义的 Path 类命名 这个类是用 于定义文件系统内的文件或文件夹的 如果是以字符串命名的 Hadoop 会通过 classpath 调 用此文件 如果以 Path 类命名 那么 Hadoop 会直接在本地文件系统中搜索文件 资源设定有两个特点 下面进行具体介绍 1 Hadoop 允许定义最终参数 final parameters 如果任意资源声明了 final 这个值 那么之后加载的任何资源都不能改变这个值 定义最终资源的格式是这样的 <property> <name>dfs.client.buffer.dir</name> <value>/tmp/hadoop/dfs/client</value> <final>true</final> // 注意这个值 </property> 2 Hadoop 允许参数传递 示例如下 当 tenpdir 被调用时 basedir 会作为值被调用 <property> <name>basedir</name> <value>/user/${user.name</value> <property> <property> <name>tempdir</name> <value>${basedir/tmp</value> </property> 前面提到 读者可以通过设置 conf/hadoop-env.sh 为 Hadoop 的守护进程设置环境变量 一般来说 大家至少需要在这里设置在主机上安装的 JDK 的位置 JAVA_HOME 以

30 30 Hadoop 实战 使 Hadoop 找到 JDK 大家也可以在这里通过 HADOOP_*_OPTS 对不同的守护进程分别进 行设置, 如表 2-1 所示 表 2-1 守护进程 (Daemon) NameNode DataNode SecondaryNameNode JobTracker TaskTracker Hadoop 的守护进程配置表配置选项 (Configure Options) HADOOP_NAMENODE_OPTS HADOOP_DATANODE_OPTS HADOOP_SECONDARYNAMENODE_OPTS HADOOP_JOBTRACKER_OPTS HADOOP_TASKTRACKER_OPTS 例如, 如果想设置 NameNode 使用 parallelgc, 那么可以这样写 : export HADOOP_NameNode_OPTS="-XX:+UseParallelGC ${HADOOP_NAMENODE_OPTS" 在这里也可以进行其他设置, 比如设置 Java 的运行环境 (HADOOP_OPTS), 设置日志文件的存放位置 (HADOOP_LOG_DIR), 或者 SSH 的配置 (HADOOP_SSH_OPTS), 等等 关于 conf/core-site.xml conf/hdfs-site.xml conf/mapred-site.xml 的配置如表 2-2 ~ 表 2-4 所示 参数 (Parameter) fs.default.name 表 2-2 conf/core-site.xml 的配置 值 (Value) NameNode 的 IP 地址及端口 表 2-3 参数 (Parameter) dfs.name.dir dfs.data.dir conf/hdfs-site.xml 的配置值 (Value) NameNode 存储名字空间及汇报日志的位置 DataNode 存储数据块的位置 表 2-4 conf/mapred-site.xml 的配置 参数 (Parameter) mapreduce.jobtracker.address mapreduce.jobtracker.system.dir mapreduce.cluster.local.dir mapred.tasktracker.{map reduce.tasks.maximum dfs.hosts/dfs.hosts.exclude mapreduce.jobtracker.hosts.filename/ mapreduce.jobtracker.hosts.exclude.filename mapreduce.cluster.job-authorization-enabled JobTracker 的 IP 地址及端口 值 (Value) MapReduce 在 HDFS 上存储文件的位置, 例如 /Hadoop/ mapred/system/ MapReduce 的缓存数据存储在文件系统中的位置 每台 TaskTracker 所能运行的 Map 或 Reduce 的 task 最大数量 允许或禁止的 DataNode 列表 允许或禁止的 TaskTrackers 列表 布尔类型, 表示 Job 存取控制列表是否支持对 Job 的观察和修改

31 第 2 章 Hadoop 的安装与配置 31 一般而言, 除了规定端口 IP 地址 文件的存储位置外, 其他配置都不是必须修改的, 可以根据读者的需要决定采用默认配置还是自己修改 还有一点需要注意的是, 以上配置都被默认为最终参数 (final parameters), 这些参数都不可以在程序中再次修改 接下来可以看一下 conf/mapred-queues.xml 的配置列表, 如表 2-5 所示 表 2-5 conf/mapred-queues.xml 的配置 标签或属性 (Tag/Attribute) 值 (Value) 是否可刷新 queues 配置文件的根元素无意义 aclsenabled 布尔类型 <queues> 标签的属性, 表示存取控制列表是否支持控制 Job 的提交及所有 queue 的管理 queue <queues> 的子元素, 定义系统中的 queue 无意义 name <queue> 的子元素, 代表名字否 state <queue> 的子元素, 代表 queue 的状态是 acl-submit-job acl-administer-job <queue> 的子元素, 定义一个能提交 Job 到该 queue 的用户或组的名单列表 <queue> 的子元素, 定义一个能更改 Job 的优先级或能杀死已提交到该 queue 的 Job 用户或组的名单列表 properties <queues> 的子元素, 定义优先调度规则无意义 property <properties> 的子元素无意义 key <property> 的子元素调度程序指定 value <property> 的属性调度程序指定 是 是 是 相信大家不难猜出表 2-5 的 conf/mapred-queues.xml 文件是用来做什么的, 这个文件就 是用来设置 MapReduce 系统的队列顺序的 queues 是 JobTracker 中的一个抽象概念, 可以 在一定程度上管理 Job, 因此它为管理员提供了一种管理 Job 的方式 这种控制是常见且有 效的, 例如通过这种管理可以把不同的用户划分为不同的组, 或分别赋予他们不同的级别, 并且会优先执行高级别用户提交的 Job 按照这个思想, 很容易想到三种原则 : 同一类用户提交的 Job 统一提交到同一个 queue 中 ; 运行时间较长的 Job 可以提交到同一个 queue 中 ; 把很快就能运行完成的 Job 划分到一个 queue 中, 并且限制 queue 中 Job 的数量上限 queue 的有效性很依赖在 JobTracker 中通过 mapreduce.jobtracker.taskscheduler 设置的调 度规则 (scheduler) 一些调度算法可能只需要一个 queue, 不过有些调度算法可能很复杂, 需要设置很多 queue 对 queue 大部分设置的更改都不需要重新启动 MapReduce 系统就可以生效, 不过也有 一些更改需要重启系统才能有效, 具体如表 2-5 所示 conf/mapred-queues.xml 的文件配置与其他文件略有不同, 配置格式如下 : <queues aclsenabled="$aclsenabled"> <queue>

32 32 Hadoop 实战 <name>$queue-name</name> <state>$state</state> <queue> <name>$child-queue1</name> <properties> <property key="$key" value="$value"/>... </properties> <queue> <name>$grand-child-queue1</name>... </queue> </queue> <queue> <name>$child-queue2</name>... </queue> <queue> <name>$leaf-queue</name> <acl-submit-job>$acls</acl-submit-job> <acl-administer-jobs>$acls</acl-administer-jobs> <properties> <property key="$key" value="$value"/>... </properties> </queue> </queue> </queues> 以上这些就是 Hadoop 配置的主要内容 其他关于 Hadoop 配置方面的信息 诸如内存 配置等 如果有兴趣可以参阅官方的配置文档 2. 一个具体的配置 为了方便阐述 这里只搭建一个有三台主机的小集群 相信大家还没有忘记 Hadoop 对主机的三种定位方式 分别为 Master 和 Slave JobTracker 和 TaskTracker NameNode 和 DataNode 在分配 IP 地址时我们顺便规定一下角色 下面为这三台机器分配 IP 地址及相应的角色 master,namonode,jobtracker master 主机名 slave,datanode,tasktracker slave1 主机名 slave,datanode,tasktracker slave2 主机名 首先在三台主机上创建相同的用户 这是 Hadoop 的基本要求 1 在三台主机上均安装 JDK 1.6 并设置环境变量 2 在三台主机上分别设置 /etc/hosts 及 /etc/hostname

33 第2章 Hadoop 的安装与配置 33 hosts 这个文件用于定义主机名与 IP 地址之间的对应关系 /etc/hosts: localhost master slave slave2 hostname 这个文件用于定义 Ubuntu 的主机名 /etc/hostname: 你的主机名 如 master slave1 等 3 在这三台主机上安装 OpenSSH 并配置 SSH 可以免密码登录 安装方式不再赘述 建立 ~/.ssh 文件夹 如果已存在 则无须创建 生成密钥并配置 SSH 免密码登录本机 输入命令 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 将文件复制到两台 Slave 主机相同的文件夹内 输入命令 scp authorized_keys slave1:~/.ssh/ scp authorized_keys slave2:~/.ssh/ 查看是否可以从 Master 主机免密码登录 Slave 输入命令 ssh slave1 ssh slave2 4 配置三台主机的 Hadoop 文件 内容如下 conf/hadoop-env.sh: export JAVA_HOME=/usr/lib/jvm/jdk conf/core-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://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/tmp</value> </property> </configuration> conf/hdfs-site.xml:

34 34 Hadoop 实战 <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration> conf/mapred-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>mapred.job.tracker</name> <value>master:9001</value> </property> </configuration> conf/masters: master conf/slaves: slave1 slave2 5) 启动 Hadoop bin/hadoop NameNode format bin/start-all.sh 你可以通过以下命令或者通过 及 查看集群状态 Hadoop dfsadmin report 2.5 日志分析及几个小技巧 如果大家在安装的时候遇到问题, 或者按步骤安装完成却不能运行 Hadoop, 那么建议仔细查看日志信息 Hadoop 记录了详尽的日志信息, 日志文件保存在 logs 文件夹内 无论是启动还是以后会经常用到的 MapReduce 中的每一个 Job, 或是 HDFS 等相关信息,Hadoop 均存有日志文件以供分析 例如 :NameNode 和 DataNode 的 namespaceid 不一致, 这个错误是很多人在安装时都

35 第 2 章 Hadoop 的安装与配置 35 会遇到的 日志信息为 : java.io.ioexception: Incompatible namespaceids in /root/tmp/dfs/data:namenode namespaceid = ; datanode namespaceid = 若 HDFS 一直没有启动, 读者可以查询日志, 并通过日志进行分析, 日志提示信息显示 了 NameNode 和 DataNode 的 namespaceid 不一致 这个问题一般是由于两次或两次以上格式化 NameNode 造成的, 有两种方法可以解 决, 第一种方法是删除 DataNode 的所有资料, 第二种方法就是修改每个 DataNode 的 namespaceid( 位于 /dfs/data/current/version 文件中 ) 或修改 NameNode 的 namespaceid ( 位于 /dfs/name/current/version 文件中 ) 使其一致 下面这两种方法在实际应用也可能会用到 1) 重启坏掉的 DataNode 或 JobTracker 当 Hadoop 集群的某单个节点出现问题时, 一 般不必重启整个系统, 只须重启这个节点, 它会自动连入整个集群 在坏死的节点上输入如下命令即可 : bin/hadoop-daemon.sh start datanode bin/hadoop-daemon.sh start jobtracker 2) 动态加入 DataNode 或 TaskTracker 下面这条命令允许用户动态地将某个节点加入到集群中 bin/hadoop-daemon.sh --config./conf start datanode bin/hadoop-daemon.sh --config./conf start tasktracker 2.6 本章小结 本章主要讲解了 Hadoop 的安装和配置过程 Hadoop 的安装过程并不复杂, 基本配置也简单明了, 其中有几个关键点 : Hadoop 主要是用 Java 语言写的, 它无法使用一般 Linux 预装的 OpenJDK, 因此在安装 Hadoop 前要先安装 JDK( 版本要在 1.6 以上 ); 作为分布式系统,Hadoop 需要通过 SSH 的方式启动处于 slave 上的程序, 因此必须安装和配置 SSH 由此可见, 在安装 Hadoop 前需要安装 JDK 及 SSH Hadoop 在 Mac OS X 上的安装与 Linux 雷同, 在 Windows 系统上的安装与在 Linux 上有一点不同, 就是在 Windows 系统上需要通过 Cygwin 模拟 Linux 环境, 而 SSH 的安装也需要在安装 Cygwin 时进行选择, 请不要忘了这一点 集群配置只要记住 conf/hadoop-env.sh conf/core-site.xml conf/hdfs-site.xml conf/ mapred-site.xml conf/mapred-queues.xml 这 5 个文件的作用即可, 另外 Hadoop 有些配置是可以在程序中修改的, 这部分内容不是本章的重点, 因此没有详细说明

36 第 3 章 MapReduce 计算模型 本章内容 为什么要用 MapReduce MapReduce 计算模型 MapReduce 任务的优化 Hadoop 流 Hadoop Pipes 本章小结

37 第 3 章 MapReduce 计算模型 年,Google 发表了一篇论文, 向全世界的人们介绍了 MapReduce 现在已经到处都有人在谈论 MapReduce( 微软 雅虎等大公司也不例外 ) 在 Google 发表论文时, MapReduce 的最大成就是重写了 Google 的索引文件系统 而现在, 谁也不知道它还会取得多大的成就 MapReduce 被广泛地应用于日志分析 海量数据排序 在海量数据中查找特定模式等场景中 Hadoop 根据 Google 的论文实现了 MapReduce 这个编程框架, 并将源代码完全贡献了出来 本章就是要向大家介绍 MapReduce 这个流行的编程框架 3.1 为什么要用 MapReduce MapReduce 的流行是有理由的 它非常简单 易于实现且扩展性强 大家可以通过它 轻易地编写出同时在多台主机上运行的程序, 也可以使用 Ruby Python PHP 和 C++ 等非 Java 类语言编写 Map 或 Reduce 程序, 还可以在任何安装 Hadoop 的集群中运行同样的程序, 不论这个集群有多少台主机 MapReduce 适合处理海量数据, 因为它会被多台主机同时处理, 这样通常会有较快的速度 下面来看一个例子 引文分析是评价论文好坏的一个非常重要的方面, 本例只对其中最简单的一部分, 即论文 的被引用次数进行了统计 假设有很多篇论文 ( 百万级 ), 且每篇论文的引文形式如下所示 : References David M. Blei, Andrew Y. Ng, and Michael I. Jordan Latent dirichlet allocation. Journal of Machine Learning Research, 3: Samuel Brody and Noemie Elhadad An unsupervised aspect-sentiment model for online reviews. In NAACL '10. Jaime Carbonell and Jade Goldstein The use of mmr, diversity-based reranking for reordering documents and producing summaries. In SIGIR '98, pages Dennis Chong and James N. Druckman Identifying frames in political news. In Erik P. Bucy and R. Lance Holbert, editors, Sourcebook for Political Communication Research: Methods, Measures, and Analytical Techniques. Routledge. Cindy Chung and James W. Pennebaker The psychological function of function words. Social Communication: Frontiers of Social Psychology, pages G unes Erkan and Dragomir R. Radev Lexrank: graph-based lexical centrality as salience in text summarization. J. Artif. Int. Res., 22(1): Stephan Greene and Philip Resnik More than words: syntactic packaging and implicit sentiment. In NAACL '09, pages

38 38 Hadoop 实战 Aria Haghighi and Lucy Vanderwende Exploring content models for multi-document summarization. In NAACL '09, pages Sanda Harabagiu, Andrew Hickl, and Finley Lacatusu Negation, contrast and contradiction in text processing. 在单机运行时 想要完成这个统计任务 需要先切分出所有论文的名字存入一个 Hash 表中 然后遍历所有论文 查看引文信息 一一计数 因为文章数量很多 需要进行很多次 内外存交换 这无疑会延长程序的执行时间 但在 MapReduce 中 这是一个 WordCount 就 能解决的问题 3.2 MapReduce 计算模型 要了解 MapReduce 首先需要了解 MapReduce 的载体是什么 在 Hadoop 中 用于执行 MapReduce 任务的机器有两个角色 一个是 JobTracker 另一个是 TaskTracker JobTracker 是用 于管理和调度工作的 TaskTracker 是用于执行工作的 一个 Hadoop 集群中只有一台 JobTracker MapReduce Job 在 Hadoop 中 每个 MapReduce 任务都被初始化为一个 Job 每个 Job 又可以分为两个 阶段 Map 阶段和 Reduce 阶段 这两个阶段分别用两个函数来表示 即 Map 函数和 Reduce 函数 Map 函数接收一个 <key, value> 形式的输入 然后产生同样为 <key, value> 形式的中 间输出 Hadoop 会负责将所有具有相同中间 key 值的 value 集合到一起传递给 Reduce 函数 Reduce 函数接收一个如 <key, (list of values)> 形式的输入 然后对这个 value 集合进行处理 并输出结果 Reduce 的输出也是 <key, value> 形式的 为了方便理解 分别将三个 <key, value> 对标记为 <k1, v1> <k2, v2> <k3, v3> 那么 上面所述的过程就可以用图 3-1 来表示了 Input k1, v1 Map 图 k2, v2 Reduce k3, v3 Output MapReduce 程序数据变化的基本模型 Hadoop 中的 Hello World 程序 上面所述的过程是 MapReduce 的核心 所有的 MapReduce 程序都具有图 3-1 所示的结 构 下面我再举一个例子详述 MapReduce 的执行过程 大家初次接触编程时学习的不论是哪种语言 看到的第一个示例程序可能都是 Hello World 在 Hadoop 中也有一个类似于 Hello World 的程序 这就是 WordCount 本节会结合 这个程序具体讲解与 MapReduce 程序有关的所有类 这个程序的内容如下 package cn.edu.ruc.cloudcomputing.book.chapter03;

39 第 3 章 MapReduce 计算模型 39 import java.io.ioexception; import java.util.*; import org.apache.hadoop.fs.path; import org.apache.hadoop.conf.*; import org.apache.hadoop.io.*; import org.apache.hadoop.mapred.*; import org.apache.hadoop.util.*; public class WordCount { public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(longwritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { String line = value.tostring(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasmoretokens()) { word.set(tokenizer.nexttoken()); output.collect(word, one); 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 Exception { JobConf conf = new JobConf(WordCount.class); conf.setjobname("wordcount"); conf.setoutputkeyclass(text.class); conf.setoutputvalueclass(intwritable.class); conf.setmapperclass(map.class); conf.setreducerclass(reduce.class); conf.setinputformat(textinputformat.class);

40 40 Hadoop 实战 conf.setoutputformat(textoutputformat.class); FileInputFormat.setInputPaths(conf, new Path(args[0])); FileOutputFormat.setOutputPath(conf, new Path(args[1])); JobClient.runJob(conf); 同时, 为了叙述方便, 设定两个输入文件, 如下 : echo "Hello World Bye World" > file01 echo "Hello Hadoop Goodbye Hadoop" > file02 看到这个程序, 相信很多读者会对众多的预定义类感到很迷惑 其实这些类非常简单明了 首先,WordCount 程序的代码虽多, 但是执行过程却很简单, 在本例中, 它首先将输入文件读进来, 然后交由 Map 程序处理,Map 程序将输入读入后切出其中的单词, 并标记它的数目为 1, 形成 <word, 1> 的形式, 然后交由 Reduce 处理,Reduce 将相同 key 值 ( 也就是 word) 的 value 值收集起来, 形成 <word, list of 1> 的形式, 之后将这些 1 值加起来, 即为单词的个数, 最后将这个 <key, value> 对以 TextOutputFormat 的形式输出到 HDFS 中 针对这个数据流动过程, 我挑出了如下几句代码来表述它的执行过程 : JobConf conf = new JobConf(MyMapre.class); conf.setjobname("wordcount"); conf.setinputformat(textinputformat.class); conf.setoutputformat(textoutputformat.class); conf.setmapperclass(map.class); conf.setreducerclass(reduce.class); FileInputFormat.setInputPaths(conf, new Path(args[0])); FileOutputFormat.setOutputPath(conf, new Path(args[1])); 首先讲解一下 Job 的初始化过程 Main 函数调用 Jobconf 类来对 MapReduce Job 进行初始化, 然后调用 setjobname() 方法命名这个 Job 对 Job 进行合理的命名有助于更快地找到 Job, 以便在 JobTracker 和 TaskTracker 的页面中对其进行监视 接着就会调用 setinputpath() 和 setoutputpath() 设置输入输出路径 下面会结合 WordCount 程序重点讲解 Inputformat() OutputFormat() Map() Reduce() 这 4 种方法 1. InputFormat() 和 InputSplit InputSplit 是 Hadoop 中用来把输入数据传送给每个单独的 Map,InputSplit 存储的并非数据本身, 而是一个分片长度和一个记录数据位置的数组 生成 InputSplit 的方法可以通过 Inputformat() 来设置 当数据传送给 Map 时,Map 会将输入分片传送到 InputFormat() 上,InputFormat() 则调用 getrecordreader() 方法生成 RecordReader,RecordReader 再通过 creatkey() creatvalue() 方法创建可供 Map 处理的 <key, value> 对, 即 <k1, v1> 简而言之,

41 第 3 章 MapReduce 计算模型 41 InputFormat() 方法是用来生成可供 Map 处理的 <key, value> 对的 Hadoop 预定义了多种方法将不同类型的输入数据转化为 Map 能够处理的 <key, value> 对, 它们都继承自 InputFormat, 分别是 : BaileyBorweinPlouffe.BbpInputFormat ComposableInputFormat CompositeInputFormat DBInputFormat DistSum.Machine.AbstractInputFormat FileInputFormat 其中,FileInputFormat 又有多个子类, 分别为 : CombineFileInputFormat KeyValueTextInputFormat NLineInputFormat SequenceFileInputFormat TeraInputFormat TextInputFormat 其中,TextInputFormat 是 Hadoop 默认的输入方法, 在 TextInputFormat 中, 每个文件 ( 或其一部分 ) 都会单独作为 Map 的输入, 而这是继承自 FileInputFormat 的 之后, 每行数 据都会生成一条记录, 每条记录则表示成 <key, value> 形式 : key 值是每个数据的记录在数据分片中的字节偏移量, 数据类型是 LongWritable; value 值是每行的内容, 数据类型是 Text 也就是说, 输入数据会以如下的形式被传入 Map 中 : file01: 0 hello world bye world file02 0 hello hadoop bye hadoop 因为 file01 和 file02 都会被单独输入到一个 Map 中, 因此它们的 key 值都是 0 2. OutputFormat() 对于每一种输入格式都有一种输出格式与其对应 同样, 默认的输出格式是 TextOutputFormat, 这种输出方式与输入类似, 会将每条记录以一行的形式存入文本文件 不过, 它的键和值可以是任意形式的, 因为程序内部会调用 tostring() 方法将键和值转换为 String 类型再输出 最后的输出形式如下所示 : Bye 2 Hadoop 2 Hello 2 World 2

42 42 Hadoop 实战 3. Map() 和 Reduce() Map() 方法和 Reduce() 方法是本章的重点, 从前面的内容知道,Map() 函数接收经过 InputFormat 处理所产生的 <k1, v1>, 然后输出 <k2, v2> WordCount 的 Map() 函数如下 : public class MyMapre { public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(longwritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { String line = value.tostring(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasmoretokens()) { word.set(tokenizer.nexttoken()); output.collect(word, one); Map() 函数继承自 MapReduceBase, 并且它实现了 Mapper 接口, 此接口是一个范型类型, 它有 4 种形式的参数, 分别用来指定 Map() 的输入 key 值类型 输入 value 值类型 输出 key 值类型和输出 value 值类型 在本例中, 因为使用的是 TextInputFormat, 它的输出 key 值是 LongWritable 类型, 输出 value 值是 Text 类型, 所以 Map() 的输入类型即为 <LongWritable, Text> 如前面的内容所述, 在本例中需要输出 <word, 1> 这样的形式, 因此输出的 key 值类型是 Text, 输出的 value 值类型是 IntWritable 实现此接口类还需要实现 Map() 方法,Map() 方法会负责具体对输入进行操作, 在本例中,Map() 方法对输入的行以空格为单位进行切分, 然后使用 OutputCollect 收集输出的 <word, 1>, 即 <k2, v2> 下面来看 Reduce() 函数 : 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)); 与 Map() 类似,Reduce() 函数也继承自 MapReduceBase, 需要实现 Reducer 接口 Reduce() 函数以 Map() 的输出作为输入, 因此 Reduce() 的输入类型是 <Text, IneWritable>

43 第 3 章 MapReduce 计算模型 43 而 Reduce() 的输出是单词和它的数目, 因此, 它的输出类型是 <Text, IntWritable> Reduce() 函数也要实现 Reduce() 方法, 在此方法中,Reduce() 函数将输入的 key 值作为输出的 key 值, 然后将获得的多个 value 值加起来, 作为输出的 value 值 4. 运行 MapReduce 程序 读者可以在 Eclipse 里运行 MapReduce 程序, 也可以在命令行中运行 MapReduce 程 序, 但是在实际应用中, 还是推荐到命令行中运行程序 按照第 2 章介绍的步骤, 首先安装 Hadoop, 然后输入编译打包生成的 JAR 程序, 如下所示 ( 以 Hadoop 为例, 安装路径 是 ~/hadoop): mkdir FirstJar javac -classpath ~/hadoop/hadoop core.jar -d FirstJar WordCount.java jar -cvf wordcount.jar -C FirstJar/. 首先建立 FirstJar, 然后编译文件生成.class, 存放到文件夹 FirstJar 中, 并将 FirstJar 中的文件打包生成 wordcount.jar 文件 接着上传输入文件 ( 输入文件是 file01,file02, 存放在 ~/input): ~/hadoop/bin/hadoop dfs mkdir input ~/hadoop/bin/hadoop dfs put ~/input/file0* input 在此上传过程中, 先建立文件夹 input, 然后上传文件 file01 file02 到 input 中 最后运行生成的 JAR 文件, 为了叙述方便, 先将生成的 JAR 文件放入 Hadoop 的安装文件夹中 (HADOOP_HOME), 然后运行如下命令 ~/hadoop/bin/hadoop jar wordcount.jar WordCount input output 11/01/21 20:02:38 WARN mapred.jobclient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same. 11/01/21 20:02:38 INFO mapred.fileinputformat: Total input paths to process : 2 11/01/21 20:02:38 INFO mapred.jobclient: Running job: job_ _ /01/21 20:02:39 INFO mapred.jobclient: map 0% reduce 0% 11/01/21 20:02:49 INFO mapred.jobclient: map 100% reduce 0% 11/01/21 20:03:01 INFO mapred.jobclient: map 100% reduce 100% 11/01/21 20:03:03 INFO mapred.jobclient: Job complete: job_ _ /01/21 20:03:03 INFO mapred.jobclient: Counters: 18 11/01/21 20:03:03 INFO mapred.jobclient: Job Counters 11/01/21 20:03:03 INFO mapred.jobclient: Launched reduce tasks=1 11/01/21 20:03:03 INFO mapred.jobclient: Launched map tasks=2 11/01/21 20:03:03 INFO mapred.jobclient: Data-local map tasks=2 11/01/21 20:03:03 INFO mapred.jobclient: FileSystemCounters 11/01/21 20:03:03 INFO mapred.jobclient: FILE_BYTES_READ=100 11/01/21 20:03:03 INFO mapred.jobclient: HDFS_BYTES_READ=46 11/01/21 20:03:03 INFO mapred.jobclient: FILE_BYTES_WRITTEN=270 11/01/21 20:03:03 INFO mapred.jobclient: HDFS_BYTES_WRITTEN=31 11/01/21 20:03:03 INFO mapred.jobclient: Map-Reduce Framework 11/01/21 20:03:04 INFO mapred.jobclient: Reduce input groups=4 11/01/21 20:03:04 INFO mapred.jobclient: Combine output records=0

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

Hadoop 集 群 ( 第 6 期 ) WordCount 运 行 详 解 1 MapReduce 理 论 简 介 1.1 MapReduce 编 程 模 型 MapReduce 采 用 分 而 治 之 的 思 想, 把 对 大 规 模 数 据 集 的 操 作, 分 发 给 一 个 主 节 点 管 细 细 品 味 Hadoop Hadoop 集 群 ( 第 6 期 ) 精 华 集 锦 csaxp 虾 皮 工 作 室 http://www.cnblogs.com/xia520pi/ 2012 年 5 月 15 日 Hadoop 集 群 ( 第 6 期 ) WordCount 运 行 详 解 1 MapReduce 理 论 简 介 1.1 MapReduce 编 程 模 型 MapReduce 采

More information

长 安 大 学 硕 士 学 位 论 文 基 于 数 据 仓 库 和 数 据 挖 掘 的 行 为 分 析 研 究 姓 名 : 杨 雅 薇 申 请 学 位 级 别 : 硕 士 专 业 : 计 算 机 软 件 与 理 论 指 导 教 师 : 张 卫 钢 20100530 长安大学硕士学位论文 3 1 3系统架构设计 行为分析数据仓库的应用模型由四部分组成 如图3 3所示

More information

水晶分析师

水晶分析师 大数据时代的挑战 产品定位 体系架构 功能特点 大数据处理平台 行业大数据应用 IT 基础设施 数据源 Hadoop Yarn 终端 统一管理和监控中心(Deploy,Configure,monitor,Manage) Master Servers TRS CRYSTAL MPP Flat Files Applications&DBs ETL&DI Products 技术指标 1 TRS

More information

工程项目进度管理 西北工业大学管理学院 黄柯鑫博士 甘特图 A B C D E F G 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 甘特图的优点 : 直观明了 ( 图形化概要 ); 简单易懂 ( 易于理解 ); 应用广泛 ( 技术通用 ) 甘特图的缺点 : 不能清晰表示活动间的逻辑关系 WBS 责任分配矩阵 ( 负责〇审批

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

约 定 和 说 明 : 1. 基 于 Ubuntu 11.10 i386 2. 蓝 色 部 分 为 控 制 台 命 令, 默 认 为 在 当 前 用 户 目 录 下 执 行 3. 添 加 至 文 件 的 部 分 默 认 添 加 在 文 件 结 尾 处 4.SUN-JDK 从 目 前 看 不 安 装

约 定 和 说 明 : 1. 基 于 Ubuntu 11.10 i386 2. 蓝 色 部 分 为 控 制 台 命 令, 默 认 为 在 当 前 用 户 目 录 下 执 行 3. 添 加 至 文 件 的 部 分 默 认 添 加 在 文 件 结 尾 处 4.SUN-JDK 从 目 前 看 不 安 装 Linux 下 Qone 开 发 环 境 的 搭 建 李 耀 中 2012.03.20 v0.9 约 定 和 说 明 : 1. 基 于 Ubuntu 11.10 i386 2. 蓝 色 部 分 为 控 制 台 命 令, 默 认 为 在 当 前 用 户 目 录 下 执 行 3. 添 加 至 文 件 的 部 分 默 认 添 加 在 文 件 结 尾 处 4.SUN-JDK 从 目 前 看 不 安 装 也

More information

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

Java ¿ª·¢ 2.0: Óà Hadoop MapReduce ½øÐдóÊý¾Ý·ÖÎö 中 文 登 录 ( 或 注 册 ) 技 术 主 题 软 件 下 载 社 区 技 术 讲 座 搜 索 developerworks developerworks 技 术 主 题 Java technology 文 档 库 Java 开 发 2.0: 用 Hadoop MapReduce 进 行 大 数 据 分 析 成 堆 的 数 据 如 何 变 成 信 息 金 矿 Andrew Glover, 作 家

More information

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

业 务 与 运 营 Business & Operation (Transform) 加 载 (Load) 至 目 的 端 的 过 程, 该 部 分 在 数 据 挖 掘 和 分 析 过 程 中 为 最 基 础 的 一 部 分 一 个 良 好 的 ETL 系 统 应 该 有 以 下 几 个 功 能 1 Business & Operation 业 务 与 运 营 大 数 据 技 术 在 精 准 营 销 中 的 应 用 王 小 鹏 北 京 东 方 国 信 科 技 股 份 有 限 公 司 北 京 100102 摘 要 简 要 介 绍 主 流 的 大 数 据 技 术 架 构 和 大 数 据 挖 掘 技 术 ; 阐 述 大 数 据 技 术 在 精 准 营 销 与 维 系 系 统 建 设 中 的 应 用,

More information

上海现代设计集团建筑协同设计平台研究与应用

上海现代设计集团建筑协同设计平台研究与应用 邓雪原 苏 昶 孙 朋 王国俭 上海交通大学土木工程系 上海 上海现代建筑设计 集团 有限公司 上海 本文首先分析了建筑 协同设计发展过程中存在的问题 指出建筑 协同设计的发展需要经过二维协同设计向三维协同设计的过渡 接着对适合于大型建筑设计企业的建筑 协同设计平台的关键问题进行了阐述 通过上海现代建筑设计集团一个实际工程项目 详细描述了建筑工程协同设计的方法与过程 然后对建筑协同设计的标准统一 工种协同等特点和高效沟通及超大项目的应用优势进行了讨论

More information

????????

???????? 深度学习 项目简介 葛丽丽 译 西蒙菲沙大学 教育学院 富有想像力的教育研究中心 电邮 ierg-ed@sfu.ca 网址: http://www.ierg.net 基本思想 开学的第一个星期 每个学生都会接到一个任意布置的主题 从此将围绕这个主题 进行深度学习 这些主题可能包括 鸟 苹果 马戏团 火车 和 太阳系 等内容 在接下来的小学 初中以及高中阶段 除了基本课程以外 学 生将继续深入地学习指定的题目

More information

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

白 皮 书 英 特 尔 IT 部 门 实 施 Apache Hadoop* 英 特 尔 分 发 版 软 件 的 最 佳 实 践 目 录 要 点 概 述...1 业 务 挑 战...2 Hadoop* 分 发 版 注 意 事 项...3 Hadoop* 基 础 架 构 注 意 事 项 IT@Intel 白 皮 书 英 特 尔 IT 部 门 大 数 据 和 商 业 智 能 2013 年 10 月 英 特 尔 IT 部 门 实 施 Apache Hadoop* 英 特 尔 分 发 版 软 件 的 最 佳 实 践 要 点 概 述 仅 在 五 周 之 内, 我 们 就 实 施 了 基 于 Apache Hadoop* 英 特 尔 分 发 版 的 低 成 本 可 完 全 实 现 的 大 数

More information

目 录 1 不 断 开 发 工 具 以 管 理 大 数 据...2 1.1 Hadoop* 简 介 : 支 持 从 大 数 据 中 获 得 出 色 价 值 的 可 靠 框 架... 2 1.2 大 数 据 技 术 的 行 业 生 态 系 统... 2 2 在 关 键 组 件 中 实 现 平 衡...

目 录 1 不 断 开 发 工 具 以 管 理 大 数 据...2 1.1 Hadoop* 简 介 : 支 持 从 大 数 据 中 获 得 出 色 价 值 的 可 靠 框 架... 2 1.2 大 数 据 技 术 的 行 业 生 态 系 统... 2 2 在 关 键 组 件 中 实 现 平 衡... 白 皮 书 英 特 尔 固 态 硬 盘 英 特 尔 以 太 网 融 合 网 络 英 特 尔 Hadoop* 发 行 版 软 件 应 用 大 数 据 技 术 获 得 近 实 时 分 析 巨 大 成 效 1 平 衡 的 基 础 设 施 使 工 作 负 载 完 成 时 间 从 4 小 时 缩 短 为 7 如 今, 基 于 广 泛 可 用 的 计 算 存 储 和 网 络 组 件 的 改 进, 商 业 学 术

More information

通过动态路由协议实现链路备份

通过动态路由协议实现链路备份 通过动态路由协议实现链路备份 实验名称 通过动态路由协议实现链路备份 实验目的 掌握通过在不同链路上配置不同的路由协议实现链路备份 背景描述 你是公司高级网络管理员, 公司内部有一个很重要的服务器所在网段为 192.168.12.0/24, 平常访问通过 R1,R3 的 OSPF 路由协议, 为了保证该网段随时能够访问, 不能因为链路故障出问题, 要求你实现一个备份冗余的功能, 请给予支持 实现功能

More information

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

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指 内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指 导 你 搭 建 Linux 平 台 下 的 JAVA 开 发 环 境, 包 括 JDK 以 及 集

More information

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

培 训 机 构 介 绍  中 科 普 开 是 国 内 首 家 致 力 于 IT 新 技 术 领 域 的 领 航 者, 专 注 于 云 计 算 大 数 据 物 联 网 移 动 互 联 网 技 术 的 培 训, 也 是 国 内 第 一 家 开 展 Hadoop 云 计 算 的 培 Hadoop 2.0 培 训 Hadoop 2.0Training Hadoop 2.0 运 维 与 开 发 实 战 培 训 邀 请 函 培 训 机 构 介 绍 www.zkpk.org 中 科 普 开 是 国 内 首 家 致 力 于 IT 新 技 术 领 域 的 领 航 者, 专 注 于 云 计 算 大 数 据 物 联 网 移 动 互 联 网 技 术 的 培 训, 也 是 国 内 第 一 家 开

More information

操 守, 爱 岗 敬 业 诚 实 守 信 办 事 公 道 服 务 群 众 奉 献 社 会 ; 具 备 从 事 职 业 活 动 所 必 需 的 基 本 能 力 和 管 理 素 质 ; 脚 踏 实 地 严 谨 求 实 勇 于 创 新 3. 人 文 素 养 与 科 学 素 质 : 具 有 融 合 传 统

操 守, 爱 岗 敬 业 诚 实 守 信 办 事 公 道 服 务 群 众 奉 献 社 会 ; 具 备 从 事 职 业 活 动 所 必 需 的 基 本 能 力 和 管 理 素 质 ; 脚 踏 实 地 严 谨 求 实 勇 于 创 新 3. 人 文 素 养 与 科 学 素 质 : 具 有 融 合 传 统 计 算 机 类 专 业 ( 大 数 据 方 向 ) 大 专 人 才 培 养 方 案 一 招 生 对 象 及 学 习 年 限 ( 一 ) 招 生 对 象 : 全 日 制 普 通 中 学 高 中 毕 业 生, 招 生 方 式 为 普 通 高 考 招 生 ( 二 ) 学 习 年 限 : 基 本 学 制 三 年, 实 行 弹 性 学 制, 学 生 在 校 时 间 原 则 上 不 能 少 于 两 年, 总 在

More information

Reducing Client Incidents through Big Data Predictive Analytics

Reducing Client Incidents through Big Data Predictive Analytics IT@lntel 白 皮 书 英 特 尔 IT 部 门 IT 最 佳 实 践 大 数 据 预 测 分 析 2013 年 12 月 通 过 大 数 据 预 测 分 析 减 少 客 户 端 事 故 总 体 概 述 相 比 过 去 的 被 动 反 应, 我 们 现 在 能 够 更 容 易 主 动 找 出 客 户 端 问 题, 并 及 时 将 其 修 复 以 免 问 题 扩 大, 从 而 为 企 业 节 约

More information

JSP 程 序 设 计 教 程 ( 项 目 式 ) 图 1.0.2 用 户 注 册 页 面 2 (3) 用 户 登 录 模 块 注 册 用 户 输 入 用 户 名 和 密 码 即 可 登 录 小 小 留 言 板, 可 发 表 留 言 和 回 复, 如 图 1.0.3 所 示 图 1.0.3 用 户

JSP 程 序 设 计 教 程 ( 项 目 式 ) 图 1.0.2 用 户 注 册 页 面 2 (3) 用 户 登 录 模 块 注 册 用 户 输 入 用 户 名 和 密 码 即 可 登 录 小 小 留 言 板, 可 发 表 留 言 和 回 复, 如 图 1.0.3 所 示 图 1.0.3 用 户 D 项 目 目 标 类 型 技 能 目 标 知 识 目 标 具 体 目 标 1. 能 熟 练 搭 建 JSP 程 序 的 运 行 环 境 ; 2. 能 熟 练 进 行 Web 网 站 设 计 和 开 发 ; 3. 能 熟 练 部 署 JSP 应 用 程 序 1. 搭 建 JSP 程 序 的 运 行 环 境 ; 2. 掌 握 JSP 语 言 基 础 ; 3. 掌 握 JSP 内 置 对 象 及 其 应

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 Hadoop 生 态 技 术 在 阿 里 全 网 商 品 搜 索 实 战 阿 里 巴 巴 - 王 峰 自 我 介 绍 真 名 : 王 峰 淘 宝 花 名 : 莫 问 微 博 : 淘 莫 问 2006 年 硕 士 毕 业 后 加 入 阿 里 巴 巴 集 团 淘 及 搜 索 事 业 部 ( 高 级 技 术 与 家 ) 目 前 负 责 搜 索 离 线 系 统 团 队 技 术 方 向 : 分 布 式 计 算

More information

燃烧器电子控制系统 目录 2

燃烧器电子控制系统 目录 2 聚焦 REC27 燃烧器电子控制系统 燃烧器电子控制系统 目录 2 REC27 燃烧器电子控制系统 2 概述 燃烧器电子控制系统 2 2 2 2 2 A B1 B2 C D E 22 2 2 系统图示 2 2 2 2 2 2 主要特征及优点 燃烧器电子控制系统 2 2 集成控制 2 2 节能 安全运行 运行模式 远程锁定复位 可根据需求提供特殊机型 无接合间隙及机械迟滞 简单的试运行及燃烧器设定 2

More information

法 律 声 明 本 资 料 的 版 权 为 北 京 超 图 软 件 股 份 有 限 公 司 所 有, 受 中 华 人 民 共 和 国 著 作 权 法 和 著 作 权 国 际 公 约 的 保 护 未 经 北 京 超 图 软 件 股 份 有 限 公 司 书 面 许 可, 不 得 以 任 何 方 式 或

法 律 声 明 本 资 料 的 版 权 为 北 京 超 图 软 件 股 份 有 限 公 司 所 有, 受 中 华 人 民 共 和 国 著 作 权 法 和 著 作 权 国 际 公 约 的 保 护 未 经 北 京 超 图 软 件 股 份 有 限 公 司 书 面 许 可, 不 得 以 任 何 方 式 或 SuperMap iobjects Java 7C tar 包 使 用 指 南 北 京 超 图 软 件 股 份 有 限 公 司 2014 年 5 月 北 京 法 律 声 明 本 资 料 的 版 权 为 北 京 超 图 软 件 股 份 有 限 公 司 所 有, 受 中 华 人 民 共 和 国 著 作 权 法 和 著 作 权 国 际 公 约 的 保 护 未 经 北 京 超 图 软 件 股 份 有 限 公

More information

分布式数据库期中作业说明

分布式数据库期中作业说明 厦 门 大 学 林 子 雨 编 著 大 数 据 技 术 原 理 与 应 用 ( 版 本 号 :2016 年 4 月 13 日 版 本 ) ( 备 注 :2015 年 8 月 1 日 第 一 版 教 材 中 没 有 本 章, 本 章 为 2016 年 新 增 内 容, 将 被 放 入 第 二 版 教 材 中 ) ( 版 权 声 明 : 版 权 所 有, 请 勿 用 于 商 业 用 途 ) 主 讲 教

More information

数据存储

数据存储 数 据 存 储 数 据 存 储 的 重 要 性 Internet 正 在 使 存 储 技 术 发 生 革 命 性 的 变 化 这 种 变 化 主 要 表 现 在 三 个 方 面 : 首 先 是 存 储 容 量 的 急 膨 胀 其 次 是 数 据 就 绪 时 间 的 延 展 今 天,Internet 使 网 络 数 据 必 须 保 证 每 天 24 小 时 每 周 7 天 每 年 365 天 处 于

More information

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南 Symantec Sygate Enterprise Protection 防 护 代 理 安 装 使 用 指 南 5.1 版 版 权 信 息 Copyright 2005 Symantec Corporation. 2005 年 Symantec Corporation 版 权 所 有 All rights reserved. 保 留 所 有 权 利 Symantec Symantec 徽 标 Sygate

More information

文章首先对 云计算 环境下数字图书馆的概念 特点 原理等进行概述 然后根据 云计算 环境下图书馆数字资源安全性要求 对影响数字图书馆安全的诸多因素进行深入探讨 最后研究了云计算环境下数字图书馆数据安全 应用安全以及虚拟化安全面临的威胁及对策 云计算数字图书馆信息安全对策 本文系甘肃省教育厅 年度科研项目 移动计算环境下的数字图书馆建设研究 批准号 的研究成果之一 马晓亭 女 年生 兰州商学院信息工程学院副教授

More information

刊首语

刊首语 www.hadoopor.com 2010 入 门 专 刊 创 刊 号 2010 年 1 月 - 1 - 出 品 Hadoop 技 术 论 坛 总 编 辑 易 剑 ( 一 见 ) 副 总 编 辑 代 志 远 ( 国 宝 ) 王 磊 (beyi) 本 期 主 编 皮 冰 锋 ( 若 冰 ) 编 辑 皮 冰 锋 ( 若 冰 ) 易 剑 ( 一 见 ) 贺 湘 辉 ( 小 米 ) 王 磊 (beyi) 代

More information

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

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难 第 1 章 Java 概 述 Java 的 诞 生 Java 的 特 点 Java 开 发 环 境 安 装 与 配 置 创 建 并 运 行 一 个 简 单 的 Java 程 序 Java 语 言 是 当 今 计 算 机 软 件 行 业 中 最 热 门 的 网 络 编 程 语 言, 以 Java 为 核 心 的 芯 片 技 术 编 译 技 术 数 据 库 连 接 技 术, 以 及 基 于 企 业 级

More information

要 注 意 的 是,Flume 中 对 事 件 的 处 理 不 需 要 带 状 态, 它 的 Scalability 可 以 很 容 易 实 现 3. Manageability:Flume 利 用 ZooKeeper 和 gossip, 保 证 配 置 数 据 的 一 致 性 高 可 用 同 时,

要 注 意 的 是,Flume 中 对 事 件 的 处 理 不 需 要 带 状 态, 它 的 Scalability 可 以 很 容 易 实 现 3. Manageability:Flume 利 用 ZooKeeper 和 gossip, 保 证 配 置 数 据 的 一 致 性 高 可 用 同 时, Flume 介 绍 安 装 与 应 用 案 例 本 文 版 权 归 作 者 和 博 客 园 共 有, 欢 迎 转 载, 但 未 经 作 者 同 意 必 须 保 留 此 段 声 明, 且 在 文 章 页 面 明 显 位 置 给 出 原 文 连 接, 博 主 为 石 山 园, 博 客 地 址 为 http://www.cnblogs.com/shishanyuan 该 系 列 课 程 是 应 邀 实 验

More information

ebook62-1

ebook62-1 1 Red Hat Linux R e d Hat Linux L i n u x X Wi n d o w Red Hat L i n u x 1.1 Red Hat Linux Red Hat 16 M 120 M 3. 5 Intel 386 C D - R O M C D - R O M We b / 1.1.1 L i n u x L i n u 4 Primary Partition Extended

More information

个 数 据 虚 拟 划 分 为 n 个 区, 在 map 后, 统 计 每 一 个 区 的 key 的 数 量, 然 后 考 虑 Reduce 负 载 均 衡 为 这 些 区 分 配 一 个 Reduce 节 点 文 献 [4] 假 设 节 点 存 在 不 一 样 的 执 行 能 力, 根 据 节

个 数 据 虚 拟 划 分 为 n 个 区, 在 map 后, 统 计 每 一 个 区 的 key 的 数 量, 然 后 考 虑 Reduce 负 载 均 衡 为 这 些 区 分 配 一 个 Reduce 节 点 文 献 [4] 假 设 节 点 存 在 不 一 样 的 执 行 能 力, 根 据 节 2015-10-28 11:21:24 http://www.cnki.net/kcms/detail/51.1196.tp.20151028.1121.104.html 优 先 出 版 计 算 机 应 用 研 究 第 33 卷 Hadoop 平 台 中 一 种 Reduce 负 载 均 衡 贪 心 算 法 * 刘 朵, 曾 锋 *, 陈 志 刚, 姚 亦 韬 ( 中 南 大 学 软 件 学 院,

More information

本文由筱驀釹贡献

本文由筱驀釹贡献 本 文 由 筱 驀 釹 贡 献 ppt 文 档 可 能 在 WAP 端 浏 览 体 验 不 佳 建 议 您 优 先 选 择 TXT, 或 下 载 源 文 件 到 本 机 查 看 Linux 操 作 系 统 Linux 操 作 系 统 第 一 部 分 介 绍 与 安 装 Linux 的 由 来 : Linux 的 由 来 : 的 由 来 Linus Torvalds 1.Linux 的 版 本 1.Linux

More information

epub 61-2

epub 61-2 2 Web Dreamweaver UltraDev Dreamweaver 3 We b We b We Dreamweaver UltraDev We b Dreamweaver UltraDev We b We b 2.1 Web We b We b D r e a m w e a v e r J a v a S c r i p t We b We b 2.1.1 Web We b C C +

More information

中国与欧洲关系 年

中国与欧洲关系 年 中国与欧洲关系 年 周 弘 本文全面回顾了中国与欧洲共同体 欧洲联盟及其成员国 年至 年间政治和经济关系的发展历程 分析了当前中欧关系取得的进展和存在的问题 作者认为 年来中国与欧洲关系的发展变化见证并体现了世界格局的演变以及中国和欧洲这两大很不相同的世界力量自身的发展变化 中欧之间不断深入和拓展的交往使双方都从中获益 而这种交往所创造出来的体制机制和方式方法也堪为人先 中欧关系能否在第二个 年中顺利发展

More information

投影片 1

投影片 1 9 1 9-1 Windows XP Windows Server 2003 Mac OS Linux, 都 (OS, Operating System ) 2 3 , 來, 行 3 理 行 4 ,, (UI, User Interface), 滑, 令 列 (CLI, Command-Line Interface) (GUI, Graphical User Interface) 2 5 令 列,

More information

Microsoft Word - 100118002.htm

Microsoft Word - 100118002.htm 100 年 度 11800 電 腦 軟 體 應 用 乙 級 技 術 士 技 能 檢 定 學 科 測 試 試 題 本 試 卷 有 選 擇 題 80 題, 每 題 1.25 分, 皆 為 單 選 選 擇 題, 測 試 時 間 為 100 分 鐘, 請 在 答 案 卡 上 作 答, 答 錯 不 倒 扣 ; 未 作 答 者, 不 予 計 分 准 考 證 號 碼 : 姓 名 : 選 擇 題 : 1. (3)

More information

HOL-CHG-1695

HOL-CHG-1695 Table of Contents 练 习 概 述 - - vsphere 挑 战 练 习... 2 练 习 指 导... 3 第 1 单 元 : 在 实 践 中 学 习 (15 分 钟 )... 5 剪 贴 板 复 制 和 粘 贴 功 能 无 法 使 用?... 6 虚 拟 机 性 能 不 佳... 17 第 2 单 元 : 基 本 运 维 挑 战 (30 分 钟 )... 32 无 法 登 录

More information

Azure_s

Azure_s Azure ? Azure Azure Windows Server Database Server Azure Azure Azure Azure Azure Azure Azure Azure OpenSource Azure IaaS Azure VM Windows Server Linux PaaS Azure ASP.NET PHP Node.js Python MS SQL MySQL

More information

关于罗斯福时代新政 宪法革命 的几点浅见 韩 铁 美国宪法的若干重要法理原则及其运用在富兰克林 罗斯福总统任内 发生了巨大变化 史称新政 宪法革命 不过 这种变化并不是在所谓 年最高法院的 及时转向 中一锤定音的 最高法院在正当程序 商业权 公众福利条款上的态度及其变化充分说明 新政宪法革命无论是从当时还是其后的发展来看都有它的连续性 局限性和复杂性 只有认识到了这一点 我们对新政宪法革命乃至于整个新政的历史评价才会比较准确

More information

闖 關 組 4. 任 一 隊 員 曾 獲 得 第 一 屆 第 2 次 全 國 大 專 ITSA 盃 程 式 設 計 桂 冠 挑 戰 大 賽 菁 英 組 前 三 名 或 歷 屆 全 國 大 專 ITSA 盃 程 式 設 計 桂 冠 挑 戰 大 賽 挑 戰 組 前 三 名 應 報 此 組 5. 任 一

闖 關 組 4. 任 一 隊 員 曾 獲 得 第 一 屆 第 2 次 全 國 大 專 ITSA 盃 程 式 設 計 桂 冠 挑 戰 大 賽 菁 英 組 前 三 名 或 歷 屆 全 國 大 專 ITSA 盃 程 式 設 計 桂 冠 挑 戰 大 賽 挑 戰 組 前 三 名 應 報 此 組 5. 任 一 第 五 屆 全 國 大 專 ITSA 盃 程 式 設 計 桂 冠 挑 戰 大 賽 競 賽 須 知 一 辦 理 目 的 : 教 育 部 為 培 育 全 國 大 專 校 院 資 訊 軟 體 人 才, 特 推 動 資 通 訊 軟 體 創 新 人 才 推 升 計 畫, 並 建 置 程 式 設 計 e-tutor 服 務 平 臺 及 PTC 競 賽 練 習 平 台, 由 教 授 專 家 組 成 命 題 團 隊,

More information

SD QRG 200303

SD QRG 200303 快 速 使 用 指 南 www.mendeley.com 2015 年 6 月 Mendeley 是 一 款 用 于 学 术 论 文 管 理 和 在 线 共 享 信 息 的 免 费 文 献 管 理 工 具 可 以 将 支 持 Windows Mac Android Linux 的 桌 面 版 与 任 何 地 方 都 能 够 在 线 使 用 的 网 页 版 组 合 使 用 该 软 件 也 支 持 ios(ipad/iphone)

More information

第四章 102 图 4唱16 基于图像渲染的理论基础 三张拍摄图像以及它们投影到球面上生成的球面图像 拼图的圆心是相同的 而拼图是由球面图像上的弧线图像组成的 因此我 们称之为同心球拼图 如图 4唱18 所示 这些拼图中半径最大的是圆 Ck 最小的是圆 C0 设圆 Ck 的半径为 r 虚拟相机水平视域为 θ 有 r R sin θ 2 4畅11 由此可见 构造同心球拼图的过程实际上就是对投影图像中的弧线图像

More information

,,,,,,, ;,, ;, ;, (, / ),, ;,,.,,,,,,,,,,,,,,,,, ;,,,,,,, 1, :,,, ;,,,, (, ),,,,, 1,,, (,, )

,,,,,,, ;,, ;, ;, (, / ),, ;,,.,,,,,,,,,,,,,,,,, ;,,,,,,, 1, :,,, ;,,,, (, ),,,,, 1,,, (,, ) 刘世定 内容提要 : 本文在嵌入性视角的引导下, 进入关系合同理论领域 对关系合同的 分析, 以威廉姆森的合同治理结构理论作为基点 在分析了他的理论脉络和隐含假 设后, 本文提出了三个假定, 即约前关系导入 多元关系属性 对关系属性的有限控 制 在新的假设下, 首先讨论了合同治理结构和嵌入关系结构之间不同的对应关系, 并特别探讨了两者间的结构性摩擦 继而, 在关系合同的研究中引入了委托 - 代理关系,

More information

Microsoft Word - PS2_linux_guide_cn.doc

Microsoft Word - PS2_linux_guide_cn.doc Linux For $ONY PlayStatioin2 Unofficall General Guide Language: Simplified Chinese First Write By Beter Hans v0.1 Mail: hansb@citiz.net Version: 0.1 本 人 是 菜 鸟 + 小 白 欢 迎 指 正 错 误 之 处, 如 果 您 有 其 他 使 用 心 得

More information

1. 访 问 最 新 发 行 公 告 信 息 jconnect for JDBC 7.0 1. 访 问 最 新 发 行 公 告 信 息 最 新 版 本 的 发 行 公 告 可 以 从 网 上 获 得 若 要 查 找 在 本 产 品 发 布 后 增 加 的 重 要 产 品 或 文 档 信 息, 请 访

1. 访 问 最 新 发 行 公 告 信 息 jconnect for JDBC 7.0 1. 访 问 最 新 发 行 公 告 信 息 最 新 版 本 的 发 行 公 告 可 以 从 网 上 获 得 若 要 查 找 在 本 产 品 发 布 后 增 加 的 重 要 产 品 或 文 档 信 息, 请 访 发 行 公 告 jconnect for JDBC 7.0 文 档 ID:DC74874-01-0700-01 最 后 修 订 日 期 :2010 年 3 月 2 日 主 题 页 码 1. 访 问 最 新 发 行 公 告 信 息 2 2. 产 品 摘 要 2 3. 特 殊 安 装 说 明 2 3.1 查 看 您 的 jconnect 版 本 3 4. 特 殊 升 级 指 导 3 4.1 迁 移 3

More information

Basic System Administration

Basic System Administration 基 本 系 统 管 理 ESX Server 3.5 ESX Server 3i 版 本 3.5 Virtual Center 2.5 基 本 管 理 指 南 基 本 管 理 指 南 修 订 时 间 :20080410 项 目 :VI-CHS-Q208-490 我 们 的 网 站 提 供 最 新 的 技 术 文 档, 网 址 为 : http://www.vmware.com/cn/support/

More information

Mac Java import com.apple.mrj.*;... public class MyFirstApp extends JFrame implements ActionListener, MRJAboutHandler, MRJQuitHandler {... public MyFirstApp() {... MRJApplicationUtils.registerAboutHandler(this);

More information

1 前 言 4 1.1 关 于 BlueJ 4 1.2 本 书 范 围 及 读 者.4 1.3 版 权, 使 用 许 可 以 及 重 新 发 布 4 1.4 反 馈.4 2 开 始 5 2.1 安 装.5 2.2 启 动 BlueJ.5 2.3 打 开 一 个 工 程.6 3 基 础 知 识 - 编

1 前 言 4 1.1 关 于 BlueJ 4 1.2 本 书 范 围 及 读 者.4 1.3 版 权, 使 用 许 可 以 及 重 新 发 布 4 1.4 反 馈.4 2 开 始 5 2.1 安 装.5 2.2 启 动 BlueJ.5 2.3 打 开 一 个 工 程.6 3 基 础 知 识 - 编 BlueJ 教 程 版 本 1.2 针 对 BlueJ 版 本 1.1.x Michael Kölling 澳 洲 Monash 大 学 网 络 计 算 学 院 清 华 大 学 计 算 机 系 知 识 工 程 组 郝 建 文 顾 志 峰 翻 译 - 1 - 1 前 言 4 1.1 关 于 BlueJ 4 1.2 本 书 范 围 及 读 者.4 1.3 版 权, 使 用 许 可 以 及 重 新 发 布

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

自由軟體社群發展經驗與 Linux認證介紹

自由軟體社群發展經驗與  Linux認證介紹 -- (http://linux.vbird.org) 2011/08/12 1 -- -- 不 理 便 了 來 連 ( ) ( ) 論 ~ ~ 2 復 理 3 4 復 數 量 復 離 來 ~ @_@ 5 - 年 Linux windows virtualbox 不 理 Linux Xen 立 4 4GB 了 30 xen 來 sudo xm 來 Linux I/O 例 yum 6 - 年 Windows

More information

Hadoop 集 群 ( 第 4 期 ) SecureCRT 使 用 1 SecureCRT 简 介 SecureCRT 是 一 款 支 持 SSH(SSH1 和 SSH2) 的 终 端 仿 真 程 序, 同 时 支 持 Telnet 和 rlogin 协 议 SecureCRT 是 一 款 用 于

Hadoop 集 群 ( 第 4 期 ) SecureCRT 使 用 1 SecureCRT 简 介 SecureCRT 是 一 款 支 持 SSH(SSH1 和 SSH2) 的 终 端 仿 真 程 序, 同 时 支 持 Telnet 和 rlogin 协 议 SecureCRT 是 一 款 用 于 细 细 品 味 Hadoop Hadoop 集 群 ( 第 4 期 ) 精 华 集 锦 csaxp 虾 皮 工 作 室 http://www.cnblogs.com/xia520pi/ 2012 年 4 月 24 日 Hadoop 集 群 ( 第 4 期 ) SecureCRT 使 用 1 SecureCRT 简 介 SecureCRT 是 一 款 支 持 SSH(SSH1 和 SSH2) 的 终

More information

版 本 # 日 期 ThingWorx 版 本 改 变 所 有 者 1.0 2.0 21-11-14 3.0 17-12-14 4.0 19-12-14 DeAnna Robear Veronica MIHAI 使 用 you 而 不 是 we, 添 加 版 权 和 封 面 页, Veronica

版 本 # 日 期 ThingWorx 版 本 改 变 所 有 者 1.0 2.0 21-11-14 3.0 17-12-14 4.0 19-12-14 DeAnna Robear Veronica MIHAI 使 用 you 而 不 是 we, 添 加 版 权 和 封 面 页, Veronica 在 树 莓 派 中 使 用 Thingworx Edge java SKD 来 从 Am2302 中 读 取 温 湿 度 数 据 Revison History 版 本 # 日 期 ThingWorx 版 本 改 变 所 有 者 1.0 2.0 21-11-14 3.0 17-12-14 4.0 19-12-14 DeAnna Robear Veronica MIHAI 使 用 you 而 不 是

More information

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

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 语 言 程 序 设 计 郑 莉 胡 家 威 编 著 清 华 大 学 逸 夫 图 书 馆 北 京 内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 握 语

More information

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

作 業 系 統 簡 介 光 有 電 腦 硬 體, 會 不 容 易 使 用 必 須 要 有 適 當 的 程 式, 才 方 便 操 作 硬 體 衍 生 作 業 系 統 需 求 : 提 供 方 便 使 用 者 執 行 程 式 平 台 有 效 使 用 各 種 電 腦 硬 體 資 源 Jingo C. Lia 第 三 章 作 業 系 統 概 論 Reporter : Jingo C. Liao 廖 正 宏 E-mail : jingo@mail.tku.edu.tw 章 節 列 表 1. 什 麼 是 作 業 系 統 2. 作 業 系 統 的 主 要 功 能 3. 作 業 系 統 的 核 心 程 式 4. 作 業 系 統 的 演 進 歷 史 5. 常 見 流 行 的 作 業 系 統 Jingo C. Liao

More information

Microsoft Word - 2011-030-1-1SRS - 軟體需求規格.doc

Microsoft Word - 2011-030-1-1SRS - 軟體需求規格.doc 快 樂 牧 場 主 人 軟 體 需 求 規 格 SRS-IM-2011-030-1-1 朝 陽 科 技 大 學 資 訊 管 理 系 指 導 老 師 : 范 揚 文 副 教 授 學 生 : 王 昱 尚 何 駿 青 陳 伯 誠 董 次 麟 許 閔 翔 中 華 民 國 一 百 年 十 二 月 五 日 目 錄 1. 簡 介... 4 1.1 目 的... 4 1.2 範 圍... 4 1.3 參 考 文 件...

More information

2013 年 第 22 卷 第 7 期 计 算 机 系 统 应 用 1 协 同 过 滤 推 荐 算 法 与 Hadoop 平 台 1.1 协 同 过 滤 推 荐 算 法 传 统 的 基 于 项 目 (Item-based) 的 协 同 过 滤 推 荐

2013 年 第 22 卷 第 7 期  计 算 机 系 统 应 用 1 协 同 过 滤 推 荐 算 法 与 Hadoop 平 台 1.1 协 同 过 滤 推 荐 算 法 传 统 的 基 于 项 目 (Item-based) 的 协 同 过 滤 推 荐 1 基 于 Hadoop 平 台 协 同 过 滤 推 荐 算 法 杨 志 文, 刘 波 ( 华 南 师 范 大 学 计 算 机 学 院, 广 州 510631) 摘 要 : 针 对 协 同 过 滤 推 荐 算 法 在 数 据 稀 疏 性 及 在 大 数 据 规 模 下 系 统 可 扩 展 性 的 两 个 问 题, 在 分 析 研 究 Hadoop 分 布 式 平 台 与 协 同 过 滤 推 荐 算

More information

ebook35-2

ebook35-2 2 2.1 Linux login Login: < > Password: < > Linux r o o t l o g o u t 2.2 Linux X Window Linux Linux Bourne ( b s h ) C ( c s h ) Korn ( k s h ) Bourne Steven Bourne UNIX Bourne bash Bourne C Bill Joy Bourne

More information

使用说明

使用说明 1 使 用 说 明 目 录 云 产 品 操 作 流 程... 2 ( 一 ) 腾 讯 云 平 台 注 册 与 登 录... 2 1. 注 册... 2 2. 登 录... 4 ( 二 ) 云 服 务 购 买... 5 1. 进 入 产 品 购 买 页 面... 5 2. 购 买... 6 3. 消 息 提 示... 8 4. 续 费 管 理... 10 ( 三 ) 控 制 台 ( 云 服 务 器 登

More information

GoFlex Home UG Book.book

GoFlex Home UG Book.book FreeAgent GoFlex Home 用 户 指 南 FreeAgent GoFlex Home 用 户 指 南 2011 Seagate Technology LLC. 保 留 所 有 权 利 Seagate Seagate Technology Wave 徽 标 及 FreeAgent 是 Seagate Technology LLC 或 其 某 个 子 公 司 的 商 标 或 注 册 商

More information

大数据技术基础

大数据技术基础 获取教材和讲义 PPT 等各种课程资料请访问 http://dblab.xmu.edu.cn/node/422 = 课程教材由林子雨老师根据网络资料编著 = 厦门大学计算机科学系教师林子雨编著 http://www.cs.xmu.edu.cn/linziyu 2013 年 9 月 1 / 39 前言 本教程由厦门大学计算机科学系教师林子雨编著, 可以作为计算机专业研究生课程 大数据技术基础 的辅助教材

More information

目 錄 版 次 變 更 記 錄... 2 原 始 程 式 碼 類 型 之 使 用 手 冊... 3 一 安 裝 軟 體 套 件 事 前 準 備... 3 二 編 譯 流 程 說 明... 25 1

目 錄 版 次 變 更 記 錄... 2 原 始 程 式 碼 類 型 之 使 用 手 冊... 3 一 安 裝 軟 體 套 件 事 前 準 備... 3 二 編 譯 流 程 說 明... 25 1 科 技 部 自 由 軟 體 專 案 原 始 程 式 碼 使 用 手 冊 Source Code Manual of NSC Open Source Project 可 信 賴 的 App 安 全 應 用 框 架 -App 應 用 服 務 可 移 轉 性 驗 證 Trusted App Framework -Transferability Verification on App MOST 102-2218-E-011-012

More information

国 内 多 数 企 业 属 于 e-hr 普 通 玩 家 国 内 多 数 企 业 属 于 e-hr 普 通 玩 家 国 内 多 数 企 业 的 e-hr 属 于 第 二 或 第 三 阶 段 比 如 A 集 团 公 司 是 国 内 知 名 的 汽 车 企 业, 人 力 资 源 部 门 有 100 名

国 内 多 数 企 业 属 于 e-hr 普 通 玩 家 国 内 多 数 企 业 属 于 e-hr 普 通 玩 家 国 内 多 数 企 业 的 e-hr 属 于 第 二 或 第 三 阶 段 比 如 A 集 团 公 司 是 国 内 知 名 的 汽 车 企 业, 人 力 资 源 部 门 有 100 名 未来 e-hr 领域的员工服务分水岭 智能服务 VS 自助服务 人工智能 SaaS 软件即服务 等为代表的新技术应用于人力资源管理 是用工具 和软件进行员工信息记录和薪酬计算 是把绩效 培训等模块串联成一个系统 是定 义为人力资源管理者工作的平台 服务于业务部门主管 将数据整合 亦或是升格为 真正的决策平台 这像是 e-hr 发展的完美四阶段 国 内 多 数 企 业 属 于 e-hr 普 通 玩 家

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 Apache Spark 与 多 数 据 源 的 结 合 田 毅 @ 目 录 为 什 么 会 用 到 多 个 数 据 源 Spark 的 多 数 据 源 方 案 有 哪 些 已 有 的 数 据 源 支 持 Spark 在 GrowingIO 的 实 践 分 享 为 什 么 会 用 到 多 个 数 据 源 从 数 据 本 身 来 看 大 数 据 的 特 性 之 一 :Variety 数 据 的 多 样

More information

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

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

More information

第 1 期 马 志 强, 等 : SQL 鄄 DFS: 一 种 基 于 HDFS 的 海 量 小 文 件 存 储 系 统 135 式 文 件 系 统 ( Hadoop distributed file system,hdfs) 作 为 Hadoop 的 关 键 技 术 之 一, 其 原 型 来 自

第 1 期 马 志 强, 等 : SQL 鄄 DFS: 一 种 基 于 HDFS 的 海 量 小 文 件 存 储 系 统 135 式 文 件 系 统 ( Hadoop distributed file system,hdfs) 作 为 Hadoop 的 关 键 技 术 之 一, 其 原 型 来 自 第 42 卷 第 1 期 2016 年 1 月 北 京 工 业 大 学 学 报 JOURNAL OF BEIJING UNIVERSITY OF TECHNOLOGY Vol. 42 No. 1 Jan. 2016 SQL 鄄 DFS: 一 种 基 于 HDFS 的 海 量 小 文 件 存 储 系 统 马 志 强, 杨 双 涛, 闫 瑞, 张 泽 广 ( 内 蒙 古 工 业 大 学 信 息 工 程

More information

CH01.indd

CH01.indd 3D ios Android Windows 10 App Apple icloud Google Wi-Fi 4G 1 ( 3D ) 2 3 4 5 CPU / / 2 6 App UNIX OS X Windows Linux (ios Android Windows 8/8.1/10 BlackBerry OS) 7 ( ZigBee UWB) (IEEE 802.11/a/b/g/n/ad/ac

More information

! %! &!! % &

! %! &!! % & 张海峰 姚先国 张俊森 借鉴 的有效教育概念 本文利用 年间的中国省级面板数据估计了平均教育年限 教育数量 和平均师生比率 教育质量 对地区 劳动生产率的影响 本文的实证分析结果表明 以师生比率衡量的教育质量对劳动生产 率有显著且稳健的正效应 在均值处师生比率每上升一个标准差 有助于提高地区劳动生产率约 教育数量对劳动生产率的影响大小部分取决于教育质量的高低 教育质量越高教育数量对劳动生产率的促进效应越大

More information

<4D6963726F736F667420576F7264202D2031313939204A617661B7C3CECA53514C536572766572BEDDBFE2B5C4C9E8BCC6D3EBCAB5CFD62E646F63>

<4D6963726F736F667420576F7264202D2031313939204A617661B7C3CECA53514C536572766572BEDDBFE2B5C4C9E8BCC6D3EBCAB5CFD62E646F63> Java 访 问 SQL Server 数 据 库 的 设 计 与 实 现 Zhuojun Zhao 数 据 库 连 接 是 软 件 项 目 开 发 中 很 重 要 的 一 个 环 节, 但 是 很 多 Java 初 学 者 在 学 习 连 接 数 据 库 的 过 程 中 感 到 非 常 头 疼, 总 是 出 现 一 系 列 的 问 题, 不 是 连 接 错 误 报 异 常, 就 是 无 法 显 示

More information

高 职 计 算 机 类 优 秀 教 材 书 目 * 序 号 书 号 (ISBN) 书 名 作 者 定 价 出 版 / 印 刷 日 期 ** 配 套 资 源 页 码 计 算 机 基 础 课 1 978-7-111-30658-0 计 算 机 应 用 基 础 刘 升 贵 29.00 2012 年 8 月

高 职 计 算 机 类 优 秀 教 材 书 目 * 序 号 书 号 (ISBN) 书 名 作 者 定 价 出 版 / 印 刷 日 期 ** 配 套 资 源 页 码 计 算 机 基 础 课 1 978-7-111-30658-0 计 算 机 应 用 基 础 刘 升 贵 29.00 2012 年 8 月 高 职 计 算 机 类 优 秀 教 材 书 目 * 序 号 书 号 (ISBN) 书 名 作 者 定 价 出 版 / 印 刷 日 期 ** 配 套 资 源 页 码 计 算 机 基 础 课 1 978-7-111-30658-0 计 算 机 应 用 基 础 刘 升 贵 29.00 2012 年 8 月 电 子 教 案 P1 2 978-7-111-27081-2 计 算 机 应 用 基 础 ( 第 2

More information

ebook 185-6

ebook 185-6 6 Red Hat Linux DB2 Universal Database 6.1 D B 2 Red Hat D B 2 Control Center D B 2 D B 2 D B 2 6.1 DB2 Universal Database [DB2]6.1 D B 2 O LT P O L A P D B 2 I B M P C We e k D B 2 D B 2 L i n u x Windows

More information

PureSCM enhances competitive advantage with an integrated approach to IT service level management

PureSCM enhances competitive advantage with an integrated approach to IT service level management ఱઓ߅ ښ PureSCM 使用集成的 IT 服 务级别管理方法增强竞争 优势 行业 IT 服务 公司 PureSCM 员工 40 收入 400 万美元 ఱઓ ቲጓǖIT 服务 ǖpurescm Ꮛ ǖ40 ၃ ǖ400 万美元 ጓᇗ PureSCM 是一家服务级别 管理专业公司和软件开发 公司 办事处设在加拿 大 美国和哥伦比亚 ᄞᐵ 为了帮助客户解决他们的 业务挑战 PureSCM 需要 提供集成的

More information

Acrobat Distiller, Job 3

Acrobat Distiller, Job 3 逢 甲 大 學 資 訊 工 程 學 系 專 題 電 子 商 務 金 融 系 統 The Financial System for Electronic Commerce 指 導 教 授 : 李 維 斌 博 士 lwb@iecs.fcu.edu.tw 逢 甲 大 學 資 訊 工 程 學 系 學 生 : 曾 政 國 cktw@taiwan.com 逢 甲 大 學 資 訊 工 程 學 系 中 華 民 國

More information

01

01 ZEBRA 技术白皮书 条码编码 101 相关知识介绍 引言 20 70 数据 80 20 90 (JIT) AIAG EIA HIBCC HAZMAT 条码的优势提高数据准确性 99% 85% / / 提升效率 / 2 Zebra Technologies 保持一致性 ID 改进库存和资产管理 成本 / 效益分析 ID ID ID (ERP) RFID Zebra Technologies 3 ID

More information

目 录 汉 邦 高 科 介 绍 局 域 网 设 置 广 域 网 设 置 网 络 访 问 常 见 问 题 销 售 服 务 网 络 2

目 录 汉 邦 高 科 介 绍 局 域 网 设 置 广 域 网 设 置 网 络 访 问 常 见 问 题 销 售 服 务 网 络 2 易 家 电 子 整 理 发 布 汉 邦 高 科 技 术 系 列 文 档 嵌 入 式 产 品 网 络 设 置 方 法 编 号 : 2009001-V10 北 京 汉 邦 高 科 数 字 技 术 有 限 公 司 版 权 所 有 2009 年 12 月 1 目 录 汉 邦 高 科 介 绍 局 域 网 设 置 广 域 网 设 置 网 络 访 问 常 见 问 题 销 售 服 务 网 络 2 一 公 司 简 介

More information

# # # # # # # # #

# # # # # # # # # 实现政治问责的三条道路 马 骏 建立一个对人民负责的政府是现代国家治理的核心问题 实现这一目标 需要解决两个最基本的问题 谁来使用权力 如何使用权力 选举制度是解决前一问题相对较好的制度 而预算制度是解决第二个问题最好的制度 通过历史比较分析 可以总结出三条实现政治问责的道路 世纪的欧洲道路 从建国到进步时代改革的美国道路以及雏形初现的中国道路 这意味着 西方经验并不是唯一的实现政治问责的道路 相对于西方经验来说

More information

片 要求小王等同学对这些文物用两种不同的标准进行分类 说出分类标准和结果 其所考查的目标实则是呼应了一般学习能力中的 整理信息 的要求 即从图片材料 中提取历史信息 对所获材料进行归类 开卷的第三题以 古代少数民族问题 为材料主题 体现交往与融合在文明发展 历程中的地位与作用 以探究性学习为主线 集中考查学生在开展探究性活动中对文 献 实物 口传等不同种类史料 材料 的运用水平 包括对有关史实的再现

More information

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

政府機關資訊通報第295期(5月) 第 295 期 101 年 5 月 5 日出版 財政部文書檔管系統(公文線上簽核) 推展簡介 雲端虛擬化平台於臺中市政府資訊中心之 建置與應用 考選部 國家考試試務整合性管理系統 簡介 全國首創第四級之高雄土地利用調查 作業特點 統整式知識內容管理系統建構實務 考選部行政系統整合平台暨 線上申辦及薪資差勤系統 建置經驗分享 目 次 機 關 動 態... 1 法 務 部 調 查 局... 1 內 政

More information

软件测试(TA07)第一学期考试

软件测试(TA07)第一学期考试 一 判 断 题 ( 每 题 1 分, 正 确 的, 错 误 的,20 道 ) 1. 软 件 测 试 按 照 测 试 过 程 分 类 为 黑 盒 白 盒 测 试 ( ) 2. 在 设 计 测 试 用 例 时, 应 包 括 合 理 的 输 入 条 件 和 不 合 理 的 输 入 条 件 ( ) 3. 集 成 测 试 计 划 在 需 求 分 析 阶 段 末 提 交 ( ) 4. 单 元 测 试 属 于 动

More information

F4

F4 DOI:10.3969/j.issn.1009-6868.2016.01.002 网 络 出 版 地 址 :http://www.cnki.net/kcms/detail/34.1228.tn.20151117.1506.006.html Challenges and Countermeasures of Network Space Security 周 延 森 /ZHOU Yansen 周 琳 娜

More information

HP 3PAR System Reporter 2.9 软件

HP 3PAR System Reporter 2.9 软件 HP 3PAR System Reporter 2.9 软 件 发 行 说 明 摘 要 本 文 档 提 供 HP 3PAR System Reporter 2.9 软 件 的 发 行 说 明 用 户 可 以 随 时 查 看 本 文 档 中 提 供 的 一 系 列 已 知 问 题 在 安 装 System Reporter 之 前, 请 阅 读 整 个 文 档 HP 部 件 号 :QL226-96184

More information

全 国 高 等 职 业 教 育 规 划 教 材 21 世 纪 高 职 高 专 规 划 教 材 系 列 高 等 职 业 教 育 计 算 机 专 业 规 划 教 材 选 题 征 集 通 知 一 选 题 范 围 ( 不 仅 限 于 此 ) 选 题 方 向 选 题 名 计 算 机 基 础 计 算 机 应 用

全 国 高 等 职 业 教 育 规 划 教 材 21 世 纪 高 职 高 专 规 划 教 材 系 列 高 等 职 业 教 育 计 算 机 专 业 规 划 教 材 选 题 征 集 通 知 一 选 题 范 围 ( 不 仅 限 于 此 ) 选 题 方 向 选 题 名 计 算 机 基 础 计 算 机 应 用 刘 瑞 新 金 牌 作 者 经 典 作 品 教 授, 计 算 机 专 业 资 深 学 科 带 头 人, 多 部 著 作 获 得 全 国 优 秀 畅 销 书 奖 他 所 编 写 的 教 材 内 容 均 来 自 教 学 实 践, 是 对 编 写 讲 义 教 学 修 改 教 学 讲 义 再 次 教 学 整 个 过 程 的 精 确 提 炼, 因 此 对 促 进 教 师 教 学 学 生 学 习 发 挥 了 重

More information

é ê

é ê 廖光洪 朱小华 杨成浩 徐晓华 基于南海 年夏季调查航次诊断计算的流函数场 选取越南以东偶极子发生海域 进行 不同的声层析观测站位设置实验 模拟计算声线传播时间信息 然后应用基函数重建方法进行了 流函数场的模拟反演研究 讨论了不同随机观测误差对反演结果的影响 研究结果表明该方法是 可行的 在所选取的约 海域内 在观测海域外围配置 个声层析观测站位就能够很好地重构原流函数场 空间分辨率约为 可以分辨模拟海域中尺度涡场结构

More information

宋守信 教授 杨书宏 教授级高工 傅 贵 教授 许开立 教授 高等工程教育专业认证委员会安全工程专业试点工作组 北京交通大学经济管理学院 北京 中国职业安全健康协会培训部 北京 中国矿业大学 北京 资源与安全工程学院 北京 东北大学资源与土木工程学院 沈阳 简要介绍我国高等工程教育专业认证试点的发展状况和主要做法 详细阐述安全工程专业认证以学生为本的指导思想和以质量保证及质量改进为出发点的基本特点

More information

IP TCP/IP PC OS µclinux MPEG4 Blackfin DSP MPEG4 IP UDP Winsock I/O DirectShow Filter DirectShow MPEG4 µclinux TCP/IP IP COM, DirectShow I

IP TCP/IP PC OS µclinux MPEG4 Blackfin DSP MPEG4 IP UDP Winsock I/O DirectShow Filter DirectShow MPEG4 µclinux TCP/IP IP COM, DirectShow I 2004 5 IP TCP/IP PC OS µclinux MPEG4 Blackfin DSP MPEG4 IP UDP Winsock I/O DirectShow Filter DirectShow MPEG4 µclinux TCP/IP IP COM, DirectShow I Abstract The techniques of digital video processing, transferring

More information

CC-SG 虚拟设备和 lmgrd 许可服务器管理快速安装指南

CC-SG 虚拟设备和 lmgrd 许可服务器管理快速安装指南 CommandCenter Secure Gateway CC-SG 虚 拟 设 备 和 lmgrd 许 可 服 务 器 管 理 快 速 安 装 指 南 本 快 速 安 装 指 南 介 绍 如 何 安 装 和 配 置 CommandCenter Secure Gateway 本 次 安 装 包 括 虚 拟 设 备 和 lmgrd 许 可 服 务 器 管 理 器 参 看 CommandCenter Secure

More information

欧洲研究 年第 期

欧洲研究 年第 期 气候变化与欧盟北极战略 何奇松 气候变暖改变了北极地缘政治环境 年 月 欧盟委员会通过了 欧盟与北极地区 通讯 年 月 欧盟理事会通过 北极问题决议 这两个文件基本上勾勒了欧盟的北极战略 即保障和维护北极地区及其居民的权利 促进北极资源的可持续利用以及北极多边治理 实际上 欧盟希望通过执行北极战略来体现欧盟作为全球气候政策的领先者 北极的经济价值驱使欧盟加入北极的地缘政治博弈 其中一个关键就是保证欧盟油气资源的供应

More information

附3

附3 普 通 高 等 学 校 本 科 专 业 设 置 申 请 表 ( 备 案 专 业 适 用 ) 080910T 3-6 2 016 7 6 4884878 目 录 填 表 说 明 ⒈ ⒉ ⒊ ⒋ ⒌ 1. 普 通 高 等 学 校 增 设 本 科 专 业 基 本 情 况 表 080910T 3-6 1978 36 ( 1978) ( 2008) 2017 60 120 / S J ⒉ 学 校 基 本 情

More information

Microsoft Word - SPEC-20130418

Microsoft Word - SPEC-20130418 ( 初 稿 2013.04.18) 中 央 研 究 院 經 濟 研 究 所 全 球 資 訊 網 站 改 版 建 置 案 建 議 書 徵 求 說 明 文 件 目 次 壹 專 案 概 述... 2 一 專 案 名 稱... 2 二 專 案 目 標... 2 三 專 案 範 圍... 2 四 專 案 時 程... 2 五 現 況 說 明... 3 貳 專 案 需 求... 3 一 網 站 軟 體 開 發

More information

一 Java 开 发 环 境 的 搭 建 1.1 JDK(Java Development Kit) 的 下 载 与 安 装 JDK(Java Development Kit) 是 程 序 员 使 用 java 语 言 编 写 java 程 序 所 需 的 开 发 工 具 包 大 家 可 以 在 o

一 Java 开 发 环 境 的 搭 建 1.1 JDK(Java Development Kit) 的 下 载 与 安 装 JDK(Java Development Kit) 是 程 序 员 使 用 java 语 言 编 写 java 程 序 所 需 的 开 发 工 具 包 大 家 可 以 在 o 实 验 一 : 安 卓 开 发 环 境 搭 建 目 录 一 Java 开 发 环 境 的 搭 建... 2 1.1 JDK(Java Development Kit) 的 下 载 与 安 装... 2 1.2 配 置 环 境 变 量... 4 二 android studio 的 安 装... 9 2.1 Windows 下 android studio 的 下 载 与 安 装... 9 2.2 更

More information

Sentinel HASP v.5.10 Release Notes

Sentinel HASP v.5.10 Release Notes Sentinel HASP - v.5.10 发 布 说 明 内 容 关 于 Sentinel HASP... 3 Sentinel HASP v.5.10 的 新 功 能?... 3 Sentinel HASP v.5.10 中 的 更 改 内 容?... 6 为 运 行 环 境 安 装 程 序 签 名 的 文 档... 6 不 断 进 行 品 牌 重 塑, 从 HASP SRM 到 Sentinel

More information

Microsoft Word - linux命令及建议.doc

Microsoft Word - linux命令及建议.doc Linux 操 作 系 统 命 令 集 1 基 本 命 令 查 看 系 统 信 息 : uname -a 修 改 密 码 : passwd 退 出 : logout(exit) 获 取 帮 助 : man commands 2 文 件 和 目 录 命 令 显 示 当 前 工 作 目 录 : pwd 改 变 所 在 目 录 : cd cd - 切 换 到 上 一 次 使 用 的 目 录 cd 切 换

More information

Conductix-Wampfler Inductive Power Transfer IPT 2

Conductix-Wampfler Inductive Power Transfer IPT 2 IPT 产品简介 非接触式动力和数据传输系统 Conductix-Wampfler Inductive Power Transfer IPT 2 Conductix-Wampfler Inductive Power Transfer IPT 3 9 1 2 3 4 5 6 7 8 4 2 3 4 1 8 5 7 9 6 ² ² ² - 无限的应用可能性... 用于变速箱总装线上的 AGV 小车

More information

SIM Server用户手册

SIM Server用户手册 SIM Bank Scheduler 服 务 器 用 户 手 册 (for Version 1.01.3) SIM Bank Scheduler 服 务 器 介 绍 : SIM Bank Scheduler 服 务 器 ( 简 称 SIM Server) 是 本 公 司 推 出 的 用 于 调 度 SIM Bank 和 GoIP 线 路 对 接 的 服 务 器 软 件 使 用 本 软 件,SIM Bank

More information

Android 手 机 程 序 设 计 入 门 应 用 到 精 通 内 存 1GB 硬 盘 剩 余 空 间 3GB 如 果 你 的 计 算 机 是 在 3 年 内 购 买 的 新 型 计 算 机, 应 该 能 够 符 合 以 上 的 条 件 如 果 你 的 计 算 机 是 比 较 旧 的 机 型,

Android 手 机 程 序 设 计 入 门 应 用 到 精 通 内 存 1GB 硬 盘 剩 余 空 间 3GB 如 果 你 的 计 算 机 是 在 3 年 内 购 买 的 新 型 计 算 机, 应 该 能 够 符 合 以 上 的 条 件 如 果 你 的 计 算 机 是 比 较 旧 的 机 型, UNIT 4 4 安 装 Android 程 序 开 发 工 具 在 开 始 学 习 编 写 Android 应 用 程 序 之 前, 我 们 必 须 先 搭 建 一 个 Android 应 用 程 序 的 开 发 环 境 建 立 Android 应 用 程 序 开 发 环 境 需 要 安 装 一 些 工 具 软 件, 而 学 习 Android 应 用 程 序 设 置 的 一 大 好 处 是 这

More information

ebook140-8

ebook140-8 8 Microsoft VPN Windows NT 4 V P N Windows 98 Client 7 Vintage Air V P N 7 Wi n d o w s NT V P N 7 VPN ( ) 7 Novell NetWare VPN 8.1 PPTP NT4 VPN Q 154091 M i c r o s o f t Windows NT RAS [ ] Windows NT4

More information

目 录 简 介.3 ` 体 系 结 构...4 数 据 层...5 数 据 连 接 器...6 Tableau Server 组 件...7 网 关 / 负 载 平 衡 器...8 客 户 端 :Web 浏 览 器 和 移 动 应 用 程 序...8 客 户 端 :Tableau Desktop..

目 录 简 介.3 ` 体 系 结 构...4 数 据 层...5 数 据 连 接 器...6 Tableau Server 组 件...7 网 关 / 负 载 平 衡 器...8 客 户 端 :Web 浏 览 器 和 移 动 应 用 程 序...8 客 户 端 :Tableau Desktop.. Neelesh Kamkolkar, 产 品 经 理 Ellie Fields, 产 品 营 销 副 总 裁 Marc Rueter, 战 略 解 决 方 案 高 级 总 监 适 用 于 企 业 的 Tableau: IT 概 述 目 录 简 介.3 ` 体 系 结 构...4 数 据 层...5 数 据 连 接 器...6 Tableau Server 组 件...7 网 关 / 负 载 平 衡

More information

Microsoft PowerPoint - Big Data rc Sharing掃盲時間.ppt [相容模式]

Microsoft PowerPoint - Big Data rc Sharing掃盲時間.ppt [相容模式] Big Data RC Sharing 大數據掃盲 Service Planner of Enterprise Big Data 大 數 據 服 務 規 劃 師 企 業 大 數 據 課 程 規 劃 依 照 企 業 資 料 流 程 的 特 殊 性, 安 排 合 適 的 課 程 協 助 企 業 導 入 應 用 大 數 據 案 例 :Etu 資 策 會 平 安 保 險 湖 南 國 防 科 技 大 學 等

More information

国际政治科学 ¹ º ¹ º

国际政治科学 ¹ º ¹ º 印度学者对中国的安全认知 司乐如 一轨 外交和 二轨 外交都是国际关系研究中值得重视的内容 前者有助于说明两国在政府外交层面的表现 对后者的研究则有助于了解在外交现象背后起作用的观念因素 本文的研究试图把社会心理学中的一些核心概念融入国际关系的研究之中 并在此基础上探讨印度学者对中国的安全认知 本文通过提供关于 认知 的更为精确的概念和理论框架 并通过术语统计和定性的案例分析 深入印度专家的视角 深化人们对中印安全互动的了解

More information

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

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之 臺 北 市 大 安 高 級 工 業 職 業 學 校 資 訊 科 一 百 零 一 學 年 度 專 題 製 作 報 告 ------ 以 Android 製 作 ------ ----- 連 線 塔 防 遊 戲 ------ Tower defense game using Internet technology 班 級 : 資 訊 三 甲 組 別 : A9 組 組 員 : 葉 冠 麟 (9906129)

More information

- abee23 - 博 客 频 道 - CSDN.NET 第 2 页 共 6 页 2013/9/29 23:30 通 过 ftp 获 取 minix3.1.8 系 统 源 代 (946) 码 最 新 评 论 解 决 OpenFetion 突 然 无 法 登 录 问 题 hacker85: 这 个

- abee23 - 博 客 频 道 - CSDN.NET 第 2 页 共 6 页 2013/9/29 23:30 通 过 ftp 获 取 minix3.1.8 系 统 源 代 (946) 码 最 新 评 论 解 决 OpenFetion 突 然 无 法 登 录 问 题 hacker85: 这 个 - abee23 - 博 客 频 道 - CSDN.NET 第 1 页 共 6 页 2013/9/29 23:30 首 页 业 界 移 动 云 计 算 研 发 论 坛 博 客 下 载 更 多 您 还 未 登 录! 登 录 注 册 帮 助 abee23 What have Done... & how To. 目 录 视 图 摘 要 视 图 订 阅 个 人 资 料 2014 年 1 月 微 软 MVP

More information

FPGAs in Next Generation Wireless Networks WPChinese

FPGAs in Next Generation Wireless Networks WPChinese FPGA 2010 3 Lattice Semiconductor 5555 Northeast Moore Ct. Hillsboro, Oregon 97124 USA Telephone: (503) 268-8000 www.latticesemi.com 1 FPGAs in Next Generation Wireless Networks GSM GSM-EDGE 384kbps CDMA2000

More information