很久没更新博客了,今天发现以前的小点还是等帮助到一些朋友的,今天也更新一下,打个卡。
今天说一下TEZ引擎使用时容易犯错的点吧。
首先要知道TEZ是什么,下图为官网上对TEZ的简略图。
官网首页也介绍了Tez的2个主要设计主题是:
1.通过以下方式增强最终用户的能力:
富有表现力的数据流定义API
灵活的输入-处理器-输出运行时模型
不可知数据类型
简化部署
2,执行性能
与Map Reduce相比性能提升
最佳资源管理
在运行时计划重新配置
动态物理数据流决策
TEZ的执行基础还是DAG任务,从原理上讲,还是MR,不过通过细分DAG过程,实现了对MR的优化。
过程和原理就不乱扯了,不要被你们发现了我外套下的补丁,有兴趣多去官网看看,现在****精华部分有点少,千篇一律的感觉*(手动滑稽)*,每次我搜个知识点还得限制最新时间为一年内,也得冥想好关键词才能避开一些憨憨。。。
回归主题,博客也不多写了,手敲老累了。
TEZ与MR的主要对比
TEZ会拿到预估的资源,在结束计算后释放,可以通过参数调整;
MR会通过解析任务步骤,释放、申请、释放这样的执行。
从简要上看,TEZ的执行时间肯定会优先于MR的,只要资源足够、足够、够、、、。
缺陷一:资源不能及时释放。
缺陷二:hive.tez.container.size这个参数如非必要,不要设置,默认-1就好;
缺陷三: insert union逻辑时,TEZ会进行优化,但是会在写入到HDFS上时会创一个目录防止重复(当时发现时我是没看懂的。。),需要规避。
最后:
工具的使用千篇一律,使用工具的人万里挑一。