返回顶部
首页 > 资讯 > 数据库 >3000字长文教你大数据该怎么学!
  • 779
分享到

3000字长文教你大数据该怎么学!

3000字长文教你大数据该怎么学! 2018-05-09 15:05:44 779人浏览 才女
摘要

大概两年前写过同样标题的一篇文章,对于这个问题感兴趣的人不少,后台收到不少同学的提问,所以准备细致地解答一下这些问题,希望能解决掉大家90%的疑问。下次再看到相关的提问我会理直气壮地把这篇文章的链接甩你脸上。但是可能又会有同学有

3000字长文教你大数据该怎么学!

大概两年前写过同样标题的一篇文章,对于这个问题感兴趣的人不少,后台收到不少同学的提问,所以准备细致地解答一下这些问题,希望能解决掉大家90%的疑问。下次再看到相关的提问我会理直气壮地把这篇文章的链接甩你脸上。但是可能又会有同学有疑问了,那剩下10%的疑问怎么办?可以关注我的公众号【老蒙大数据】。

开发语言

言归正传,对于新手来说,老是会有类似这样的问题,“做大数据需要学Java吗?”“不会Java可以吗”“需要学到什么程度”...我的回答是“需要!”,“不可以”,“精通”。当然对于一个新手来说让你精通Java是不可能的,写Java没个十年半载真的不敢说精通,但是你得走在通往“精通”的这条路上,精通程度和你拿到的钱是成正比的。

其实我想表达的是,不要有侥幸心理,不要觉得大数据就是搭搭环境,用用组件,大数据是正儿八经需要写代码做开发的,而且对代码能力的要求是比较高的,为什么这么说,因为大数据生态圈有很多优秀的开源组件,如果你的 Java 是半吊子的水平那我可以很明确地说,你能看得懂的代码可能都不超过100行。不信的话可以找个开源项目看看。

Java 可以说是大数据开发的第一语言,至少当前还是的,虽然垃圾回收的问题经常被大家诟病,但是有庞大的生态圈在呢,一时半会都还会是 Java 的天下。“Java 要学到什么程度?”JavaSE 必须掌握,JVM多线程之类的都是基础,面试必问系列;JavaEE 必须熟悉,丢个JAVA WEB项目给你,不求你把底层了解地多么透彻,但是必须得会写,因为大数据开发实际工作中少不了写接口。

sql。如果说有一门语言可能会撼动 Java 一哥的位置的话,那绝对是 SQL,虽然 SQL 和 Java 都算不上是一个层面上的语言,但是它太重要了,太多人的 SQL 写得太渣了,太多人写 SQL 的时候不考虑底层优化了,要重视呀兄弟们,不是增删查改就完事了的。有小伙伴问过要怎么提升写 SQL 的能力?孰能生巧,多写,多了解底层原理,多思考优化的方案。

Scala 要学到什么程度?语法得懂,除了基本的,还有什么隐式转换,什么柯里化,什么闭包等等。学Scala 最大的目的就是写 spark,Spark 在大数据生态圈的存在感太强了,学习一门语言最好的方式就是实践,多写写 Spark 相关的项目,或者去看看 Spark 的源码

shell 也是必不可少的,大数据开发其实一般都会承担起大数据集群运维工作,说到运维,shell的重要性应该不用我多说了吧。

语言是程序员的兵器,兵器肯定是越锋利越好,种类越多越好,弓箭,刀,剑,盾,都有它们各自使用的场景。程序员不要有侥幸心理,不要得过且过,对于技术来说要知其然且知其所以然,如果你还达不到这个地步,那一定要走在这个方向上。

大数据技术组件

上面这张让人犯密集恐惧症的东西是什么?是2019年据不完全统计的大数据产品。

是的,人人都知道,大数据技术实在是太多了,变化也太快了,新技术层出不穷,作为一个新人在面对这些技术的时候,常有的一个状态就是懵,所以新人加我微信最常见的问题就是怎么学?这个要不要学?那个需要学到什么程度?等等。

哪些要学?

hadoop基础全家桶,hdfs,yarn,HBaseHiveZooKeeper等,再加个 spark 全家桶,以及流式计算全家桶kafkaflinkRedis

如果真的是认认真真吃透了上面的那些技能的话,那我能保证你已经基本上能解决90%的大数据问题,那剩下的10%怎么办?这个问题好像有点熟悉,当然还是继续学,但是你有了这解决90%问题的能力,剩下的10%的问题其实也不是什么大问题了。

怎么学?

从局部到整体。说得通俗一点就是要脚踏实地,不要老是飘在天上,因为在天上看到的是一整个生态,你当然会看到有很多很多东西,但是如果你不走近看的话你是不会知道,其实有很多东西都是类似的,经典的理论就那么几个,大家的系统很多都是照着这些理论去实现的,只是实现的方式会有些不一样,所以同类型的产品可能场景会稍有不同,但是架构是非常类似的,熟悉了之后你会发现,分布式系统万变不离其宗。

简单地说,从一个入手,比如存储,举个例子可以从HBase入手,因为它算是一个比较经典的分布式存储引擎,《Big Table》也是非常经典的一篇paper,HBase里面存在的 LSM-Tree,Bloom Filter,压缩,分区等等原理和概念在很多分布式存储中也是适用的。

再比如,计算,mr很经典,但是我还是建议直接从Spark入手,它的很多设计是基于mr又超过了mr的,而且 spark 生态系统非常的全能,能干的事情非常多,先学Spark Core,搞懂编程模型,了解大概原理,接着学SparkSQL,了解catalyst等,再接着就是SparkStreaming,以及后面的StructedStreaming,学到到这里,如果学得足够有深度,Flink也是可以轻松拿下的了,二者都大量借鉴了《DataFlow》这篇paper的理论,还是那句话,万变不离其宗。

还有很多的其他的例子,比如调度系统 airFlow,Azkaban 以及最近挺火的 DolphinScheduler,本质上的实现都是类似的,只是在各自都增加了不同的功能来满足用户的需求。

还有数据可视化等等很多的例子就部一一列举了。

说这么多目的只有一个,脚踏实地一步一步走,程序猿这个工种还是很依赖经验的,孰能生巧是没有错的。

要学到什么程度?

我再强调一遍大数据平台的开发人员不是简简单单会个搭建和使用就可以的了,这是最基础和浅显的内容,所以平时有些小伙伴贴一大堆报错信息给我,问我安装怎么报错了,怎么这个功能用不了了,这些问题基本上我都不会回答,除非我那天真的我心情非常好。因为如果你连这些在Google一搜一大把的问题都没法解决的话,你觉得你是不是应该重新思考一下自己的职业选择。

回到正题,要学到什么程度,取决于你现在什么水平,如果你刚入门,你要学会理解场景,搭建,使用;熟练了之后就要理解原理,懂得调优;再接下来,需要你主动去发现应用中的问题,以及找解决方案来解决问题,这个时候就不仅限于眼前的某一种技术了,需要有一个大局观,如何培养你的这种大局观呢,多混社区多和优秀的同行交流,多看源码多学习优秀的开源项目。

当然最好是能够成为优秀开源项目的 contributor 甚至 committer,这无论是在跳槽的面试中还是在晋升的述职中都是非常亮眼的加分项。

拥抱开源

学好语言的目的是为了写代码,写优秀的代码,那么如何能写出优秀的代码呢,人类最初学习的过程是从模仿开始的。

上面都提到了源码,为什么我要反复提这个问题呢,大数据的技术逐渐成熟,大数据的下半场绝对不会像前几年一样会搭个Hadoop,会写个Spark就能拿比较高的薪资,高薪大数据平台方向的程序员未来的趋势一定能够是捣鼓各种源码进行二次开发的。

都说一入开源深似海,那为什么还是有那么多人往坑里跳呢,坑里有好处呀。

首先开源的目的就是能给更多的人使用这个产品,同时能让开发者参与开发,让使用者提出需求,这对产品而言是有积极推进作用的,但是,开发者核心团队会筛选使用者的需求,因为开源的东西考虑的是大多数人通用的需求,不可能为个人定制,所以它是不能适应所有的场景,而业务是千变万化的,需求方是神通广大的,他们总是能够发掘一些刁钻的需求,总是会“想方设法”地为难你,如果你经常被难倒的话,N+1会在不远处向你招手。而如果你能够改动一下源码,让这个东西满足你的需求,不是很美好吗?

参与开源项目的建设是提升程序员个人水平的一个很好的方式,通过一些头部的开源项目,你可以看到业界优秀的程序员是怎么合理设计架构的,是怎么写出高质量代码的,是怎么实现刁钻需求的。人总是在模仿中不断成长的,你的水平怎么样很大一部分取决于你接触的人水平怎么样,这也是大厂经历可以给简历加分的原因,没有大厂经历怎么办呢,送你四个字,“入开源坑”。

大部分人工作说到底都是为了钱,不晋升哪来的钱。造轮子,二次开发都是晋升很好的资本,不然阿里在GitHub也不会有那么多KPI产物了。你可以看不惯,但是没办法,这就是竞争力,别人都没有做出来,而你做出来了。

那么如何入坑呢,先从简单的开始,最好是能结合公司现在在使用东西,或者潜在需要使用的东西来下手。国外apache的项目一般都是比较高质量的,也要参照一下github上的star个数和活跃度来看,另外没进入apache的一些项目,比如cloudera,facebook,linkin等这些公司开源的也有很多高质量的大数据项目。

国内的话,阿里也有不少应用非常广泛的Java项目,比如druid,fastJSON,datax,canal等等,可以先从这些下手,先读懂,然后可以看看 Github 上的 Issues,有没有和自己遇到的问题类似的,或者有没有问题是你可以解决的,提个PR,至此,你已经迈出了第一步,一只脚已经踩进坑里了。

总而言之,要多读优秀源码,模仿人家写代码的思想。源码阅读相关的内容可能会枯燥乏味,但是一点点坚持下来的话,各方面都会有蜕变的。

还没有看够?关注下公众号吧

您可能感兴趣的文档:

--结束END--

本文标题: 3000字长文教你大数据该怎么学!

本文链接: https://lsjlt.com/news/6070.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 3000字长文教你大数据该怎么学!
    大概两年前写过同样标题的一篇文章,对于这个问题感兴趣的人不少,后台收到不少同学的提问,所以准备细致地解答一下这些问题,希望能解决掉大家90%的疑问。下次再看到相关的提问我会理直气壮地把这篇文章的链接甩你脸上。但是可能又会有同学有...
    99+
    2018-05-09
    3000字长文教你大数据该怎么学!
  • Python学习教程:数据类型—字符串大总结
    Python学习教程:数据类型—字符串大总结 Python字符串的创建字符串是Python中最常见的数据类型,通常使用单引号或双引号来定义一个字符串,如下:str = "我是字符串"str1 = '我也是字符串&...
    99+
    2023-06-02
  • echarts数据量大该怎么优化
    当echarts的数据量变大时,可以采取以下几种优化方法:1. 数据筛选:根据数据量的大小,可以使用数据筛选的方法,只展示部分数据,...
    99+
    2023-09-29
    echarts
  • 大数据报表该怎么打印
    本篇文章给大家分享的是有关大数据报表该怎么打印,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。打印量这么大的报表,打印机可能会吃不消。可以算算打印 100 万行记录是什么情况。假...
    99+
    2023-06-03
  • MySQL 大数据in查询该怎么优化
    对于 MySQL 中的大数据 IN 查询,可以使用以下方法进行优化: 尽可能使用索引。如果使用 IN 操作符的字段有索引,MySQL 将会使用索引来加速查询。 尽量使用常量作为 IN 操作符中的参数,而不是使用子查询或者表达式。因为 M...
    99+
    2023-09-16
    mysql 大数据 数据库
  • 一文教你如何快速学会Go的struct数据类型
    目录什么是结构体创建结构体创建匿名结构体访问结构体字段结构体零值结构体指针匿名字段结构体嵌套字段升级结构体导出结构体比较什么是结构体 结构是表示字段集合的用户定义类型。它可以用于将数...
    99+
    2023-03-07
    Go struct数据类型 Go struct
  • 想学习ASP、大数据、Linux?这些教程将助你成功入门!
    随着信息技术的不断发展和应用,越来越多的人开始关注和学习ASP、大数据和Linux技术。这些技术在各个行业和领域都有着广泛的应用,而对于初学者来说,如何入门学习这些技术是一个重要的问题。本文将为大家介绍一些优秀的ASP、大数据和Linux...
    99+
    2023-11-07
    大数据 教程 linux
  • php怎么增加数据库字段长度
    随着互联网的迅速发展,网站应用越来越多,数据库文件也越来越大。在这种情况下,数据库设计便显得尤为重要。对于开发人员来说,常常需要对数据库的某些字段进行调整。本文介绍php增加数据库字段长度的方法。一、了解MySQLMySQL是一种常用的关系...
    99+
    2023-05-14
    php 数据库
  • oracle数据库怎么修改字段长度
    要修改Oracle数据库中的字段长度,可以使用ALTER TABLE语句。以下是详细步骤: 首先,连接到Oracle数据库并登录...
    99+
    2024-04-09
    oracle
  • win8怎么调整系统文字大小图文教程
      1、桌面空白处单击鼠标右键,选择“屏幕分辨率”;   2、点击“放大或缩小文本和其他项目”;   3、单击屏幕右侧“设置自定义文本大小&r...
    99+
    2022-06-04
    文字大小 图文 教程
  • CSS怎么实现div内放长英文字母或长数字自动换行
    这篇文章主要讲解了“CSS怎么实现div内放长英文字母或长数字自动换行”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS怎么实现div内放长英文字母或长数...
    99+
    2024-04-02
  • oracle怎么取字段最长的一行数据
    你可以使用以下SQL查询来取得字段最长的一行数据: SELECT * FROM table_name WHERE L...
    99+
    2024-04-09
    oracle
  • 如何快速学习 ASP 大数据 API?这份教程或许能帮到你!
    ASP 大数据 API 是一种帮助开发者处理和分析大数据的工具,它具有高效、易用等特点,是众多开发者的首选。但是,对于新手来说,学习 ASP 大数据 API 可能会有些困难。那么,怎样才能快速学习 ASP 大数据 API 呢?本文将介绍一份...
    99+
    2023-10-05
    大数据 api 教程
  • 大数据报表展现太慢了该怎么办
    大数据报表展现太慢了该怎么办,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。报表要展现 100 多万数据得用分页方式查询了,如果是自己写代码开发的报表就再实现一下分页查询就可以,...
    99+
    2023-06-03
  • 一文教你如何快速学会Go的切片和数组数据类型
    目录什么是数组声明数组数组是值类型数组的长度迭代数组多维数组切片创建切片修改切片切片长度和容量使用make创建切片切片追加切片作为函数参数多维切片什么是数组 数组是属于同一类型的元素...
    99+
    2023-03-07
    Go切片 数组 Go切片 Go 数组
  • 大数据字符串怎么转换
    这篇文章主要讲解了“大数据字符串怎么转换”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“大数据字符串怎么转换”吧!不可变字符串:----String.字符串本身不能发生改变,与指向字符串的引用...
    99+
    2023-06-02
  • 教你怎么用java一键自动生成数据库文档
    目录前言一、引入pom.xml依赖二、创建Java类三、使用 Maven 插件的方式四、总结前言 这是该工具的github地址:https://github.com/pingfang...
    99+
    2024-04-02
  • 教你怎么用Python操作MySql数据库
    目录一、关于Python操作数据库的概述二、一般操作流程三、安装mysql的操作库四、基本操作一、关于Python操作数据库的概述 Python所有的数据库接口程序都在一定程度上遵守...
    99+
    2024-04-02
  • Python编程算法学习笔记:数据类型应该怎么学习?
    Python是一种高级编程语言,它支持多种数据类型,包括数字、字符串、列表、元组、字典等。这些数据类型在Python编程中扮演着重要的角色,因此学习它们的使用方法是编程初学者的必修课程。本文将介绍Python中的常见数据类型及其应用。 ...
    99+
    2023-07-11
    编程算法 学习笔记 数据类型
  • 实时数据处理离不开对象,Java学习笔记教你怎么做!
    实时数据处理是现代信息技术中不可或缺的一部分,而对象的概念则是Java语言的核心。本篇文章将介绍如何在Java中利用对象进行实时数据处理,并配以演示代码。 一、对象的概念 在Java中,对象是一种具有特定属性和行为的实体。具体来说,对象包...
    99+
    2023-09-24
    学习笔记 对象 实时
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作