孙XX简历
个人信息
姓 名: 孙XX 工作经验: 3年 性 别: 男 手 机: 186 学 历: 本科 电子邮件: 1865 求职意向 意向:大数据开发工程师 状况:离职 地点:北京 薪资:面议
工作经历 2020/2—至今 北京XXX科技有限公司 大数据开发工程师
专业技能
1.熟练掌握 SparkSql、SparkStreaming、Spark Core,理解 Spark 工作机制及 Spark 任务的执行流程。
2.熟练掌握 Hadoop 分布式集群安装、部署、搭建和配置,能够熟悉应用 Hadoop 相关工具 进行相关应用开发。
3.熟悉 MapReduce,Hdfs 工作机制和运行原理。
4.熟练使用 Kafka 实现集群分布式高吞吐量通信机制,同时借助 Zookeeper 建立生产 者和消费者的关系,实现负载均衡和持久化。
5.熟悉 Linux 环境和常用命令以及简单 Shell 脚本编写。 6.熟悉 HBase 的系统架构,了解 RowKey 设计,了解 HBase 优化。 7.熟悉 Hive 工作原理,数据仓库基本建立和Hive 优化。
8.熟悉开源日志收集系统 Flume,能够在不同场景实现日志收集工作。 9.熟悉 Sqoop 的数据导入导出,实现 MySql 和 Hive 之间的数据传输。 10.熟悉 Oozie 任务调度工具和 Azkaban 工具实现定时调度任务。 11.熟练使用 Java 和 Scala 语言编程、熟练使用 MySql 语句。
项目经历
项目一 : XXX数仓项目
软件架构 : Nginx + Tomcat + Hadoop + Flume + Zookeeper + Hive + Mysql + Spark + Sqoop+Azkaban
开发环境 :Idea + Maven + Git
项目描述 : 公司发展迅速,针对数据整体统一规划管理,对数据进行统一整理、清洗、过滤、去重、存储,便于以后的日常维护工作和项目开展。
责任描述 :在本次项目中主要负责并参与数据仓库的流程设计,实现数仓的各层,分别是 ODS 层(原始数据层)、DWD 层(明细数据层)、DWS 层(服务数据层)和ADS层(数据应用层),
其中 DWS 层中包含事实层、维度层、宽表层,为了达到拿空间换时间的目的,由事实层中的事实表和维度层的维度表关联形成宽表层。 技术要点 :
1.Flum收集Web节点日志信息,根据每个Event的Body 里存的数据,可以对Log 进行判断,设定不同的Header值,然后再经过选择器,根据Header中的某个值来决定走哪个Channel,将清洗完的数据存入Hive中,作为原始数据。
2.使用Shell编写脚本,每日定时的通过脚本将数据加载到ODS层,不做数据处理。 3.在DWD层采用Snappy压缩,通过该压缩方式解压速率快,存储方式选用Parquet,后面的需要用Spark处理数据。
4.DWS层将数据进行统一标准、数据维度建模,抽取公共纬度,符合星型模型,将事实表和维度表进行关联,形成字段较多的宽表层,比如订单总数、订单流水等,为应用层服务。 5.对于一些每日变化量不大,但是业务需求有需要统计出来的表,制作拉链表,从而解决即不好用全量表也不用增量表的情况。
6.ADS层数据,是为了满足具体需求,完成报表统计,细分主体,比如优惠券相关统计、用户、订单相关数据统计。
7.在处理DWS层数据时,在使用RDD时,将重复的RDD进行持久化处理。当内存无法将完整的RDD进行缓存时,将RDD进行序列化,减小数据体积。
8.在DWS层计算地区商品前三销量占比时,使UDAF函数解决Sql不方便显示商品占比问题。 9.Hive中开启Fetch,减少某些情况下不用MapReduce,从而加快数据查询。
10.针对个别Key过多导致数据倾斜,将这些个别的Key单独拿出了,并在Key前面加入随机数字,从而减轻数据倾斜。
11.利用 Azkaban定时任务调度将每天产生的数据存入 Hive 数据仓库。
项目二 :XXX手机 App 日志采集系统
构架设计:Nginx+Tomcat+Hadoop+Flume+Zookeeper+Kafka+Spark+HBase+Hive 开发环境:IDEA+JDK1.8+Maven+Scala
项目描述:公司为了改进 App 性能和了解用户接受程度,建立了集中式海量日志实时处理系统,在手机App 端埋点,采集日常日志,统计历史日志,实时行为分析,用户轨迹跟踪等,用于满足运维需求,运用 SparkStreaming 从 Kafka 中获取数据进行实时和离线处理。 责任描述:在本项目中我主要参与需求分析讨论,架构设计,负责基于
Kafka+SparkStreaming 实时采集程序开发,项目实现并根据 Spark 项目的运行情况做综合分析和多方面的调节优化。 技术要点:
1.Nginx+Tomcat 配合使用做负载均衡和静态与动态资源分配,结合 Master 和 worker 工 作进程的分离设计,让 Nginx 具有热部署的功能,在 7*24 不断服务下具备修改配置文件,更换日志文件等功能。
2.项目利用 Flume 拓扑结构来采集服务器上的日志,进行高并发优化,避免单点故障。
3.通过 Kafka 高级消费者分区与线程数量一致达到最大吞吐量实现多线程并发消费。 4.为了保证数据的准确性,将 Kafka 维护的 Offset 写入 Zookeeper 中;Zookeeper 不仅存储了 Kafka 的内部数据,而且记录了消费者的成员列表,分区的消费进度,分区的所有者。
5.实时处理,运用 Spark Streaming 从 Zookeeper 中获取数据进行实时处理:将数据进行相关的过滤后利用 Spark Streaming 的 Checkpoint 机制对数据进行缓存,累加器和广播变量实现共享数据。
6.对 HBase 进行预分区,以及 RowKey 的设计,将不同的RowKey放在不同分区中,防止发生热点数据问题。
7.离线处理,将 Kafka 中消费的日志数据写入 HDFS 中,利用 Oozie 定时任务调度将每天产生的数据存入 Hive 数据仓库,对数据进行分区开启 Hive 严格模式,部分查询条件避免不合理的 HQL 执行。
8.使用广播变量与Map 类算子实现 Join 操作,进而减少Shuffle 的操作从而避免数据倾斜。
项目三 :XXX实时分析项目
软件构架:Nginx+Kafka+Spark+Hive+Redis+Canal+Elasticsearch+MySQL 开发环境 :Idea + Maven + Git
项目描述:使用Kafka进行日志的采集,传入的Spark-Streaming中进行数据分析,对每日活跃用户,订单的消费情况等做一个实时的统计。 责任描述:
1.负责当日日活数据的实时统计。 2.负责每日的订单从SQL导入的拉链表中。
3.根据宽表搭建ES的索引结构,把数仓中的明细数据从Hive中导入到ES中。 4.对用户的购买行为进行分析。 技术要点:
1.采用了分布式的消息订阅系统Kafka来对数据的传输及缓存,Kafka的高吞吐量保证了实时性。
2.Streaming 消费Kafka的数据并进行实时的计算并把结果保存到Elasticsearch中。 3. 采用高性能数据库Redis来缓存用户信息 。
4. Elasticsearch搭建实时的检索系统,使用第三方的IK分词器,提供用户的购买明细的搜索功能。
5. 减少Shuffle类算子的使用,从而减少网络IO和磁盘IO,从而提高Spark处理数据的速度。
6. 业务必须使用Shuffle,可以采用Map-side预聚合算子,将每个节点对于的Key先进行聚合操作,减少网络IO和磁盘IO。
7.利用ForeachPartitions,MapPartitions来代替Foreach和Map算子。