0
点赞
收藏
分享

微信扫一扫

项目总结

泠之屋 2022-03-30 阅读 54


采集

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解决热点问题


举报

相关推荐

0 条评论