MapReduce】hive和MR的区别

2020-05-21 08:56发布

2条回答
小冰块儿
2楼 · 2020-05-21 09:24

MapReduce: 是一种离线计算框架,将一个算法抽象成Map和Reduce两个阶段进行处理,每个阶段都是用键值对(key/value)作为输入和输出,非常适合数据密集型计算。Map/Reduce通过把对数据集的大规模操作分发给网络上的每个节点实现可靠性;每个节点会周期性地返回它所完成的工作和最新的状态。如果一个节点在设定的时间内没有进行心跳上报,主节点(可以理解为主服务器)就会认为这个节点down掉了,此时就会把分配给这个节点的数据发到别的节点上运算,这样可以保证系统的高可用性和稳定性。因此它是一个很好的计算框架。

TEZ:

是基于Hadoop YARN之上的DAG(有向无环图,Directed Acyclic Graph)计算框架。核心思想是将Map和Reduce两个操作进一步拆分,即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等。这样,这些分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过一些控制程序组装后,可形成一个大的DAG作业,从而可以减少Map/Reduce之间的文件存储,同时合理组合其子过程,也可以减少任务的运行时间。

两者比较:


MR计算,会对磁盘进行多次的读写操作,这样启动636f7079e799bee5baa631333431346464多轮job的代价略有些大,不仅占用资源,更耗费大量的时间,

而采用TEZ计算框架,就会生成一个简洁的DAG作业,算子跑完不退出,下轮继续使用上一轮的算子,这样大大减少磁盘IO操作,从而计算速度更快。 TEZ比MR至少快5倍


py大白
3楼 · 2020-05-21 09:28
MR计算,会对磁盘进行多次的读写操作,这样启动多轮job的代价略有些大,不仅占用资源,更耗费大量的时间,
而采用TEZ计算框架,就会生成一个简洁的DAG作业,算子跑完不退出,下轮继续使用上一轮的算子,这样大大减少磁盘IO操作,从而计算速度更快。 hive比MR至少快5倍


相关问题推荐

  • 回答 1

    shuffle算法,我把他叫做洗牌算法,它的目标正好与各种的sort算法相反,即把一个有序(或者无序)的一系列元素打乱,以满足需求。举个两例子,大家都知道扑克牌,我们每次都需要在摸牌之前把牌洗掉,用来让每个人摸到每张牌的概率尽量相等,增加游戏的随机性和...

  • 回答 1

    写一个程序,程序中创建一个类,类需要继承UDAF类,计算类Evaluator实现UDAFEvaluator接口。Evaluator需要实现UDAFEvaluator的init、iterate、terminatePartial、merge、terminate这几个函数。将程序编译成udaf_test.jar进入hive客户端添加jar包:hive>add jar...

  • 回答 2

    hive支持的存储格式:  hive支持的存储格式包括TextFile、SequenceFile、RCFile、Avro Files、ORC Files、Parquet。TextFile:  Hive默认格式,数据不做压缩,磁盘开销大,数据解析开销大。  可结合Gzip、Bzip2、Snappy等使用(系统自动检查,执行查询...

  • 回答 1

    结合实际的需求来选择存储格式1-TEXTFILE文本格式,Hive的默认格式,数据不压缩,磁盘开销大、数据解析开销大。对应的hive API为:org.apache.hadoop.mapred.TextInputFormat和org.apache.hive.ql.io.HiveIgnoreKeyTextOutputFormat;可结合Gzip、Bzip2使用(...

没有解决我的问题,去提问