当前位置: 首页 > 新闻中心 > mapreduce服务

mapreduce服务

发布时间:2024-02-24 5:06:09

  1. spark也是基于hadoop的吗?它和hadoop是并列的还是和mapreduce是并列的?
  2. 什么是MapReduce?
  3. mapreduce和hbase的关系,哪些是正确的

一、spark也是基于hadoop的吗?它和hadoop是并列的还是和mapreduce是并列的?

spark已经取代hadoop成为最活跃的开源大数据项目,但是,在选择大数据框架时,企业不能因此就厚此薄彼

近日,著名大数据专家bernard marr在一篇文章中分析了spark和 hadoop 的异同

hadoop和spark均是大数据框架,都提供了一些执行常见大数据任务的工具,但确切地说,它们所执行的任务并不相同,彼此也并不排斥

虽然在特定的情况下,spark据称要比hadoop快100倍,但它本身没有一个分布式存储系统

而分布式存储是如今许多大数据项目的基础,它可以将 pb 级的数据集存储在几乎无限数量的普通计算机的硬盘上,并提供了良好的可扩展性,只需要随着数据集的增大增加硬盘

因此,spark需要一个第三方的分布式存储,也正是因为这个原因,许多大数据项目都将spark安装在hadoop之上,这样,spark的高级分析应用程序就可以使用存储在hdfs中的数据了

与hadoop相比,spark真正的优势在于速度,spark的大部分操作都是在内存中,而hadoop的mapreduce系统会在每次操作之后将所有数据写回到物理存储介质上,这是为了确保在出现问题时能够完全恢复,但spark的弹性分布式数据存储也能实现这一点

另外,在高级数据处理(如实时流处理、机器学习)方面,spark的功能要胜过hadoop

在bernard看来,这一点连同其速度优势是spark越来越受欢迎的真正原因

实时处理意味着可以在数据捕获的瞬间将其提交给分析型应用程序,并立即获得反馈

在各种各样的大数据应用程序中,这种处理的用途越来越多,比如,零售商使用的推荐引擎、制造业中的工业机械性能监控

spark平台的速度和流数据处理能力也非常适合机器学习算法,这类算法可以自我学习和改进,直到找到问题的理想解决方案

这种技术是最先进制造系统(如预测零件何时损坏)和无人驾驶汽车的核心

spark有自己的机器学习库mlib,而hadoop系统则需要借助第三方机器学习库,如apache mahout

实际上,虽然spark和hadoop存在一些功能上的重叠,但它们都不是商业产品,并不存在真正的竞争关系,而通过为这类免费系统提供技术支持赢利的公司往往同时提供两种服务

例如,cloudera 就既提供 spark服务也提供 hadoop服务,并会根据客户的需要提供最合适的建议

bernard认为,虽然spark发展迅速,但它尚处于起步阶段,安全和技术支持基础设施方还不发达,在他看来,spark在开源社区活跃度的上升,表明企业用户正在寻找已存储数据的创新用法

二、什么是MapReduce?

概念"map(映射)"和"reduce(化简)",和他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。他极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的reduce(化简)函数,用来保证所有映射的键值对中的每一个共享相同的键组。   映射和化简   简单说来,一个映射函数就是对一些独立元素组成的概念上的列表(例如,一个测试成绩的列表)的每一个元素进行指定的操作(比如前面的例子里,有人发现所有学生的成绩都被高估了一分,他可以定义一个“减一”的映射函数,用来修正这个错误。)。 事实上,每个元素都是被独立操作的,而原始列表没有被更改,因为这里创建了一个新的列表来保存新的答案。这就是说,map操作是可以高度并行的,这对高性能要求的应用以及并行计算领域的需求非常有用。    而化简操作指的是对一个列表的元素进行适当的合并(继续看前面的例子,如果有人想知道班级的平均分该怎么做?他可以定义一个化简函数,通过让列表中的元素跟自己的相邻的元素相加的方式把列表减半,如此递归运算直到列表只剩下一个元素,然后用这个元素除以人数,就得到了平均分。)。虽然他不如映射函数那么并行,但是因为化简总是有一个简单的答案,大规模的运算相对独立,所以化简函数在高度并行环境下也很有用。编辑本段分布和可靠性   mapreduce通过把对数据集的大规模操作分发给网络上的每个节点实现可靠性;每个节点会周期性的把完成的工作和状态的更新报告回来。如果一个节点保持沉默超过一个预设的时间间隔,主节点(类同google file system中的主服务器)记录下这个节点状态为死亡,并把分配给这个节点的数据发到别的节点。每个操作使用命名文件的原子操作以确保不会发生并行线程间的冲突;当文件被改名的时候,系统可能会把他们复制到任务名以外的另一个名字上去。(避免副作用)。    化简操作工作方式很类似,但是由于化简操作在并行能力较差,主节点会尽量把化简操作调度在一个节点上,或者离需要操作的数据尽可能近的节点上了;这个特性可以满足google的需求,因为他们有足够的带宽,他们的内部网络没有那么多的机器。 用途  在google,mapreduce用在非常广泛的应用程序中,包括“分布grep,分布排序,web连接图反转,每台机器的词矢量,web访问日志分析,反向索引构建,文档聚类,机器学习,基于统计的机器翻译...”值得注意的是,mapreduce实现以后,它被用来重新生成google的整个索引,并取代老的ad hoc程序去更新索引。   mapreduce会生成大量的临时文件,为了提高效率,它利用google文件系统来管理和访问这些文件。

三、mapreduce和hbase的关系,哪些是正确的

mapreduce与hbase没有关系:

mapreduce:

mapreduce是一种编程模型,用于大规模数据集的并行运算。概念"map"和"reduce",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。

扩展资料:

mapreduce集群中使用了大量的低端服务器。因此,节点硬件故障和软件错误是常态。因此,设计良好、容错性高的并行计算系统不会因为节点故障而影响计算服务的质量。

任何节点的故障不应导致结果的不一致或不确定性;当任何节点失败时,其他节点应该能够无缝地接管失败节点的计算任务。当故障节点被恢复时,它应该能够自动无缝地加入集群,而不需要管理员手动配置系统。

mapreduce并行计算软件框架使用了多种有效的错误检测和恢复机制,如节点自动重启技术,使集群和计算框架对节点失效具有鲁棒性,能够有效地处理失效节点的检测和恢复。