大数据面试题 -- 03

1、hive开启map端join的参数,以及其他优化参数

map端join适合优化小表join大表的情况(写sql时将小表作为驱动表,也就是select a from b join c on b.id=c.id -->b 为小表,写左边)

  1. mapjoin优化适合小表join大表

set hive.optimize.skewjoin=true; //有数据倾斜时开启负载均衡,默认false
set hive.auto.convert.join=true; //设置自动选择MapJoin,默认是true
set hive.auto.convert.join.noconditionaltask=true; //map-side join
set hive.auto.convert.join.noconditionaltask.size=100000000; //多大的表可以自动触发放到内层LocalTask中,默认大小10M
set hive.mapjoin.smalltable.filesize=200000000; //设置mapjoin小表的文件大小为20M,小表阈值

  1. 开启并行执行

set hive.exec.parallel=true; //可以开启并发执行
set hive.exec.parallel.thread.number=16; //同一个sql允许最大并行度,默认为8。

  1. 开启动态分区

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;

2、 Hive、HBase中的小文件如何处理?

小文件带来的问题:

1、namenode的内存是有限的,而不管文件大小,一个块的元数据都是150个字节左右,当有太多的小文件的时候,会严重影响Hadoop集群的存储能力。
2、小文件太多的话, MR计算的时候会有很多mapper,每个mapper计算的数据很少,所以MR任务的资源调度以及任务提交的时间决定了整体MR任务时间。也浪费了大量的资源。

解决小文件的方法:

  • 通常解决”小文件问题”的是:使用 SequenceFile。这种方法的思路是,使用文件名作为key,文件内容作为 value。其他方法应该也有对吧。
  • 减少reduce的个数

从小文件产生的途经就可以从源头上控制小文件数量,方法如下:

1.使用Sequencefile作为表存储格式,不要用textfile,在一定程度上可以减少小文件。

2.减少reduce的数量(可以使用参数进行控制)。

3.少用动态分区,用时记得按distribute by分区。

对于已有的小文件,我们可以通过以下几种方案解决:
1.使用hadoop archive命令把小文件进行归档。

2.重建表,建表时减少reduce数量。

3.通过参数进行调节,设置map/reduce端的相关参数,如下:

设置map输入合并小文件的相关参数:
//每个Map最大输入大小(这个值决定了合并后文件的数量)

set mapred.max.split.size=256000000;

//一个节点上split的至少的大小(这个值决定了多个DataNode上的文件是否需要合并)

set mapred.min.split.size.per.node=100000000;

//一个交换机下split的至少的大小(这个值决定了多个交换机上的文件是否需要合并)

set mapred.min.split.size.per.rack=100000000;

//执行Map前进行小文件合并

set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

设置map输出和reduce输出进行合并的相关参数:

//设置map端输出进行合并,默认为true

set hive.merge.mapfiles = true

//设置reduce端输出进行合并,默认为false

set hive.merge.mapredfiles = true

//设置合并文件的大小

set hive.merge.size.per.task = 25610001000

//当输出文件的平均大小小于该值时,启动一个独立的MapReduce任务进行文件merge。

set hive.merge.smallfiles.avgsize=16000000

3、Flume的拦截器是哪个场景会用?

1、当flume要对采集到的数据的hander或者body进行修改或者过滤时会在source端使用拦截器完成数据的初步清洗

2、当flume 要进行多层连接时

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值