上海公司大数据面试题(面经)
1.东软集团架构师电话面试二十分钟:1.1.hbase有什么特点,他的优缺点:海量存储,列式存储,高并发,稀疏(列的灵活性,列族中可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的),高可用(WAL解决高可用,瞬间写入量)2.单一RowKey固有的局限性决定了它不可能有效地支持多条件查询,不支持SQL语句1.1.3hbase的过滤器说几个及其作用:比较运算符(less,greater_or_equal,NO_OP),比较器(BinaryComparator,BitComparator,NullComparator)。比较过滤器:rowfilter,familyfilter,qualifierfilter,valuefilter,timestampsfilter,Filter rowFilter = new RowFilter(CompareOp.GREATER, new BinaryComparator("95007".getBytes()));2.专用过滤器:SingleColumnValueFilter -会返回满足条件的整行,单列值排除器 SingleColumnValueExcludeFilter ,前缀过滤器 PrefixFilter----针对行键,列前缀过滤器 ColumnPrefixFilter,分页过滤器 PageFilter1.2.hive表的优化:怎么解决数据倾斜:key分布不均匀,数据本身,sql语句本身容易引起倾斜(goupbykey,join,distinct count)groupbykey引起的:参数调优:set hive.groupby.skewindata=true;生成的查询计划会有两个MRJob采用sum() group by的方式来替换count(distinct)完成计算1.2hive有一张小表明细表,一张超级大的表join,怎么解决这种容易引起数据倾斜?1.3.hive表之间有父子依赖关系,几十张表,你是如何处理的?1.4.sqoop给了我一个错误的引导:说是sqoop收集数据。反怼了他。1.5.Redis的哨兵模式:自己挖的坑,自己踩。1.6其他的简历方面的也问了不少,没啥特别的说的。
1.把多个参数转化为单参数函数的级联,达到了动态确定参数的目的。
2.当某些参数不确定时,可以先保留一个存根。剩余的参数确定以后,就可以通过存根调用剩下的参数。
7.闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量。闭包通常来讲可以简单的认为是可以访问不在当前作用域范围内的一个函数。8.beeline:jdbc9.数仓:ORACLE和DB2在OLTP中占有绝对的优势,但在注重海量数据高效查询的OLAP中,远远不及TeraData和IQ(sybase),10.其他的都比较简单,不写了。\3.通过类似于建造者模式(building),把一个大的东西的构造过程,切成一个个的小模块来逐步构造。举个最简单的例子,Person.name("xxx").age(num).salary(count).phone(xxxx)。
0.公司是处理那些数据的,整个流程。
1.scala异常分为哪些类,平时怎么抛异常的,处理策略:使用try异常处理机制的一个重要理由是,当有异常出现时,程序会跳过try继续运行下去,不会就此中断,有效提高了程序的稳健性
2.有一个很大的文件,里面有很多重复数据,如何去重的?详细说case
3.flume的高可用和高可靠性,以及failover和负载均衡:!
1.负载均衡:source里的event流经channel,进入sink组,在sink组内部根据负载算法(round_robin、random)选择sink,后续可以选择不同机器上的agent实现负载均衡。
2.failover:配置一组sink,这组sink组成一个Failover Sink Processor,当有一个sink处理失败,Flume将这个sink放到一个地方,等待冷却时间,可以正常处理event时再拿回来。event通过通过一个channel流向一个sink组,在sink组内部根据优先级选择具体的sink,一个失败后再转向另一个sink。
#define sinkgroups
a1.sinkgroups=g1
a1.sinkgroups.g1.sinks=k1 k2
a1.sinkgroups.g1.processor.type=failover
a1.sinkgroups.g1.processor.priority.k1=10
a1.sinkgroups.g1.processor.priority.k2=5
a1.sinkgroups.g1.processor.maxpenalty=100007.创略科技现场面试:1.kafka传数据过程中断电了,怎么保证可靠性:ISR! 主从!多副本冗余,每个 Partition 都可以搞一个副本放在别的机器上,这样某台机器宕机,只不过是 Partition 其中一个副本丢失。如果某个 Partition 有多副本的话,Kafka 会选举其中一个 Parititon 副本作为 Leader,然后其他的 Partition 副本是 Follower。只有 Leader Partition 是对外提供读写操作的,Follower Partition 就是从 Leader Partition 同步数据。一旦 Leader Partition 宕机了,就会选举其他的 Follower Partition 作为新的 Leader Partition 对外提供读写服务2.kafka的分区数据是怎么分配到不同分区的以及分区到不同的broker:1.默认的分区策略:对每个消息的key的hash值对partition数取模2.对指定的分区进行输入数据:自定义分区3.在创建topic时 kafka根据内部的负载均衡算法 将分区均匀的分布在多个broker上,分区可以提高系统的吞吐量,kafka只在partition中是有序的.从上面的算法可以看出:1 副本因子不能大于 Broker 的个数;2 第一个分区(编号为0)的第一个副本(编号为0)放置位置是随机从 brokerList 选择的;3 其他分区的第一个副本放置位置相对于第0个分区依次往后移。也就是如果我们有5个 Broker,5个分区,假设第一个分区放在第四个 Broker 上,那么第二个分区将会放在第五个 Broker 上;第三个分区将会放在第一个 Broker 上;第四个分区将会放在第二个 Broker 上,依次类推;4 剩余的副本相对于第一个副本放置位置其实是由 nextReplicaShift 决定的,而这个数也是随机产生的3.kafka的工作原理4.flume的工作原理5.flume的source,sink,channel都有哪些,说一下6.hbase对单行数据操作怎么操作7.hbase对整个表扫描用什么,结果怎么保存8.sparkstreaming:如何对rdd进行分区,以及分区的依赖是什么?9.Hadoop的mr工作过程,以及shuffle过程,详细点说明10.hdfs的mapper和reducer的个数如何确定??reducer的个数依据什么11.有一个10G的文件要存入hdfs,描述一下存储过程。hdfs默认块大小128MB12.mr整个很慢,如何去优化,13.sparkstreaming:整个过程很慢,如何优化14.mr的默认分区reducer是多少,如何mapper有是个,那么reducer是多少Partition:由PartitionerClass中的逻辑确定,默认情况下使用的HashPartitioner中使用了hash值与reducerNum的余数,即由reducerNum决定,等于Reducer数目。如果自定义的PartitionerClass中有其他逻辑比如固定了,也可以与Reducer数目无关,但注意这种情况下,如果reducerNum小于分区数则会报错,如果大于则会产生无任务的reduecer但不会影响结果。但是如果reducerNum只有1个,则不会报错而是所有分区都交给唯一的reducer。15.sparkStreaming的工作模式:ETL过程。(Yarn)#东软##平安普惠##太平洋保险##校招##大数据开发工程师##面经#