项目总结

采集
0、使用TaildirSource,可以实现断点续传
1、FileChannel的logDir中配置多个目录对应不同的硬盘,来增大吐吞量
2、写入HDFS时,使用hdfs.rollSize、hdfs.rollInterval解决产生小文件的问题(理解小文件的弊端)
3、原来使用Flume做ETL处理,非常影响性能,后来Flume只用来做数据采集,吞吐量提升30%(16线程CPU,32G内存,logDir4个,吞吐量60M)
4、Kafka JVM heap设置为4G,且垃圾收集器为G1

离线项目亮点:
1、清洗时发现 username \n导致换行
2、原来使用TextFile格式,使用ORC/Parquet之后,空间缩减为原有的10%/30%,查询性能提升3-5倍
3、使用Sqoop导出时发现数据存在不一致性,后面研究官网发现使用--staging-table解决
4、Sqoop与Mysql传输数据时发现mysql中的null导入到Hive时会成为"null"字符串,深入研究后发现Hive底层使用\N表示NULL,所以在sqoop命令时使用--null-string "\N"等参数

实时项目亮点:
0、使用Kafka Direct模式实现精确消费一次的事务性语义(offset和output操作使用同一个事务)
1、因为使用了checkpoint保存状态变量,所以使用getOrCreate方式使得错误时从Driver中恢复数据
2、使用mapWithState代替updateStateByKey来做状态管理。优势是性能高,可以设置状态的超时时间
3、我们为什么不使用ZK保存offset(说出自己的理解)
4、反压

工作中遇到的问题:
0、集群运行一段时间后,BI同事反馈查询半年数据越来越慢,这个时侯选择扩展服务器
1)添加服务器后,一定要rebalance(数据本地化计算)
2)使用分层存储,将半年的数据存入SSD,其它数据仍然在机械硬盘,性能提升5-10倍
1、实习生查询1年行为数据且多表连接生成临时表,没有写On条件,导致生成上百T的临时大表,集群报警
解决方案:对/user/hive/warehouse/tmp.db目录设置限额,最大可以存储3T,超出时SQl语句自动报错

其它:
0、HBase解决热点问题

你可能感兴趣的:(项目总结)