高级大数据工程师分析
一、岗位名称(对岗位的认识与理解)
1、高级大数据工程师
1.高级大数据工程师是从事对大量数据的采集、清洗、分析、治理、挖掘,并对这些数据加以利用、管理、维护和服务的相关技术工作。
2.熟悉Hadoop/Spark/Hive/HBase等大数据工具,主导过大型数据平台建设者优先。
3.精通SQL,熟悉常用的关系型数据库、非关系性数据库和数据仓库,具有SQL性能优化经验。
4.了解微服务开发理念、实现技术,熟悉常见设计模式,熟练掌握SSH开发框架,熟练进行Java、Python代码编写,熟悉多线程编程。
2、高级大数据工程师的职责
1.负责数据平台产品的整体评估.设计.架构及关键模块的开发,结合公司实际业务情况进行技术选型,并实现需求的开发实现-根据业务需求进行系统模块的划分。
2.负责数据流程梳理.数据仓库建设及行业标准化,大数据的数据管理与调度,数据采集与集成,数据挖掘与可视化,数据计算与存储,数据开发与服务等相关组件的开发。
3.负责架构优化及系统关键模块的设计开发,参与解决大数据基础架构项目中的关键架构问题和技术难题,负责项目中关键技术难点的攻关。
4.参与数据开发规范制定.并配合公司产品线业务拓展,可满足业务应用的大数据处理需求。
5.参与公司多个产品线的大数据平台标准化的设计和研发,并从事离线/实时数据仓库建设.设计.优化和落地。
6.能处理海量数据,同时对安全大数据的关键技术有理解和认识;通过良好的逻辑思维能力对数据有一定敏感能力,能够从海量数据中发现有价值的规律。
7.负责核心代码的编写,组织并指导各团队(自有及合作)开发及解决出现的系统和产品问题,并负责模块调优,接口设计及开发等。
3、工作内容
1.大数据开发主要有以下几个阶段:
数据采集、数据清洗、数据存储、数据分析统计、数据可视化。大数据工程师的工作内容就是用工具组件或者代码来实现上面几个方面的功能,除此之外,大数据工程师还负责大数据平台的搭建与维护。
大数据工程师每天的工作内容主要有数据采集、数据处理、数据迁移、数据可视化、维护大数据平台等。
2.数据采集:
业务系统的埋点代码时刻会产生一些分散的原始日志,可以用Flume监控接收这些分散的日志,实现分散日志的聚合,即采集。
3.数据清洗:
原始的日志,数据是千奇百怪的
一些字段可能会有异常取值,即脏数据。为了保证数据下游的"数据分析统计"能拿到比较高质量的数据,需要对这些记录进行过滤或者字段数据回填。
一些日志的字段信息可能是多余的,下游不需要使用到这些字段做分析,同时也为了节省存储开销,需要删除这些多余的字段信息。
一些日志的字段信息可能包含用户敏感信息,需要做脱敏处理。如用户姓名只保留姓,名字用'*'字符替换。
4.数据存储:
清洗后的数据可以落地入到数据仓库(Hive),供下游做离线分析。如果下游的"数据分析统计"对实时性要求比较高,则可以把日志记录入到kafka。
5.数据分析统计:
数据分析是数据流的下游,消费来自上游的数据。其实就是从日志记录里头统计出各种各样的报表数据,简单的报表统计可以用sql在kylin或者hive统计,复杂的报表就需要在代码层面用Spark、Storm做统计分析。一些公司好像会有个叫BI的岗位是专门做这一块的。
6.数据可视化:
用数据表格、数据图等直观的形式展示上游"数据分析统计"的数据。一般公司的某些决策会参考这些图表里头的数据
大数据处理技术涉及面非常广,主要有分布式计算、高并发处理、高可用处理、集群、实时性计算等,所以大数据工程师也要掌握这些技能。
二、岗位要求
那么想要成为合格的大数据工程师主要需要学习Java基础、JavaEE核心、Hadoop生态体系、Spark生态体系、机器学习等一系列知识。
大数据工程师需要掌握Java编程、linux基础操作命令、hadoop、HBase、Hive、ZooKeeper、phoenix、Avro与Protobuf、Cassandra、Kafka、Chukwa、Flume等知识。
需要掌握的主要技术如下:
(1) 文件存储:Hadoop HDFS、Tachyon、KFS
(2) 离线计算:Hadoop MapReduce、Spark
(3) 流式、实时计算:Storm、Spark Streaming、S4、Heron
(4) K-V、NOSQL数据库:HBase、Redis、MongoDB
(5) 资源管理:YARN、Mesos
(6) 日志收集:Flume、Scribe、Logstash、Kibana
(7) 消息系统:Kafka、StormMQ、ZeroMQ、RabbitMQ
(8) 查询分析:Hive、Impala、Pig、Presto、Phoenix、SparkSQL、Drill、Flink、Kylin、Druid
(9) 分布式协调服务:Zookeeper
(10) 集群管理与监控:Ambari、Ganglia、Nagios、Cloudera Manager
(11) 数据挖掘、机器学习:Mahout、Spark MLLib
(12) 数据同步:Sqoop
(13) 任务调度:Oozie
三、高级数据工程师相关认证
1.高级大数据专业技术等级证书
证书介绍:
CDA等级一:业务数据分析师。需要掌握概率论和统计理论基础,能够熟练运用Excel、SPSS、SAS等一门专业分析软件,有良好的商业理解能力,能够根据业务问题指标利用常用数据分析方法进行数据的处理与分析,并得出逻辑清晰的业务报告。
CDA等级二:建模分析师。在LevelⅠ的基础上更要求掌握多元统计、时间序列、数据挖掘等理论知识,掌握高级数据分析方法与数据挖掘算法,能够熟练运用SPSS、SAS、Matlab、R等至少一门专业分析软件,熟悉适用SQL访问企业数据库,结合业务,能从海量数据提取相关信息,从不同维度进行建模分析,形成逻辑严密能够体现整体数据挖掘流程化的数据分析报告。
CDA等级二:大数据分析师。在LevelⅠ的基础上要求掌握JAVA语言和linux操作系统知识,能够掌握运用Hadoop、Spark、Storm等至少一门专业大数据分析软件,从海量数据中提取相关信息,并能够结合R、python等软件,形成严密的数据分析报告。
CDA等级三:数据分析专家。需要掌握CDALevelⅡ的所有理论及技术要求,还应了解计算机技术,软件开发技术,大数据分析架构及企业战略分析方法,能带领团队完成不同主题数据的有效整合与管理。对行业、业务、技术有敏锐的洞察力和判断力,为企业发展提供全方面数据支持。
2.阿里云大数据认证
证书介绍:
是面向使用阿里云大数据产品的架构、开发、运维类人员的专业技术认证,主要涉及阿里云大数据类的几款核心产品,包括大数据计算服务MaxCompute、数据工场DataWorks、数据集成、Quick BI、机器学习PAI等。
3.华为HCIA-BIG Data认证
证书介绍:
面向ICT大数据从业者、大数据合作伙伴(渠道工程师、ISV工程师)一线原厂工程师、高校学生,旨在培养ICT行业大数据平台运维管理人才,帮助相关人才快速实现技能提升,获得职业发展和晋升。
4.Cloudera Apache Hadoop开发者
证书介绍:
CCDH认证演示了开发人员写入,维护和优化Apache Hadoop开发项目的技术知识,技能和能力。获得这个认证需要通过90分钟时限的50到55个活动问题的笔试。每个测试包括至少五个未评分的实验问题。
四、项目设计内容
1.Python可视化学生成绩管理系统实现
2.python学生成绩走势分析报告系统实现
3.运用SQL实现海量数据ETL加工处理
4.大数据平台建设与数据采集
五、项目技能理论知识学习与理解(理论知识库)
基于python的程序开发
1.python
1.1定义
(1)简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。
(2)易学:Python极其容易上手,因为Python有极其简单的说明文档。
(3)易读、易维护:风格清晰划一、强制缩进。
(4)用途广泛
(5)速度快:Python 的底层是用 C 语言写的,很多标准库和第三方库也都是用 C 写的,运行速度非常快。
(6)免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布
这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。
(7)高层语言:用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
(8)可移植性:由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能
够工作在不同平台上)。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基于linux开发的android平台。
(9)解释性:一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)
转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。运行程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行 程序。
在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成
计算机使用的机器语言并运行。这使得使用Python更加简单。也使得Python程序更加易于
移植。
(10)面向对象:Python既支持面向过程的编程也支持面向对象的编程。在“面向
过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python支持重载运算符和动态类型。相对于Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持。有两个标准库(functools, itertools)提供了Haskell和Standard ML中久经考验的函数式程序设计工具。
(11)可扩展性、可扩充性:如果需要一段关键代码运行得更快或者希望某些算法不
公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。
1.2 需求分析
(1)识别问题域
(2)识别问题域的实体
(3)识别实体属性
(4)识别实体行为
(5)识别实体与实体间的关系
1.3程序设计
对识别的问题域实体建立对象模型,并建立实体关系模型。对象模型可以把已经识别的问题域映射到能够被编程语言识别和描述的对象、对象功能和对象行为域。
1.4编码阶段
UML模型设计完成后,基本可以参照UML模型或设计文档进入编码阶段。编码阶段主要包括代码编写、编译及单元测试。
1.5测试阶段
程序完成后,需要经过有效测试,排除潜在的程序BUG后,才能对外发布。
1.6运行阶段
虽然经过严格测试,程序运行过程中,依然会出现各种各样的问题需要维护,同时新的需求也要求程序不断地升级版本。
2.Python数据分析与可视化
2.1数据挖掘与数据分析
数据分析是指根据分析目的,采用对比分析、分组分析、交叉分析和回归分析等分析方法,对收集来的数据进行处理与分析,提取有价值的信息,发挥数据的作用,得到一个特征统计量结果的过程。(图1所示)
数据挖掘则是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,通过应用聚类、分类、回归和关联规则等技术,挖掘潜在价值的过程。
图 1广义数据分析过程
2.2二者区别(图2所示)
图 2数据分析与数据挖掘的区别
2.3数据分析的流程:(图3所示)
图 3数据分析流程
需求分析:数据分析中的需求分析也是数据分析环节的第一步和最重要的步骤之一,决定了后续的分析的方向、方法。
数据获取:数据是数据分析工作的基础,是指根据需求分析的结果提取,收集数据。
数据预处理:数据预处理是指对数据进行数据合并,数据清洗,数据变换和数据标准化,数据变换后使得整体数据变为干净整齐,可以直接用于分析建模这一过程的总称。
分析与建模:分析与建模是指通过对比分析、分组分析、交叉分析、回归分析等分析方法和聚类、分类、关联规则、智能推荐等模型与算法发现数据中的有价值信息,并得出结论的过程。
模型评价与优化:模型评价是指对已经建立的一个或多个模型,根据其模型的类别,使用不同的指标评价其性能优劣的过程。
部署:部署是指将通过了正式应用数据分析结果与结论应用至实际生产系统的过程。
2.4数据可视化
数据可视化:是关于数据视觉表现形式的科学技术研究。其中,这种数据的视觉表现形式被定义为“一种以某种概要形式抽提出来的信息,包括相应信息单位的各种属性和变量”。
数据可视化主要是借助于图形化手段,清晰有效地传达与沟通信息。
数据:聚焦于解决数据的采集、清理、预处理、分析和挖掘
图形:聚焦于解决对光学图像进行接收、提取信息、加工变换、模式识别及存储显示
可视化:聚焦于解决将数据转换成图形,并进行交互处理
数据可视化方法:
(1)面积&尺寸可视化
(2)颜色可视化
(3)图形可视化
(4)概念可视化
注意:
做数据可视化时,几种方法经常是混合用的,尤其是做一些复杂图形和多维度数据的展示时。
做出的可视化图表一定要易于理解,在显性化的基础上越美观越好,切忌华而不实。
数据可视化要根据数据的特性,如时间和空间信息等,找到合适的可视化方式,将数据用直观地展现出来,以帮助人们理解数据,同时找出包含在海量数据中的规律或者信息。
2.5数据分析与可视化常用工具
(1)Microsoft Excel
(2)R语言
(3)Python语言
(4)JavaScript
(5)PHP
3.Linux系统
3.1 Linux定义
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
3.2 Shell简介
Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
3.3 Shell程序操作
其实shell 也是一支程序,它由输入设备读取命令,再将其转为计算机可以了解的机械码,然后执行它。各种操作系统都有它自己的 shell,以 DOS 为例,它的 shell 就是 command.com文件。如同 DOS 下有 NDOS,4DOS,DRDOS 等不同的命令解译程序可以取代标准的command.com ,UNIX 下除了 Bourne shell(/bin/sh) 外还有 C shell(/bin/csh)、Korn shell(/bin/ksh)、Bourne again shell(/bin/bash)、Tenex C shell(tcsh)等其它的 shell。UNIX/linux将 shell 独立于核心程序之外, 使得它就如同一般的应用程序, 可以在不影响操作系统本身的情况下进行修改、更新版本或是添加新的功能。
4.SQL
4.1 SQL定义
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
4.2 ETL工具介绍
ETL(Extract、Transform、Load)共包含了数据抽取、数据转换与数据装载3部分内容,ETL技术是在数据仓库技术发展中日趋成熟的。到现在,大家常说的ETL技术已经远远超越出了这E、T、L这三部分的范畴,不再是简单地将数据从一个地方抽出进行转换再装载到另外一个地方这种概念了。时下大家说得最多的名词是数据仓库、数据治理、数据集成、数据中心、数据整合平台、数据交换池、数据管理、数据中台、数据融通等等。
4.3 ETL目的
目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据构建数据仓库。常用在数据仓库,但其对象并不限于数据仓库。DEL:用来描述将数据从来源端经过抽取(extract)、交互转换(transform)、加载(load)至目的端(数据仓库)的过程。
4.4 ETL作用
ETL是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去(数据源-----数据清洗----数据仓库模型-----数据仓库中去) 并把数据转换为信息、知识,已经成了提高其核心竞争力的主要瓶颈。ETL主要的一个技术手段。
4.5 数据库编程
SQL编程技术可以有效的克服SQL语言实验复杂应用方面的不足,提高应用系统和数据库管理系统间的互操作性。
4.6嵌入式SQL
(1)嵌入式SQL是将SQL语句嵌入程序设计语言中,对于嵌入式SQL语言,数据库管理系统一般采用预编译方法处理(即由数据库管理系统的预处理程序对源程序进行扫描,识别出嵌入式SQL语句,把它们转换成主语言调用语句,以使主语言的编译程序将纯的主语言程序编译成目标码)。
(2)在嵌入式SQL中为了快速区分SQL语句和主语言语句,所有的SQL 语句都必须加前缀。
数据库缩写解释:DB(DateBase)数据库 , DBS(DateBase System)数据库系统 , DBMS(DateBase Manage System)数据库管理系统 , DDL(Data Definition Language)数据定义语言 , DML(Data Manipulation Language)数据操纵语言 , DBTGData Base Task Group)数据库任务组 , DCL (Data Control Language) 数据控制语言。
5.大数据平台建设与数据采集
5.1数据采集介绍
ETL基本上就是数据采集的代表,包括数据的提取(Extract)、转换(Transform)和加载(Load)。数据源是整个大数据平台的上游,数据采集是数据源与数仓之间的管道。在采集过程中针对业务场景对数据进行治理,完成数据清洗工作。
在大数据场景下,数据源复杂、多样,包括业务数据库、日志数据、图片、视频等多媒体数据等。数据采集形式也需要更加复杂,多样,包括定时、实时、增量、全量等。常见的数据采集工具也多种多样,可以满足多种业务需求。
一个典型的数据加载架构:(图4所示)
图 4典型数据加载结构
5.2常见的三个数据采集场景:
场景1:从支持FTP、SFTP、 HTTP等 协议的数据源获取数据
场景2:从业务数据库获取数据,数据采集录入后需支撑业务系统
场景3:数据源通过Kafka等消息队列,需要实时采集数据
5.3数据采集系统需求:
数据源管理与状态监控,定时、实时、全量、增量等多模式的数据采集及任务监控
元数据管理、数据补采及数据归档。
标签:分析,数据分析,工程师,Python,数据仓库,高级,可视化,SQL,数据 From: https://www.cnblogs.com/Hollahpain/p/17051363.html