采集
0、使用TaildirSource,能够实现断点续传
一、FileChannel的logDir中配置多个目录对应不一样的硬盘,来增大吐吞量
二、写入HDFS时,使用hdfs.rollSize、hdfs.rollInterval解决产生小文件的问题(理解小文件的弊端)
三、原来使用Flume作ETL处理,很是影响性能,后来Flume只用来作数据采集,吞吐量提高30%(16线程CPU,32G内存,logDir4个,吞吐量60M)
四、Kafka JVM heap设置为4G,且垃圾收集器为G1mysql
离线项目亮点:
一、清洗时发现 username \n致使换行
二、原来使用TextFile格式,使用ORC/Parquet以后,空间缩减为原有的10%/30%,查询性能提高3-5倍
三、使用Sqoop导出时发现数据存在不一致性,后面研究官网发现使用--staging-table解决
四、Sqoop与Mysql传输数据时发现mysql中的null导入到Hive时会成为"null"字符串,深刻研究后发现Hive底层使用\N表示NULL,因此在sqoop命令时使用--null-string "\N"等参数sql
实时项目亮点:
0、使用Kafka Direct模式实现精确消费一次的事务性语义(offset和output操做使用同一个事务)
一、由于使用了checkpoint保存状态变量,因此使用getOrCreate方式使得错误时从Driver中恢复数据
二、使用mapWithState代替updateStateByKey来作状态管理。优点是性能高,能够设置状态的超时时间
三、咱们为何不使用ZK保存offset(说出本身的理解)
四、反压服务器
工做中遇到的问题:
0、集群运行一段时间后,BI同事反馈查询半年数据愈来愈慢,这个时侯选择扩展服务器
1)添加服务器后,必定要rebalance(数据本地化计算)
2)使用分层存储,将半年的数据存入SSD,其它数据仍然在机械硬盘,性能提高5-10倍
一、实习生查询1年行为数据且多表链接生成临时表,没有写On条件,致使生成上百T的临时大表,集群报警
解决方案:对/user/hive/warehouse/tmp.db目录设置限额,最大能够存储3T,超出时SQl语句自动报错ide
其它:
0、HBase解决热点问题oop