MapReduce&&Hadoop

高能性能计算(High Performance Computing, HPC)和网格计算(Grid Computing)组织多年以来一直在研究大规模数据处理,主要使用类似于消息传递接口(Message Passing Interface, MPI)的API。从广义上讲,高性能计算采用的方法是将作业分散到集群的各台服务器上,这些机器访问存储区域网络(SAN)所组成的共享文件系统。这比较适用于计算密集型的作业,但如果节点需要访问的数据量更庞大(高达几百GB,MapReduce开始施展他的方法),很多计算节点就会因为网络带宽的瓶颈问题不得步闲下来等数据。
MapReduce尽量在计算节点上存储数据,以实现数据的本地快速访问。数据本地化(data locality)特性是MapReduc的核心特征,并因此而获得良好的性能。意识到网络带宽是数据中心环境最珍贵的资源之后,MapReduce通过显式网络拓扑结构来保留网络带宽。
虽然MPI(MPI是一个跨语言的通讯协议,用于编写并行计算机。支持点对点和广播。MPI是一个信息传递应用程序接口,包括协议和和语义说明,他们指明其如何在各种实现中发挥其特性。MPI的目标是高性能,大规模性,和可移植性)赋予程序员很大的控制权,但需要程序员显式控制数据流机制,包括用C语言构造底层的功能模型和高层的数据分析算法。

志愿计算
志愿者吧自己的计算机CPU的空闲时间贡献出来供分析无线一些需要的数据。志愿计算项目将问题分成很多块,每一块成为一个工作单元,发到世界各地的计算机上进行分析。
MapReduce有三大目标:为只需要短短几分钟或几小时就可以完成的作业提供服务;运行于同一个内部有高速网络连接的数据中心内;数据中心内的计算机都是可靠的、定制的硬件。
Hadoop项目:
Common:一系列组件和接口,用于分布式文件系统和通用I/O(序列化、Java RPC<(Remote Procedure Call)——远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。> 和持久化数据结构)
Avro:一种序列化系统,用于支持高效、跨语言的RPC和持久化数据存储
MapReduce:分布式数据处理模型和执行环境,运行于大型商用机集群
HDFS:分布式文件系统,运行于大型商用机集群
Pig:数据流语言和运行环境,用以探究非常庞大的数据集。Pig运行在MapReduce和HDFS集群上
Hive:一种分布式的、按列存储的数据仓库。Hive管理HDFS中存储的数据,并提供基于SQL的查询语言(由运行时引擎翻译成MapReduce作业)用以查询数据
HBase:一种分布式的、按列存储的数据。HBase使用HDFS作为底层存储,同时支持MapReduce的批量式计算和点查询(随机读取)
ZooKeeper:一种分布式的可用性搞得协调服务。ZooKeeper提供分布式锁之类的基本服务用于构建分布式应用
Sqoop:该工具用于在结构化数据存储(如关系型数据库)和HDFS之间高效批量传输数据
Oozie:该服务用于运行和调度Hadoop作业(如MapReduce,Pig,Hive及Sqoop作业)
将Hadoop版本升级成另外一个版本时,需要仔细考虑需要升级步骤。同时还要考虑几个方面:API兼容性、数据兼容性和连接兼容性。
API兼容性:考虑用户代码和发行的Hadoop API之间的对比,例如Java MapReduce API。住发行版本时允许破坏API兼容性的,因此用户的程序要修改并重新编译。次重点发行版本和单节点发行版本不应该破坏兼容性。
数据兼容性:考虑持久数据和元数据的格式,这些修改对用户透明,因为系统升级时数据会自动迁移。系统升级路径有一些限制,这些限制包含在发行须知中。
连接兼容性:主要考虑通过利用RPC和HTTP这样的连接协议来实现客户端和服务器之间的互操作性。有两类客户端:外部客户端和内部客户端。其中内部客户端在加锁状态进行升级,旧版本的无法与新版本的一起工作。

    原文作者:MapReduce
    原文地址: https://yq.aliyun.com/articles/292297
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞