做任务赚话费的网站,域名生成器,深圳企业贷款需要什么手续和条件,seo企业建站系统Hive引擎包括#xff1a;默认MR、Tez、Spark
不更换引擎hive默认的就是MR。
MapReduce#xff1a;是一种编程模型#xff0c;用于大规模数据集#xff08;大于1TB#xff09;的并行运算。
Hive on Spark#xff1a;Hive既作为存储元数据又负责SQL的解析优化#xff0…Hive引擎包括默认MR、Tez、Spark
不更换引擎hive默认的就是MR。
MapReduce是一种编程模型用于大规模数据集大于1TB的并行运算。
Hive on SparkHive既作为存储元数据又负责SQL的解析优化语法是HQL语法执行引擎变成了SparkSpark负责采用RDD执行。
Spark on Hive
就是通过sparksql加载hive的配置文件获取到hive的元数据信息spark sql获取到hive的元数据信息之后就可以拿到hive的所有表的数据接下来就可以通过spark sql来操作hive表中的数据
Hive on Spark效率要低于Spark on Hive 前者只有计算引擎是Spark前期解析转换优化等步骤都是Hive完成。
后者只有元数据用了Hive对SQL的解析转换优化等都是Spark完成。
Tez
Tez是Apache开源的支持DAG作业的计算框架它直接源于MapReduce框架核心思想是将Map和Reduce两个操作进一步拆分即Map被拆分成Input、Processor、Sort、Merge和Output Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等这样这些分解后的元操作可以任意灵活组合产生新的操作这些操作经过一些控制程序组装后可形成一个大的DAG作业 Spark Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架Spark基于map reduce算法实现的分布式计算拥有Hadoop MapReduce所具有的优点但不同于MapReduce的是Job中间输出和结果可以保存在内存中从而不再需要读写HDFS因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。 Tez和Mapreduce区别 核心思想MapReduce将一个算法抽象成Map和Reduce两个阶段进行处理Tez将Map和Reduce两个操作进一步拆分即Map被拆分成Input、Processor、Sort、Merge和Output Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等依赖DAGMapreduce没有DAG一说Tez将map和reduce阶段拆分成多个阶段分解后的元操作可以任意灵活组合产生新的操作这些操作经过一些控制程序组装后可形成一个大的DAG作业落地磁盘MapReduce会有多次落地磁盘Tez可以将多个有依赖的作业转换为一个作业这样只需写一次HDFS且中间节点较少。 Tez和Spark区别 使用场景spark更像是一个通用的计算引擎提供内存计算实时流处理机器学习等多种计算方式适合迭代计算tez作为一个框架工具特定为hive和pig提供批量计算运行模式spark属于内存计算支持多种运行模式可以跑在standaloneyarn上而tez只能跑在yarn上虽然spark与yarn兼容但是spark不适合和其他yarn应用跑在一起资源利用tez能够及时的释放资源重用container节省调度时间对内存的资源要求率不高 而spark如果存在迭代计算时container一直占用资源 mr引擎在hive 2中将被弃用。官方推荐使用tez或spark等引擎。 冲突
在hive sql中使用了union 或 join操作
tez会将任务切分,每个小任务同一个HDFS分区目录下会创建一个文件文件夹这就会造成一个非常严重的问题假如这张表的下文使用这张表没有用tez而是使用spark或者mr这两种引擎是不会遍历子文件夹下的内容的。查出来的数据为0。而我们很难约束其他人使用同一种引擎
所以tez在使用中抛弃。我们最中选择了spark引擎。 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之间的文件存储同时合理组合其子过程也可以减少任务的运行时间。
SparkHive on Spark总体的设计思路是尽可能重用Hive逻辑层面的功能从生成物理计划开始提供一整套针对Spark的实现比如 SparkCompiler、SparkTask等这样Hive的查询就可以作为Spark的任务来执行了 单从引擎的执行效率来说Spark TEZ MapReduce
MR
计算会对磁盘进行多次的读写操作这样启动多轮job的代价略有些大不仅占用资源更耗费大量的时间
TEZ
计算就会生成一个简洁的DAG作业算子跑完不退出下轮继续使用上一轮的算子这样大大减少磁盘IO操作从而计算速度更快。 TEZ比MR至少快5倍约值反正是快不必较真0.0
Spark
计算DAG生成Stage划分比MR快10倍约值反正是快不必较真0.0与TEZ相比我选择Spark一来快二来奇葩问题比较少