您的位置  > 互联网

java工程师深耕学习大数据的理解和做法

我先提一下学习方法的问题。 现在新技术这么多,应该如何学习呢? 如果你实在着急,可以花5分钟了解每项新技术出来时的作用,然后再花30分钟学习。 阅读文档了解应用场景,最后花了2个小时做了一个demo。 这就够了; 如果这项技术好的话,它总会在未来的某个时刻以各种方式一次又一次地出现在你的面前。 这时候再深入学习还为时不晚; 如果技术不适合而消失,用不了多少时间,沉没成本也很小。 我一直记得这个方法,所以我以前就是这样学习大数据和机器学习的,现在果然需要用到很多技术。 有时候,抛弃完美主义,在学习的路上做减法,努力成为一个T型人。 有才华的人会让你的思维更加清晰。

现在我开始说废话了。 我从一名Java工程师开始到现在对学习大数据的理解和实践。 因为我曾经是一名生物专业的学生,​​而且很巧合的是,我也学过进化生物学,所以我喜欢先看一切事物的发展。 因果。

在大数据概念出现之前,规模稍大的企业希望开发用于决策目的的技术和应用程序,通常使用商业智能BI框架。 传统的BI通常使用数据技术来处理来自不同来源的数据,例如企业的ERP、CRM、SCM等业务系统,使用数据分析和数据挖掘,然后使用商业报告工具,或者定制报告进行数据可视化。

随着企业业务的发展,传统的数据库软件工具逐渐无法获取、存储、管理和分析海量数据,大数据生态系统应运而生。 在谷歌三驾马车之前,各大公司的解决方案都是为了追求黑硬超级计算机而做垂直扩展,但即使有了摩尔定律,也逐渐开始无法支撑不断增长的业务需求。 2003年到2007年,发表了三篇论文,分别是分布式文件系统GFS、大数据分布式计算框架和NoSQL数据库,终于让互联网行业瑟瑟发抖。 原来还可以这么玩。 一台更好、更贵、更大的服务器并不总是能够处理分组在一起的多台普通机器(让人想起这也说明了中国人需要团结。一个中国老明星程序员再牛,也不能普通天柱程序员在五洋五洋粘在一起)。 不过他们只发表论文,不开源(因为一开始,这三个驱动 主要是为了解决 内部网络爬取和索引建设的需求),真是蛋疼,所以大神 Doug卡丁(同时也是雅虎创始人)当时实现了相应的三个阉割版本。 ,HDFS对应GFS,相应的,HBase也对应,所以是协同工作的。 虽然这个山寨版本与一开始内部使用的正统版本相差甚远,但越来越多的人受不了,导致后来云无法使用。 它不提供山寨版开源社区的服务(可见社区的重要性)。 当然,由于使用场景的不同,山寨版和正统版的发展方向也在逐渐远离。

作为以往商业智能BI的替代者,目前大数据的特点包括:数据源多、数据格式多样(结构化数据、非结构化数据如日志、Excel文件、CSV文件、文本文件,甚至pdf等) 。 从量级上来说,至少应该是TB级(TB、PB、EB……),而且数据增长速度也很快。

现在9012,大数据生态和各种轮子技术逐渐成熟:

1.数据来源很多。 应该如何收集和集中? 于是出现了Sqoop、Flume等工具;

2. 数据采集后,如何存储? 于是出现了GFS/HDFS、FB、FS等分布式文件存储系统;

3.数据增长太快,横向扩展不可避免。 仅靠 RAID 是不够的。 设计HDFS时高可用非常重要(区块链的JPFS和STORJ也有类似的思路);

4、数据存储后,如何快速将数据转换为统一格式,如or? 最初的计算框架是,但是有些以前专门搞分析的人只懂SQL,那怎么办呢? 于是像Pig、Hive这样的引擎就出现了,它们可以将SQL解析成使用过的代码;

5、只能批量处理(批处理)。 如果想要流式处理,输入一条数据得到结果,可以使用Storm/; 如果你想要流处理和批处理,你必须使用HDFS。 ++Yarn集群,然后搭建Storm集群。 管理两个集群比较困难,所以可以使用Spark、Flink、Beam等一站式计算框架,兼顾这两方面(当然统一接口还有很多工作要做。 (do),而且由于相比Storm更加优化的设计,Spark的计算能力也提升了不少;

7、现在除了一些一线公司做实时计算外,大部分公司还是做离线计算。 很多时候大数据架构只需要配置存储+计算+任务调度,主要是HDFS+Hive+,一些实时计算需要Storm。 Kafka等架构的出现; 和Kappa提供业务处理的通用架构;

8、数据库的垂直扩展性实际上已经大大增强了。 比如Flax可以解决很多大数据问题; 水平扩展关系型数据库可以做读写分离/分库/表/负载均衡集群,NoSQL也可以做水平扩展。 对于扩展,根据业务考虑 ACID 权衡; 整体架构上,根据业务进行CAP权衡。 比如分布式架构中需要P;

9. ,Ozzie可以提供定时任务调度;

10、Hue等可以作为图形化任务执行管理工具,方便查看和编写;

11. 掌握Java和Scala;

下面我画了一张思维导图:

Java进阶:反射机制、多线程、并发、虚拟机

Linux:安装(//suse)、常用命令、Linux网络、防火墙、shell编程;

:分布式协调服务原理及选举机制、集群安装部署、zk数据结构及命令;

(HDFS++Yarn):HDFS工作机制; 运行机制(运行流程、并发数如何确定、机制、自定义分区、排序、序列化、数据压缩、与Yarn的配合、参数优化);

HBase(操作);

Hive(Hql的基本操作和原理理解);

卡夫卡

Storm - 因为出现较早,所以很多公司其实还在用(说白了,当时都是在玩自己的游戏。微软觉得很牛,就创造了自己的游戏。其他公司单独玩不起,所以他们只好联合起来做开源,雅虎带头贡献了阉割版的三件套,fb贡献了Storm——太小众了,所以阿里巴巴后来改写为;另外大大小小的公司也贡献了一些,比如HBase;至于亚马逊,自2007年发表论文后,就一直躲在开源社区后面赚钱,可惜技术实力这么强。它对开源社区的贡献几乎为0)Scala:基础、编译器、数据结构(数组、映射、元组、集合)、Actor、Akka、高阶函数、隐式转换;

Spark:Spark Core、RDD(api、缓存、DAG)、(、)、Spark()

辅助工具(Sqoop/Flume/Oozie/Hue等)

机器学习算法和库加上 MLlib - 如果您不专门从事机器学习,则不会使用它;

/卡帕建筑

麒麟

我列了一堆清单,但发现它们组织得不够好,所以我必须先这样做。 同时,我也发现自己不知不觉中陷入了Yak的陷阱:原本准备打开软件写一个,结果软件提示需要升级。 然后我点击升级,提示xx库不够。 新建,然后更新了xx库,提示升级yy驱动,然后升级yy驱动,系统告诉要编译这个驱动,必须下载zz版本的编译器和库,只能更新编译器,系统还说zz版本的编译器必须在aa系统上运行,然后升级系统。 系统升级后,需要重新启动。 重启之后,刚才的想法就被打破了。 。 。 几个小时后,我发现系统升级导致其他几个软件损坏无法使用。 然后我更新了这些软件并上网寻找问题的解决方案。 不知不觉,到了半夜,我已经筋疲力尽了,却发现还有一个大问题。 一堆还没解决,第一个还没写。 。 。 。

等我学习了一段时间,有了更深入的理解后,我再回来继续写。 。 。 。