HPCC 和 Hadoop 的详细比较

2019-03-28 12:58|来源: 网络

件环境

通常使用基于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分钟。

培训

HPCC:每月在几个地方都提供ECL编程的基础培训和高级培训的课程,或者由客户确定基础和高级课程的指导。系统管理员课程也根据需要提供和调整。可在单独的PC或者膝上型电脑的具有完整HPCC和ECL学习环境的免费的HPCC VM映像也可用。

Hadoop培训是由第三方提供的。入门级和高级的课程都有提供。高级课程包括Hadoop附加的组件HBase和Pig。另外一个第三方还提供了可用在标准的膝上型电脑或者PC上的VMWare基础学习环境。在线教程也可以使用。

更多Hadoop相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

相关问答

更多
  • 现在hadoop1.0都出了 简单说一下吧 你的java jdk的环境变量没有设置吧? 最好按以下步骤再做一遍: 1 用root用户安装jdk1.6以上 2 用root用户 创建hadoop用户 3 在hadoop用户下安装hadoop(你上面说的1到4) 4 修改/home/hadoop/.bash_profile将JDK和hadoop的环境变量设置好 5 安装ssh(伪集群也需要ssh)
  • 方法步骤如下: 1在Windows下安装虚拟机Vmware,并新建一个虚拟机装好centos系统。 首先下载VMware-workstation并安装,在Vmware的主页上新建一个虚拟机,一路下一步,直到让选择系统镜像路径,这里选择centos系统映像,然后,需要输入linux的用户名,这个比较重要,最好填写hadoop,因为这个名字在后面要用到好多次。 接下来还是一路的“下一步”,直到让设置虚拟机的内存大小,建议为1024M。后面就是要选择和虚拟机的网络类型有关的设置了,建议为“使用网络地址转换NAT” ...
  • chown -R hadoop:hadoop ./hadoop 要分成4段来看 chown是命令用来修改目录的权限 -R代表递归,就是从当前目录到他最下面的子目录 hadoop:hadoop代表将目录和文件的owner和group都设成hadoop ./hadoop代表从当前目录hadoop开始修改
  • 你指的是在hdfs中使用hadoop fs -rm删除文件吗? 这样是没有任何影响的。如果你认为hdfs和普通文件系统一样,也是可以使用linux的ls命令查看到文件列表的话,那你的理解就错了,所以不存在什么在某个disk下直接rm掉hdfs的文件这种事。如果你指的是rm掉hadoop的配置文件或者一些指定目录,如data目录,tmp目录等,那么你影响的是整个hadoop集群,当然也有可能没有影响,具体看你删掉什么文件了
  • Hadoop是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(high throughput)来访问应用程序的数据,适合那些有着超大 大讲台国内首个it在线自适应学习平台。中国的knewton,世界的自适 ...
  • 必须在hadoop集群上,它的数据来源是HDFS,本质上是yarn上的一个计算框架,像MR一样。
  • 有关hadoop的问题[2024-01-08]

    hdfs本身提供http访问方式,即使用Rest方式。 参考:http://hadoop.apache.org/docs/r2.3.0/hadoop-hdfs-httpfs/index.html
  • Solr(主要)用于存储和搜索,Hadoop(主要)用于分布式处理。 他们解决不同的问题。 最常见的是使用Solr和HDFS来存储/加载其索引文件 ,以便使用HDFS集群中的现有功能,或者允许通过Solr搜索已处理的Hadoop结果 。 如果您在Google上进行一些搜索,您会发现很多用例,演示文稿和库,例如LucidWorks的Hadoop集成 , Solr + Hadoop或Hortonworks的索引以及在Apache Solr中搜索数据 。 Solr is (mainly) for storage ...
  • Javac用于编译java代码。 如果您注意到WordCount示例,则有许多import语句要求您在类路径中添加相应的jar。 当你运行hadoop com.sun.tools.javac.Main WordCount.java ,hadoop已经加载了所有这些依赖的jar来编译你的程序。 您可以通过运行javac WordCount.java来测试它,如果您的类路径中还没有这些必需的jar,编译器会抛出cannot find symbol错误 Javac is used for compiling yo ...
  • kdb是面向列的数据库加上基于数组的语言q。 我写了一个顶级列导向数据库的比较,这应该让你了解常见的竞争对手。 我认为kdb和hadoop非常不同,对于我看到的用例,重叠很小。 你想解决的问题是什么? Sayantan Ghosh写了这个比较https://www.quora.com/Whats-the-difference-between-Hadoop-and-KDB : KDB和Hadoop之间的主要区别是: KDB使用简洁的编程语言Q.在Q中,表达式从右到左评估,而不是从左到右评估其他编程语言,如Ja ...