大数据高频面试题-项目中常见问题

项目中遇到过哪些问题

  • 8.1 Hadoop宕机 
  • 8.2 Ganglia监控 
  • 8.3 Flume小文件 
  • 8.4 Kafka挂掉 
  • 8.5 Kafka消息数据积压,Kafka消费能力不足怎么处理? 
  • 8.6 Kafka数据重复 
  • 8.7 Mysql高可用 
  • 8.8 自定义UDF和UDTF解析和调试复杂字段 
  • 8.9 Sqoop数据导出Parquet 
  • 8.10 Sqoop数据导出控制 
  • 8.11 Sqoop数据导出一致性问题 
  • 8.12 SparkStreaming优雅关闭 
  • 8.13 Spark OOM、数据倾斜解决 

8.1 Hadoop宕机

(1)如果MR造成系统宕机。此时要控制Yarn同时运行的任务数,和每个任务申请的最大内存。调整参数:yarn.scheduler.maximum-allocation-mb单个任务可申请的最多物理内存量,默认是8192MB

(2)如果写入文件过量造成NameNode宕机。那么调高Kafka的存储大小,控制从Kafka到HDFS的写入速度。高峰期的时候用Kafka进行缓存,高峰期过去数据同步会自动跟上。

 

8.2 Ganglia监控

Ganglia监控Flume发现发现尝试提交的次数大于最终成功的次数

(1)增加Flume内存

(2)增加Flume台数

 

8.3 Flume小文件

Flume上传文件到HDFS时参数大量小文件?

调整hdfs.rollInterval、hdfs.rollSize、hdfs.rollCount这三个参数的值。

 

8.4 Kafka挂掉

(1)Flume记录

(2)日志有记录

(3)短期没事

 

8.5 Kafka消息数据积压,Kafka消费能力不足怎么处理? 

(1)如果是Kafka消费能力不足,则可以考虑增加Topic的分区数,并且同时提升消费组的消费者数量,消费者数=分区数。(两者缺一不可)

(2)如果是下游的数据处理不及时:提高每批次拉取的数量。批次拉取数据过少(拉取数据/处理时间<生产速度),使处理的数据小于生产的数据,也会造成数据积压。

 

8.6 Kafka数据重复

下一消费者中去重。(redis、SparkStreaming)

 

8.7 Mysql高可用

Hive的metadata存储在MySql中(配置MySql的高可用(主从复制和读写分离和故障转移))

 

8.8 自定义UDF和UDTF解析和调试复杂字段

自定义UDF(extends UDF 实现evaluate方法) 解析公共字段

自定义UDTF(extends Genertic UDTF->实现三个方法init(指定返回值的名称和类型)、process(处理字段一进多出)、close方法) -> 更加灵活以及方便定义bug

 

8.9 Sqoop数据导出Parquet

Ads层数据用Sqoop往MySql中导入数据的时候,如果用了orc(Parquet)不能导入,需转化成text格式

 

8.10 Sqoop数据导出控制

Sqoop中导入导出Null存储一致性问题:    

Hive中的Null在底层是以“\N”来存储,而MySQL中的Null在底层就是Null,为了保证数据两端的一致性。在导出数据时采用--input-null-string和--input-null-non-string两个参数。导入数据时采用--null-string和--null-non-string。

 

8.11 Sqoop数据导出一致性问题

Sqoop导出数据到MySql时,使用4个map怎么保证数据的一致性

因为在导出数据的过程中map任务可能会失败,可以使用staging-table  –clear-staging

sqoop export --connect jdbc:mysql://192.168.137.10:3306/user_behavior --username root --password 123456 --table app_cource_study_report --columns watch_video_cnt,complete_video_cnt,dt --fields-terminated-by "\t" --export-dir "/user/hive/warehouse/tmp.db/app_cource_study_analysis_${day}" --staging-table app_cource_study_report_tmp --clear-staging-table --input-null-string '\N'

任务执行成功首先在tmp临时表中,然后将tmp表中的数据复制到目标表中(这个时候可以使用事务,保证事务的一致性)

 

8.12 SparkStreaming优雅关闭

如何优雅的关闭SparkStreaming任务(将写好的代码打包,Spark-Submit)

Kill -9 xxx ?

开启另外一个线程每5秒监听HDFS上一个文件是否存在。如果检测到存在,调用ssc.stop()方法关闭SparkStreaming任务(当你要关闭任务时,可以创建你自定义监控的文件目录)

 

8.13 Spark OOM、数据倾斜解决

 

大数据高频面试题-项目中常见问题_第1张图片


—— 温故而知新,可以为师矣。

 

 

你可能感兴趣的:(大数据知识点梳理)