传智播客旗下高端IT在线教育平台|咨询热线:010-56288220

返回顶部 返回列表
180 2

[大数据专区] 古寒飞:《大数据修炼秘籍》

[复制链接]

5

主题

8

帖子

37

积分

新手上路

古寒飞

Rank: 1

积分
37
1802 古寒飞 发表于 2018-6-15 00:56:51
本帖最后由 18516187075 于 2018-6-15 01:02 编辑

前言
        前面发的《前端武功秘籍》把前端武学分为四个领域,当我写这篇大数据,我觉得这四个领域的划分不适用于大数据,接下来先从一个故事谈起。

        我的师弟阿凯最近刚毕业,他在上一周找了一份oracle的工作,由于没有任何工作经验,刚进入公司的他总是手足无措。他对我说,在学校学的东西工作中用不到,刚去公司的时候,领导给他了一份oracle的文档,他越看越蒙,很多组件以前都没接触过。这已经在公司上班四天了,还是看文档,没人给他安排任务让他有点慌。我问他,看文档看出了什么,他说似懂非懂的,我拿来他的文档按照上面的步骤一步一步的跟着做(前几章都是部署安装),他也在旁边看着,安装好几个组件之后,我让他按照文档来写SQL代码,他没一会就理顺了,而我有些不懂的地方,他还能举一反三给我讲一下(吐槽一下:作者看似工作了两年,但是从来没摸过oracle)

        一个小实验做好后,他在一旁感叹有个运维伺候着真好,他说在公司新人杂活特别多,练习文档上的东西的时间少,回到家里后家里电脑没办法练没有oracle。我一时语塞,家里没办法练,这句话道出了多少小白程序员的心声,不知不觉的就把进度走的很慢。



总纲
以上面的故事为引,我不再按照《前端武功秘籍》来给大数据划分领域,而是按照阶段来分享一下我自己的学习方式:
第一阶段:准备实验环境(搭建好全套的大数据集群)
第二阶段:学习单个的组件
第三阶段:学习组件串联
第四阶段:理顺业务运行流程(比如我刚学完的离线点击流日志分析)



第一阶段:
        很多功力深厚的少侠不要笑话我,怎么会把准备实验环境单独列为一个阶段呢,坦白说这个对于小白来说真的是一个门槛,我们来细数一下离线阶段要用到的组件:hadoop、hive、flume、sqoop、zookeeper、azkaban、hbase这些仅是离线阶段就要用到的。因为我是运维出身,所以当初拿到这套课程的时候,一开始对大数据是充满敬畏的我,反倒是先从我熟悉的linux服务部署开始学起了,然后阴差阳错的把所有服务都给部署了一遍,里面涉及到HA的部分,也试着去理解它的架构。不知不觉间一个月过去了,某一天在跟我的同事谈论大数据的时候,忽然发现,不知不觉的我也能对大数据说出来个一二三了,或许很多组件的工作原理还不懂,但是整体架构是干什么的,谁要跟谁配合,谁要跟谁对接,已经了然于胸了。此时的我还没有写过一行mapreduce的代码,也没有写过一行HQL语句。



第二阶段:
        运维工程师是全世界最懒的工程师,我们善于写shell脚本来让自己从重复的工作中解脱出来,所以我把整个hadoop生态圈的服务部署写成了一键自动化安装脚本(脚本地址:码云:tay3223用户:script2项目,论坛会屏蔽链接请大家见谅),然后开始了我的单个组件学习。坦白说,hdfs和mapreduce的java客户端的练习,浪费了我整整一个月的时间,我对java那啰嗦的语法充满的抵触心理。不过博学谷的课程安排是很合理的,所有的学习都是先单点后串联,把整套庞杂的技术单个拎出来让人学习,没有那么让人恐惧。我没有什么比较好的办法去加速学习进度,只能是老师视频里敲一行,我暂停视频然后跟着敲一行,然后实验环境和老师同步,连出的错误也是一模一样,这样很多问题都在心底里过了一遍。当第一遍跟着老师敲完之后,我在第二遍练习的时候,是直接粘贴老师代码的,然后重在理解运行原理,把老师的样板代码粘贴过来,然后每一行都写好注释,最后上传到git上。从此以后,这便就是我的项目和代码了。



第三阶段:
        组件串联,是在用flume去采集数据然后用mapreduce来预处理的时候,我才在脑海中诞生的一个概念。这一步已经无限接近于第四阶段了(理顺业务运行流程),就像武功修炼一样,除了一遍又一遍的练习,也没有其它办法了。大神们的编程技巧神乎其技,其实除去“编程思想”的天马行空之外,只有一个原因:唯手熟尔!组件串联的练习不要贪多,首先学习两两串联,最后再全部串联,例如:用flume采集数据到HDFS上,然后用mapreduce去预处理数据(这是一个串联),又或者用mapreduce预处理完数据去搞到hbase上(这又是一个串联),最后把两个串联再进行大串联,这就是我的学习方式,可能有些笨拙,但目前还找到其它比较好的学习方法,希望可以和其它少侠多多交流更先进的修炼方式。



第四阶段:
        理顺业务运行流程,这一步其实就是实战项目了,基本上应该是实际生产环境中使用的手段,这一步不重在技术的练习,而是对技术的应用上。前三步我们都把经历放在制造“工具”上面,这一步我们就要开始指挥“工具”去干农活了。我个人觉得,对技术在业务层面应用的理解,将会是我们未来找工作时的加分项,所以这一步重在“编程思想”的培养上。我不知道该不该用“编程思想”这个词来形容,但大致意思是,我们使用技术的方式和方法应该是一种思想,它并不拘泥或依赖某一项具体的技术,就像面向对象的编程思想一样,java是面向对象语言,使用面向对象思想很自然,但是javasecipt不是面向对象的语言,却可以用在语法中来模拟面向对象的方式来编写代码。所以,这一阶段看似我们要“理顺业务运行流程”但本质上,我们要能形成自己的感悟,就像武功修炼一样,我们徒有降龙十八掌的招式,但是没有内力(此处内力代指“编程思想”)的催动和加持,威力一样是打不出来的。所以这一阶段,重在悟,悟要比理解的层面更高一级,得琢磨。



最后总结:
        因为我目前课程仅仅是刚学完离线阶段,所以有很多见识和看法会比较浅薄,功力深厚的少侠如果看到文章哪里出现了谬论,请一定要指正,在下此时先行谢过了。不知道随着后续的学习,我会不会拐回来推翻我前面建立起来的观点,但目前来说,对大数据学习的理解就是这些了,总结一下:

        第一阶段:把所有服务安装一遍吧,如果学习linux有困难,那就把一次成功的配置文件备份好,便于后期重现当前环境,全部服务安装好一遍,基本上大数据学好了四分之一了。

        第二阶段:学习单个组件,一定要熟悉组件有什么特性,哪怕是后面可能用不到的地方,也要去了解,知道有这么一回事。

        第三阶段:把组件串联起来,中间有任何疑点及时问老师,其实我觉得这个阶段反而问老师的频次胡高一些,前两阶段就是照着视频“抄写”,除了枯燥,反而简单一些。

        第四阶段:一定要琢磨,不能像前三阶段一样,抄完理解就完事了,要在理解的基础之上去领悟,要去寻找当前技术的更多应用场景。这是长期的事,不能因为学习其它的东西而丢下,最好能应用到自己的生活中。比如我英语不好,然后我下载了apache hadoop官网上的所有英文文档,然后再本地用hadoop来分析排序,找到出现频次最高的100个单词,然后一周只背这100个单词,一个月后至少我看hadoop部分的英文文档,简直不敢相信,常用词汇满打满算就那么几百个,猜意思都能猜出来这段话是什么意思,你们说用自己的技术来帮助自己进步,这种行为是不是很酷。

回复

5

主题

8

帖子

37

积分

新手上路

古寒飞

Rank: 1

积分
37
 楼主| 古寒飞 发表于 2018-6-15 01:00:27
作者是:第十五期的神秘蛋小挞
回复

0

主题

3

帖子

42

积分

新手上路

阿枫

Rank: 1

积分
42
阿枫 发表于 2018-7-23 15:13:15
你厉害,少侠每天用多久时间学习大数据?
回复

您需要登录后才可以回帖 登录 | 立即注册