HPCC 和 Hadoop 的详细比较
硬件环境
通常使用基于Intel或AMD CPU的刀片服务器来构建集群系统,为了降低成本可以使用已经停止销售的过时硬件。节点有本地内存和硬盘,通过高速交换机相连(通常为千兆交换机),如果 集群节点很多,也可以使用分层交换。集群内的节点是对等的(所有资源可以简化为相同配置),但这一点并非必须。
操作系统
Linux或windows
系统配置
实现HPCC集群用两种配置:数据加工(Thor)类似于Hadoop的MapReduce集群;数据分发引擎(Roxie)提供了独立的高性能在线查询 处理功能和数据仓库功能。两种配置都可以用做分布式文件系统,不过它们试图提高性能的实现方法不同。HPCC环境通常由两种配置类型的多个集群组成。虽然 每个集群上的文件系统相互独立,但是一个集群可以访问同一环境下位于其他集群上的文件系统内的文件。
Hadoop系统软件使用MapReduce处理范例实现了集群。这样的集群也可以用做运行HDFS的分布式文件系统。其他的功能都处Hadoop的MapReduce和Hbase,Hive等文件系统软件之上。
授权和维护费用
HPCC:社团版本是免费的。企业版授权费用目前取决于集群大小和系统配置的类型。
Hadoop:免费,不过有多个厂商提供不同的付费的维护服务。
核心软件
HPCC:如果使用了Thor配置,那么核心软件包括安装在集群每个节点上的操作系统和多种服务,它们来实现任务的执行和分布式文件系统的访问。名字为 Dali的独立服务器提供文件系统名字服务和管理HPCC环境下任务的工作单元。Thor集群可以配置为一个主节点和多个备用节点。Roxie集群是一个 对等连接的集群,它的每个节点可运行服务器和执行查询以及密钥和文件处理的任务代理。Roxie集群的文件系统使用分布式B+树来存储索引和数据,并提供 对加密数据的访问。要对Thor和Roxie集群进行操作的话,附加的中间件组件是不可或缺的。
Hadoop:核心软件包括操作系统、Hadoop的MapReduce集群和HDFS软件。每个备用节点包括任务跟踪服务和数据节点服务。主节点包括任 务追踪服务,任务追踪服务可配置为独立的硬件节点或者运行在一个备用硬件节点。类似地,对HDFS来说,要提供名字服务的话,主名字节点服务也是必须的, 并且可在一个备用的节点或者一个独立的节点之上运行这个服务。
中间件
HPCC:中间件包括在MySQL服务器上实现的ECL代码仓库、编译ECL程序和查询的ECL服务器、ECL代理即Thor集群上管理任务执行的客户端 程序,ESP服务器(企业服务平台),它提供认证、日志记录、安全以及执行任务和提供Web服务环境的其他服务,Dali服务器,它可用作存储任务工作单 元信息的系统数据和为分布式文件系统提供名字服务。中间件可以灵活地运行在一个到几个节点上。多个这样的服务器可以提供冗余备份和提高性能。
Hadoop:没有中间件。客户端软件可以直接提交任务给集群主节点的任务追踪器。作为服务器运行的Hadoop工作流调度器(HWS)的管理需要多个MapReduce序列的任务的功能正在开发中。
系统工具
HPCC包括用于管理、维护和监视HPCC配置和环境的客户端和操作工具套件。这个套件包括ECL IDE、程序开发环境、属性迁移工具、分布式文件应用(DFU)、环境配置应用和Roxie配置应用。命令行版本也可用。ECLWatch是一个监控 HPCC环境的基于Web的应用程序,它包括队列管理,分布式文件系统管理、任务监视和系统性能监视工具。其他工具是通过Web服务接口提供的。
Hadoop:dfsadmin工具提供文件系统的状态信息;fsck是一个检查HDFS上文件的健康性的应用;数据节点块扫描器定时地验证数据节点上所 有的存储块;平衡器根据需要把超负荷的数据节点上的阻塞重新发布到低负荷的数据节点上。MapReduce的WEB用户接口包括显示正在运行的和已经完成 的任务信息的任务追踪器页面;对一个具体的任务再向下点击的话就可以看到这个任务的详细信息。还有显示Map和Reduce任务信息的任务页面。
易部署
HPCC:环境配置工具。源服务器有一个集中式仓库,它分发操作系统级别的设置、服务和二进制文件到配置中所有可网络启动的节点上。
Hadoop:需要第三方应用向导提供的在线工具协助。需要手动部署RPM。
分布式文件系统
HPCC:Thor的分布式文件系统是面向记录的,使用本地Linux文件系统存储部分文件。文件是跨节点初始化装载的(提取的),并且每个节点都有一个 单独的部分文件,对一个分布式文件来说,这个部分文件可为空。在由用户指定的偶数个记录/文档范围内对文件进行分割。主备结构通过存储在独立服务器的名字 服务和文件映射信息来分割。每个节点只需要一个本地文件来表示一个分布式文件。同一环境下多个集群之间也支持读写访问权限设置。使用特定的适配器允许访问 来自外部数据库的比如MySQL的文件,允许事务数据与分布式文件数据合并且并入批处理的任务中。Roxie分布式文件系统使用了分布式B+树索引文件, 这样的文件包含了键值信息和存储在每个节点的本地文件里的数据。
Hadoop:面向块的,大多数安装使用大小为64MB或者128MB的块。块是以节点的本地Unix/Linux文件系统的独立单元/本地文件存储的。 每个块的元数据信息存储为一个独立的文件。主备结构使用了单独的名字节点提供名字服务和块映射,并且使用了多个数据节点。文件划分为块并且分布地存储在集 群的各个节点。跨节点存储在一个节点上每个逻辑块的多个本地文件(一个用来保存块数据、一个用来保存元数据)来表示一个分布式文件。
容错性
HPCC:Thor和Roxie的分布式文件系统(可配置)在其他节点上保存了部分文件的副本,以防止磁盘或者节点失效。Thor系统在一个节点失效之后 提供了要么自动要么手动的切换和热启动,任务从最近一次检查点重新启动或者继续运行。当复制数据到一个新的节点的时候,副本的制作自动进行。Roxie系 统在减少节点数而引起节点失效时继续运行。
Hadoop:HDFS(可配置)在其他节点上存储(用户指定的)多个副本,以防止由于自动恢复出现的磁盘或节点失效。MapReduce架构包括了试探性执行,当检测到一个慢的或者失败的Map任务时,其他Map任务将从失效的节点处开始恢复。
执行任务的环境
HPCC:Thor使用了主备处理结构。ECL任务定义的处理步骤可以指定本地操作(数据在每个节点上独立处理)或者全局(数据跨所有节点处理)操作。为 了对编译的ECL数据流程序的执行进行优化,一个过程的多个处理步骤可作为一个单独任务的一部分自动地执行。如果每个节点的CPU和内存资源可满足要求的 话,那么为了减少时延,一个单独的Thor集群可配置为并行地运行多个任务。包括ECL代理、ECL服务器和Dali服务器的中间件提供了客户端接口,并 管理作为工作单元打包的任务的执行。Roxie使用了多个服务器/代理的结构处理ECL程序,每个查询把服务器任务当作管理者,多个代理任务在需要的时候 获取和处理这个查询的数据。
Hadoop:对输入的键值对数据使用MapReduce处理范例。是主备处理结构。任务追踪器运行在主节点上,任务追踪器运行在每个备用节点上。给 Map任务指定输入文件的输入分支,通常一个块一个任务。Reduce任务数由用户指定。对指定的节点来说,Map处理是在本地执行的。移动和排序操作是 随着Map的阶段来进行的,它用来分发和排序键值对给键区所对应的Reduce任务,这样具有同一键的键值对由同一个Reduce任务处理。对大多数过程 来说,多个MapReduce处理步骤通常是必须的,并且一定是单独由用户或者语言比如Pig来排序和串接的。
编程语言
HPCC:ECL是HPCC环境的主要编程语言。ECL编译为优化的C++,然后再编译为在Thor和Roxie平台上可执行的DLL。ECL的包括封装 在函数里的内联的C++代码。外部服务可以用任何语言书写,并且编译为ECL可调用的函数共享库。管道接口允许执行用任何语言写的合并到任务里的外部程 序。
Hadoop的MapReduce任务通常用Java书写。其他语言的支持是通过流或者管道接口来实现的。其他处理环境是在Hadoop的 MapReduce之上执行的,比如HBase和Hive,它们拥有自身的语言接口。Pig拉丁语言和Pig执行环境提供了高级别的数据流语言,然后把这 种语言映射到到多个Java书写的MapReduce任务上。
集成编程开发环境
HPCC平台提供了ECL集成开发环境,一个综合的特别针对ECL语言的集成开发环境。ECL集成开发环境提供了对共享源代码仓库的访问,还提供了开发 ECL数据流程序的完整的开发和测试环境。对ECLWatch工具的访问是内置的,它允许开发人员查看任务的执行状况。对当前和历史任务的工作单元的访问 也提供了,它允许开发人员在开发周期期间很容易地对一个任务和下一个任务的结果进行比较。
Hadoop MapReduce使用了Java编程语言,有几个优秀的Java编程开发环境,包括NetBeans和Eclipse,它们提供了访问Hadoop集群 的插件。Pig环境没有自己的集成开发环境,不过可以使用Eclipse和其他编辑环境进行语法检查。Eclipse的pigPen附加组件提供了对 Hadoop集群的访问,这样可以在Hadoop集群上运行Pig程序和其他的开发功能。
数据库功能
HPCC 平台包括在分布式文件系统上构建多个键、多个域(也就是复合)索引的功能。这些索引可以用来提高性能,并且提供了Thor系统上批处理任务的关键字访问,或者用来支持部署到Roxie系统上的查询的开发。ECL语言直接支持数据的关键字访问。
基本的Hadoop的MapReduce不提供任何根据关键字访问索引数据库的功能。Hadoop附加的名字为HBase的系统提供了面向列关键字访问的 数据库功能。定制脚本语言和Java接口也提供了。Pig环境不直接支持对HBase的访问,它需要用户定义的函数或者各自的MapReduce过程。
在线查询和数据仓库功能
HPCC平台上的Roxie系统配置特别设计用来为结构化查询和数据分析应用提供数据仓库的功能。Roxie是一个高性能的平台,它能支持数千用户,并且提供取决于应用的亚秒响应时间。
基本的Hadoop的MapReduce系统不提供任何数据仓库功能。Hadoop的一个附加系统Hive提供数据仓库功能,并且允许装在HDFS到表 里,然后使用类SQL的语言访问。Pig环境不直接支持对Hive的访问,它需要用户定义的函数或者各自的MapReduce过程。
扩展性
HPCC:一个到几千个节点。实际上,HPCC配置需要非常少的节点就可以提供Hadoop集群相同的处理性能。不过集群的大小可能取决于分布式文件系统的整体存储需求。
Hadoop:一个到数千个节点。
性能
已经证明HPCC平台在高性能的400个节点系统上102秒内对1TB的数据完成排序。在最近一次对运行在另外400个节点系统上的Hadoop进行了实 力相当的基准测试,HPCC性能是6分27秒,而Hadoop的性能是25分钟28秒,同样的硬件配置的结果表明HPCC的基准测试比Hadoop快 3.95倍。
Hadoop:当前唯一可用的标准性能基准测试是由http://sorbenchmark.org所赞助的排序基准测试。雅虎已经证明在1460个节点 上排序1TB数据是62秒,3450个节点排序100TB的数据是173分钟,3658个节点排序1PB数据是975分钟。