1.有完整的数仓搭建及迭代开发经验(离线&实时)
2.理解HDFS分布式文件系统和MapReduce原理,能够写简单 MapReduce程序,可以独立完成
Hadoop的搭建、HDFS的高可用部署,掌握Hadoop的优化和小文件处理;
3.熟悉Yarn调度机制,使用Yarn作为调度平台的Spark任务,Flink任务问题排查
4.熟练 Hive 框架的搭建,掌握 Hql 语言对 Hive 表做数据分析Hive 调优以及 Hive 数据倾斜问题的解决积累了一定的心得;
5.熟练掌握Spark的运行原理及作业的划分和提交流程,熟练使用Java Spark常规操作算子进行数据处理
6.熟练掌握 SparkSql 并且掌握一定Sparksql的调优技巧,日常开发使用SparkSql作为离线业务的计算引擎 熟悉Spark集群的搭建;
7.熟练掌握Flume的组成架构,熟练使用Flume框架对数据进行采集和框架故障的处理、拦截器的使用;
8.熟练 Kafka 框架的搭建,熟悉kafka内部架构,使用kafka作为消息中间件 对接各种下游处理引擎
9.熟练使用Hbase 框架,Hive表映射Hbase表,rowkey的设计 以及phoenix的二级索引的使用
10.熟练使用sqoop工具完成RDBMS到HDFS/Hive数据的导入导出,以及相关注意事项;
11.熟练使用Canal从MySQL中实时监控数据变化并通过编写工具类从Canal中读取增量数据。
12.熟悉 MYSQL 常规增删改查操作,能够进行 Sql 常规调优;
13.能够熟练使用Linux常用的操作命令,了解shell、Python脚本编程;
14.熟练掌握 Java 面向对象的编程思想风格
15.熟练使用Flink流处理API、WindowAPI等,了解Flink容错机制、状态一致性原理。;
13. 熟悉OGG导出oracle 增量变化数据的部署流程以及参数优化
14. 熟悉使用Idea 开发,git代码管理工具
15. 熟练使用阿里云的 dataworks /EMR进行任务调度管理
大数据项目一: 叽呤本地生活app大数据离线分析系统
项目描述: 使用阿里云的EMR作为任务调度系统,以及相关服务器,搭建叽呤本地生活离线数仓,主要用于离线的报表展示,提供运营同学T+1的数据支撑。
一、数仓架构设计 主要是分为 数据采集层 ods层 dwd层 dwm层 dws层 app层
1.数据采集层 数据采集层主要是使用 datalink 作为业务数据库的binlog采集框架,将变更的binlog数据落入Kafka
2.落盘完毕的业务数据表,通过T+1 的方式,使用统一的Spark任务将 数据进行合并,这里的合并分为两种类型,一种是全量 最新状态的合并 合并每一张业务库表的所有数据最新状态的ods层表,一种是将每日的数据进行快照的形式放到Hive分区表中
3.ODS层: 操作数据层,保存一份完整的原始数据并设置分区
4.DWD层: 明细数据层,对ODS层进行清洗(去除空值、脏数据、超范围数据、部分列裁剪),维度退化,脱敏等。
5.Dim层:维度数据层,对Dwd层的维度数据进一步抽象获取,得到维度层 如用户维度表,渠道维度表等
6.DWM 层 中间汇总数据层,以Dwd层为基础 进行数据的预聚合操作
7.DWS层:汇总数据层,以DWM或者Dim层为基础按相关主题和时间进行汇总 商户主题 达人主题等等
8.APP 层:应用数据层,为各种统计报表提供数据。例如 达人的活跃量 达人探店产生的GMV 签约的商户量等指标
二、 数据建模:采用维度建模,以星型模型为基础,进行业务流程设计。
三、业务数据同步: 对不同的业务数据表采用不同的数据同步策略
四、主题设计:根据运营部门的要求确定相关主题,以及实际的业务需求定主题
五、表制作:根据业务和查询性能,对表进行扩宽和拆分。
六、流程调度 : EMR平台根据表的血缘关系,数据量大小,指标优先级等因素确定调度顺序。
七、数据质量: EMR平台 对表的数据量以及重要字段,脚本完成时间等指标进行监控。
八、数据监控: 对数仓执行的各个job进行监控,如果数据有执行报错,可以及时的通过钉钉或者短信通知相应的负责人员
技术要点:
1)使用Spark共享变量机制,实现自定义累加器 统计Spark读取Hive表数据到Mysql的 ;
2)SparkSql中当小表join大表的时候,可以使用广播变量,将小表的数据广播出去,增加join的效率
3)自定义UDF函数,例如 根据输入ip地址获取埋点数据无法确定的地区信息,实现离线统计需求;
4)使用开窗函数实现数据排序 TopN 以及某些指标累计的需求 获取;
5)因为公司Spark集群内存及CPU有一定的富余,在项目中优先使用mapPartition及 foreachPartition,为了避免数据倾斜filter与coalesce配合使用;
6)在SparkSql中使用 临时视图存储计算过程中的临时表数据
7)数据计算过程中,使用repartition 增加 Spark计算的并行度,使用coalesce 缩小Spark计算的并行度,防止产生过多的小文件。
8)Spark RDD的持久化 ,对常用的数据量小的RDD进行cache缓存,对常用且数据量大的RDD 进行checkPoint;
9)本项目中Spark集群采用统一内存管理,提高了堆内和堆外内存资源的利用率,将shuffle过程设置为SortShuffle能较大的提高shuffle过程的效率;
10)对Hive查询效率进行相应的优化。
大数据项目二:Hobby 社区 app 埋点数据采集以及 日常离线数据开发
开发环境:IntelliJ IDEA + JDK1.8 + Maven+gitlab+Jenkins+flume+
项目架构:Nginx + Tomcat + Flume + Kafka + Hadoop + Hive + MySQL + Spark +
Zookeeper
项目描述:1. 务需求实现对Hobby App相关日志的收集,对采集到的日志跟产品使用情况完成相应的数据分析,以优化产品的使用功能;并为产品业务功能新增提供相应的数据支持,完成相应的业务功能指标。2.根据业务库提供的业务数据,比如Hobby社区的星卡,星社,
责任描述:
1)【定制化日志模块】根据业务需求定制日志采集的信息内容和结构,设计不同日志的属性,对应的存储表格设计,如启动日志的信息存储,createdAtMs、appId、 appVersions、deviceId、
appVersion、osType、userId、appPlatforms等属性确立,设计启动日志、错误日志、页面日志、事件日志、曝光日志、等相关日志并发送信息到日