Hive与MapReduce小文件合并问题
近来我们公司搞小文件治理(小于10Mb),小文件太多的危害就不此赘述了。公司的开发人员提供的合并小文件治理配置如下: -- 设置小文件合并set hive.merge.mapfiles=true;set hive.merge.mapredfiles=true;set hive.merge.size. ...
Read more
hive报错:running beyond physical memory limits. Current usage: 2.0 GB of 2 GB physica终极解决方式
案例描述hive有个定时任务平时正常,没有啥问题,正常一般大概执行1个小时左右,但是今天突然报错了,报错代码::running beyond physical memory limits. Current usage: 2.0 GB of 2 GB physical memory used; 3.9 ...
Read more
如何控制reduce个数与参数调优
相比map个数的控制复杂性,reduce个数的设定要相对简单多了,reduce的个数一般最后决定了输出文件的个数,二者相等,如果想多输出文件的个数(这样文件变小,但有可能程序变慢),那么可以人为增加reduce个数。如果想减少文件个数,也可以手动较少reduce个数(同样可能程序变慢)。但实际开发中 ...
Read more
Hive运行SQL重置进度,如何控制map个数与参数调优
背景生产上执行一条简单的sql却一直失败,猜测是Container的Memory或者Core超出了阈值,自动被杀了。 insert into table t select * from t2 目前已知的是文件大小200M,压缩格式是ORC,从日志中发现了一个可疑的地方,mapper的个数是1,怀 ...
Read more
in/exists和not in/not exists的一些性能思考
对比以下两个sqlSELECT id, category_id, htmlfile, title,convert(varchar(20),begintime,112) as pubtimeFROM tab_oa_pub WHERE is_check=1 and category_id in (sel ...
Read more
left semi join与in/exists的一些思考
什么是left semi joinSemi Join,也叫半连接,是从分布式数据库中借鉴过来的方法。它的产生动机是:对于reduce join,跨机器的数据传输量非常大,这成了join操作的一个瓶颈,如果能够在map端过滤掉不会参加join操作的数据,则可以大大节省网络IO,提升执行效率。 主要是 ...
Read more
Spark JDBC谓词下推
探索前段时间,我必须从 mysql 表中读取数据,对这些数据进行一些操作,并将结果存储在磁盘上。 显而易见的选择是使用 spark,因为我已经在其他东西上使用它,它似乎超级容易实现。 这或多或少是我必须做的事情 (为了简单起见,我删除了做操作的部分): spark.read.format("jdbc ...
Read more
没有了可用Task Slot,Flink新增任务会怎样?
无可用Task Slots如下图所示,一个普通Flink1.7的Local环境,正在运行一个并行度为4的任务,现有Task slot全部被使用,因此Available Task Slots为零: 如果这时候再提交一个任务,会出现什么情况呢?如下图,新提交的任务,状态是SCHEDULED(红框所示) ...
Read more
Slot分配与共享
Flink 中并行任务的分配Flink 中每一个 TaskManager 都是一个JVM进程,它可能会在独立的线程上执行一个或多个 subtask 为了控制一个 TaskManager 能接收多少个 task, TaskManager 通过 task slot 来进行控制(一个 TaskManage ...
Read more
解决小文件引出的控制map、reduce数量的总结
从前面的三篇《小文件问题》、《Hive中Reduce个数是如何计算的》、《map和reduce个数的设定》中大概知道了小文件是如何产生的,以及如何解决它,这篇文章就从Hive的两个黑科技 concatenate关键字和distribute by关键字 彻底解决MapReduce过程中小文件带来的问题 ...
Read more