最近发现有些同学并不太了解大数据开发工程师这个职位,自己转大数据开发也已经三年了,所以想简单介绍一下什么是大数据开发工程师,当前互联网公司的数据开发到底是什么样子的?和一般的java或者php工程师在工作上有什么区别?
声明:本文仅代表个人观点,有不同意见欢迎提出。另外本文对大数据开发工程师没什么参考价值~仅是我各人对这个职位做一个介绍。

1 先说我认为什么不是大数据开发

仅使用数据库(关系型mysql,sqlserver,oracle等 非关系型 mongo redis等),尽管数据量达到千万级别,亿级别不是大数据开发。
    从业务系统的数据库中查询数据然后产出报表不是大数据开。
    端上(页面,h5,手机native)埋点上报数据记录到数据库中不是大数据开发。

2 我认为什么是大数据开发

大数据开发需要的技能

到智联上搜了一下大数据开发工程师 这个职位,随便点了几个职位,截图如下:


所以说首先,现在互联网公司所指的大数据开发用到的工具是:hadoop,hive,hbase,spark,kafka等.

大数据开发做的事情

精简到一个词语就是:统计
精简到两类指标就是:PV和UV
精简到一句话就是:统计各种指标的PV和UV.

PC互联网时代,各门户网站(比如:新浪,网易,搜狐)关注的是各自网站今天被打开了几次(pv),今天有多少人(uv)访问了网站.更复杂一点的比如:
页面上某个按钮或者某个连接有多少人点击了几次.
某个页面上的热力图(点击地方越多,图上颜色越重)

移动互联网时代,手机应用被用户打开的次数和人数也是大家关注的重点,但是除此之外还多出了许多其他非常重要的数据,由于手机屏幕的限制,信息流成为了移动时代的主流.
各大门户网站非常关注自己的新闻客户端中: 在信息流中曝光了多少篇文章, 其中有多少篇文章被用户点击了.每篇文章阅读了长时间,因为用户点击的文章越多,使用客户端的时间越长,各公司的广告收入才越高,所以各公司想方设法推荐用户喜欢的内容~

如何做这些事情

因为网站的浏览行为,手机客户端中文章的曝光或者点击这些数据非常大,基本以亿为单位起,
所以传统的把统计信息放到数据库中的方式已经不能完成这项统计工作.(例如,wordpress博客中,用户每阅读一篇文章,mysql中就会更新这篇文章的阅读次数+1)

所以大数据是通过日志来统计这些指标.
比如:后台服务的日志,例如:apache,tomcat,weblogic,nginx日志
例如下图,我的个人网站apache服务的access日志
日志的url字段中 以 /年份(红色部分)开头行数就是这个网站文章页被访问的次数
/category(蓝色部分)开头的行数就是这个网站分类目录被访问的次数.

当然我的这份日志中是统计不了用户数的,因为用户数的统计需要在每条日志上记录当前用户的唯一标识,然后再做个去重,去重后的数量就是用户数.但是这里没有上报用户的唯一标识.

那如何统计人数呢, 一般互联网公司会自己在页面或者客户端上生成一个用户的唯一标识,然后主动上报到自己的日志服务器上.
流程如下:

  1. 页面,客户端埋点(按照指定的字段格式,在特定的时间把数据发送出去)
  2. 日志接收服务器,通常是nginx集群专门用来接收日志.

例如我的个人网站中,我用的百度统计来统计网站的用户数,用户只要打开我的网站就会有如下信息发送到百度的服务器上:

其中:hm.gif 是一个大小为0的图片,只是为了把这条url记录打印到nginx服务的日志中.
我猜测BAIDUID这个字段是百度用来帮我统计人数的.

上面主要说的是日志的产生(端上产生,服务端接收), 大数据开发工程师的工作就是从接收到的日志中计算出来需要的指标,并且展示在页面上,方便分析师查看
(因为接收到的日志格式不整齐还有一些垃圾数据,所以需要对日志进行清洗(etl操作),再处理成各种数据仓库表,方便后续统计.)
例如:一行access日志:
218.69.234.153 - - [23/Sep/2018:21:08:00 +0800] "GET /2018/09/python-scrapy-%e7%99%bb%e5%bd%95%e7%9f%a5%e4%b9%8e%e8%bf%87%e7%a8%8b/ HTTP/1.1" 200 12466
处理之后:为四列(ip, 时间, http状态, url),更方便统计.
218.69.234.153 2018-09-23 21:08:00 200 /2018/09/python-scrapy-%e7%99%bb%e5%bd%95%e7%9f%a5%e4%b9%8e%e8%bf%87%e7%a8%8b/
然后 按照某种格式计算的行数就是次数.
按照某种规则,取出某个字段,用这个字段排重,就是UV(如果这个字段是用户唯一标识,就是人数)
主要难点在于:

  • 日志量太大(一般大点的互联网公司,一个业务线每天的日志都有几个t,再大些的每天几十t,几百t也不奇怪),需要掌握大数据相关技术例如前问题到的hadoop,hive等
  • 数据的及时性,从离线计算来说,一般每天零点,前一天的日志都接收完毕,开始计算前一天的数据,几点能计算完毕? 要看各个公司各自的要求.
  • 数据的准确性.(这是重中之重,大数据开发的工作就是统计,统计的数据如果不准....)
  • 如果是实时计算,需要掌握实时相关技术.例如:每5分钟网站的在线人数.
  • 监控监控监控:监控任务是否失败,数据是否产出,产出的数据是否异常.
  • 容灾容灾容灾:如果任务失败如何补救.比如实时任务,由于某种原因13:00到14:00的数据没有,如何把数据补回来.

大数据开发和一般业务开发的对比

在转做大数据开发之前,一直在用java作业务系统: 例如 hr系统(考勤,薪资等).收费系统.
谈谈我个人对业务系统开发和大数据开发的理解:

业务系统:
一句话:对数据库的各种增删改查操作.
重点难点在于:

  • 对复杂业务的理解上(比如计算工资:基本工资,五险一金,全勤奖,高温补贴,报销,奖金,加班费.....等等都需要计算).
  • 线上服务的稳定,比如facebook,淘宝等网站高并发的压力下维持网站正常运行.

大数据开发
一句话:对字符串的各种算数.
重难点在于:

  • 数据的及时性.例如实时数据中,想知道 12:00~12:10这10分钟的用户数,如果这个数据在晚上20点才计算完成,那就没什么意义了.再比如,大家应该都有体验过:再手机上刷新闻的时候,你点了某一篇文章,再继续刷新闻,后面很快会出来不少和前面点击的那篇文章类似的文章.这就是根据你的点击给你及时推荐你有更大可能点的东西.
  • 数据的准确性.这个重要性不言而喻.
  • 数据的稳定性和容灾.

仅仅分享个人的一些小看法,虽不全面也不系统,但是能够让未接触过的同学了解一些大数据开发吧~欢迎留言.

转载于:https://www.cnblogs.com/wangtcc/p/jie-de-qi-dao-di-shen-me-cai-shi-da-shu-ju-kai-fa-.html

接地气,到底什么才是大数据开发工程师?相关推荐

  1. 大数据开发工程师到底是干嘛的?日常做什么呢?

    最近后台收到很多私信,内容大都差不多,总结下来就是: 目前在学习大数据专业,想提前了解一下大数据开发工程师的工作职责是怎么的?需要提前准备些什么?大数据分了哪些岗位? 笔者已从事数据开发工作三年有余, ...

  2. 大数据开发工程师前景如何?

    1.大数据开发前景如何,企业对大数据开发的需求到底有多大. 大数据开发,是一个刚刚开始发展的行业,而且技术经常更新,所以大数据的发展会长期发展,但要求程序员要跟着行业发展不断学习进步.一个新技术的出现 ...

  3. 一篇文章带你了解2018 大数据开发工程师必备那些技能

    你好,成为一名大数据开发工程师,你需要具备的技能比较多,具体的,可以参看下面的这些点. Java 大家都知道Java的方向有JavaSE.JavaEE.JavaME,学习大数据要学习那个方向呢?只需要 ...

  4. Java开发工程师与大数据开发工程师有何区别?

    乐字节教育是集线上教育与线下培训于一体的全栈式教育机构,致力于研发高端IT技术,培养高端IT人才,让更多的人接受更好的教育是乐字节的教学理念. 最近发现有些同学并不太了解大数据开发工程师这个职位,所以 ...

  5. 大数据开发工程师必备那些技能

    成为一名大数据开发工程师,你需要具备以下这些技能 Java 大家都知道Java的方向有JavaSE.JavaEE.JavaME,学习大数据要学习那个方向呢?只需要学习Java的标准版JavaSE就可以 ...

  6. 大数据前景如何?大数据开发工程师是什么?

    最近发现有些同学并不太了解大数据开发工程师这个职位,所以千锋想简单介绍一下什么是大数据开发工程师,当前互联网公司的数据开发到底是什么样子的?和一般的Java或者PHP工程师在工作上有什么区别? 首先入 ...

  7. 如何成为阿里巴巴大数据开发工程师?你要学习很多东西

    大数据大数据,个个都在喊 但究竟什么是大数据开发,如何成为一个大数据开发工程师?加米谷大数据请添加链接描述的这篇文章告诉你如何成为阿里巴巴也需要的大数据工程师. 大数据通用处理平台 1.Spark 2 ...

  8. python工程师干什么的_大数据开发工程师薪资待遇及招聘要求?

     目录: 大数据开发是干什么的? 大数据开发需要掌握哪些技术?学习路线如何? 大数据开发需要掌握数学知识吗? 大数据开发就业前景如何? 大数据开发工程师薪资待遇及招聘要求? 大数据开发是干什么的? 大 ...

  9. 成为一个大数据开发工程师的学习步骤--文字版

    本博客搬运自我知乎所出视频成为一个大数据开发工程师的学习步骤? - 知乎大数据的学习是有条件限制的,首先你需要是一名普通的工程师,如果你是Java工程师的话更好,但如果你是小-https://www. ...

最新文章

  1. jspstudy启动mysql失败_MySql启动数据库设置初始密码
  2. Spring Workflow
  3. Linux——快照与克隆
  4. ReverseMe-120(base64解码表) 逆向寒假生涯(21/100)
  5. c语言线程锁的原理开锁原理图,C++多线程之可重入锁
  6. webpack来打包你的vue项目,如发现你的vendor.js过大
  7. 单词接龙(洛谷-P1019)
  8. java精确度_java的数值精度问题 | 学步园
  9. NETSTAT 指令详解
  10. 【Machine Learning 三】线性代数回顾:矩阵,矩阵运算,向量,转置
  11. Tyvj P1015 公路骑 (DP)
  12. crout分解计算例题_专题:化学方程式计算
  13. spark第十篇:Spark与Kafka整合
  14. markdown 常用语法格式
  15. Spring Security OAuth 个性化token 1
  16. 浅析近场通信技术特点及未来可能的应用与发展
  17. 基于LabWindows/CVI学生管理系统的实现
  18. 重磅!程序员工资不会上涨的几个现象
  19. 糗百文化:糗事百科的运营哲学
  20. MapReduce中Shuffle机制的学习案例——房屋租赁信息

热门文章

  1. 安卓街机模拟器 MAME4droid 源码,只需要自己加入rom 可以发布到安卓市场了。
  2. 卸载Navicat!操作所有的数据库靠它就够了
  3. 周易六十四卦——雷山小过卦
  4. 西电研一人工智能复习随笔
  5. Android D/dalvikvm : GC_FOR_ALLOC freed
  6. 读书百客:《长恨歌》赏析
  7. 软考:中级软件设计师总结
  8. Ubuntu1804安装CUDA与CUDNN
  9. springCloud 之 Hystrix 熔断器
  10. 全栈嵌入式工程师技能图