大数据开发|大数据是什么(0基础大数据怎么进行入门学习?基础知识总纲)

0基础我们该怎么进行大数据入门学习呢?
一、大数据是什么?
大数据,big data,《大数据》一书对大数据这么定义,大数据是指不能用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。
这句话至少传递两种信息:。
1、大数据是海量的数据
2、大数据处理无捷径,对分析处理技术提出了更高的要求
二、大数据的处理流程
下图是数据处理流程:

大数据开发|大数据是什么(0基础大数据怎么进行入门学习?基础知识总纲)
文章图片



1、底层是数以千亿计的数据源,数据源可以是SCM(供应链数据),4PL(物流数据),CRM(客户数据),网站日志以及其他的数据
2、第二层是数据加工层,数据工程师对数据源按照标准的统计口径和指标对数据进行抽取、清洗、转化、装载(整个过程简称ELT)
3、第三层是数据仓库,加工后的数据流入数据仓库,进行整合和存储,形成一个又一个数据集市。
数据集市,指分类存储数据的集合,即按照不同部门或用户的需求存储数据。
4、第四层是BI(商业智能),按照业务需求,对数据进行分析建模、挖掘、运算,输出统一的数据分析平台
5、第五层是数据访问层,对不同的需求方开放不同的数据角色和权限,以数据驱动业务。
大数据的量级,决定了大数据处理及应用的难度,需要利用特定的技术工具去处理大数据。
三、大数据处理技术
以最常使用的Hadoop为例:
Hadoop是Apache公司开发的一个开源框架,它允许在整个集群使用简单编程模型计算机的分布式环境存储并处理大数据。
集群是指,2台或2台以上服务器构建节点,提供数据服务。单台服务器,无法处理海量的大数据。服务器越多,集群的威力越大。
Hadoop类似于一个数据生态圈,不同的模块各司其职。下图是Hadoop官网的生态图。

大数据开发|大数据是什么(0基础大数据怎么进行入门学习?基础知识总纲)
文章图片



Hadoop的LOGO是一只灵活的大象。关于LOGO的来源,网上众说纷纭,有人说,是因为大象象征庞然大物,指代大数据,Hadoop让大数据变得灵活。而官方盖章,LOGO来源于创始人Doug Cutting的孩子曾为一个大象玩具取名hadoop。
从上图可以看出,Hadoop的核心是HDFS,YARN和Map Reduce,下面和大家讲一讲,几个主要模块的含义和功能。
1、HDFS(分布式文件存储系统)
数据以块的形式,分布在集群的不同节点。在使用HDFS时,无需关心数据是存储在哪个节点上、或者是从哪个节点从获取的,只需像使用本地文件系统一样管理和存储文件系统中的数据。
2、Map Reduce(分布式计算框架)
分布式计算框架将复杂的数据集分发给不同的节点去操作,每个节点会周期性的返回它所完成的工作和最新的状态。大家可以结合下图理解Map Reduce原理:

大数据开发|大数据是什么(0基础大数据怎么进行入门学习?基础知识总纲)
文章图片



计算机要对输入的单词进行计数:
如果采用集中式计算方式,我们要先算出一个单词如Deer出现了多少次,再算另一个单词出现了多少次,直到所有单词统计完毕,将浪费大量的时间和资源。
如果采用分布式计算方式,计算将变得高效。我们将数据随机分配给三个节点,由节点去分别统计各自处理的数据中单词出现的次数,再将相同的单词进行聚合,输出最后的结果。
3、YARN(资源调度器)
相当于电脑的任务管理器,对资源进行管理和调度。
4、HBASE(分布式数据库)
HBase是非关系型数据库(Nosql),在某些业务场景下,数据存储查询在Hbase的使用效率更高。
关于关系型数据库和菲关系型数据库的区别,会在以后的文章进行详述。
5、HIVE(数据仓库)
HIVE是基于Hadoop的一个数据仓库工具,可以用SQL的语言转化成Map Reduce任务对hdfs数据的查询分析。HIVE的好处在于,使用者无需写Map Reduce任务,只需要掌握SQL即可完成查询分析工作。
6、 Spark(大数据计算引擎)
Spark是专为大规模数据处理而设计的快速通用的计算引擎
7、Mahout(机器学习挖掘库)
Mahout是一个可扩展的机器学习和数据挖掘库
8、Sqoop
Sqoop可以将关系型数据库导入Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中
除上述模块外,Hadoop还有Zookeeper、Chukwa等多种模块,因为是开源的,所以未来还有出现更多更高效的模块,大家感兴趣可以上网了解。
通过Hadoop强大的生态圈,完成大数据处理流程。

在这里还是要推荐下我自己建的大数据学习交流群:943791324,群里都是学大数据开发的,如果你正在学习大数据 ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有大数据软件开发相关的),包括我自己整理的一份最新的大数据进阶资料和高级开发教程,欢迎进阶中和进想深入大数据的小伙伴加入。


大数据需要的语言 Java
java可以说是大数据最基础的编程语言,据我这些年的经验,我接触的很大一部分的大数据开发都是从Jave Web开发转岗过来的(当然也不是绝对我甚至见过产品转岗大数据开发的,逆了个天)。
一是因为大数据的本质无非就是海量数据的计算,查询与存储,后台开发很容易接触到大数据量存取的应用场景 二就是java语言本事了,天然的优势,因为大数据的组件很多都是用java开发的像HDFS,Yarn,Hbase,MR,Zookeeper等等,想要深入学习,填上生产环境中踩到的各种坑,必须得先学会java然后去啃源码。
说到啃源码顺便说一句,开始的时候肯定是会很难,需要对组件本身和开发语言都有比较深入的理解,熟能生巧慢慢来,等你过了这个阶段,习惯了看源码解决问题的时候你会发现源码真香。
Python和Shell
shell应该不用过多的介绍非常的常用,属于程序猿必备的通用技能。python更多的是用在数据挖掘领域以及写一些复杂的且shell难以实现的日常脚本。
大数据开发|大数据是什么(0基础大数据怎么进行入门学习?基础知识总纲)
文章图片


分布式计算
什么是分布式计算?分布式计算研究的是如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多服务器进行处理,最后把这些计算结果综合起来得到最终的结果。
举个栗子,就像是组长把一个大项目拆分,让组员每个人开发一部分,最后将所有人代码merge,大项目完成。听起来好像很简单,但是真正参与过大项目开发的人一定知道中间涉及的内容可不少。
比如这个大项目如何拆分?任务如何分配?每个人手头已有工作怎么办?每个人能力不一样怎么办?每个人开发进度不一样怎么办?开发过程中组员生病要请长假他手头的工作怎么办?指挥督促大家干活的组长请假了怎么办?最后代码合并过程出现问题怎么办?项目延期怎么办?项目最后黄了怎么办?
仔细想想上面的夺命十连问,其实每一条都是对应了分布式计算可能会出现的问题,具体怎么对应大家思考吧我就不多说了,其实已经是非常明显了。也许有人觉得这些问题其实在多人开发的时候都不重要不需要特别去考虑怎么办,但是在分布式计算系统中不一样,每一个都是非常严重并且非常基础的问题,需要有很好的解决方案。
最后提一下,分布式计算目前流行的工具有:
离线工具Spark,MapReduce等 实时工具Spark Streaming,Storm,Flink等
大数据开发|大数据是什么(0基础大数据怎么进行入门学习?基础知识总纲)
文章图片


分布式存储
传统的网络存储系统采用的是集中的存储服务器存放所有数据,单台存储服务器的io能力是有限的,这成为了系统性能的瓶颈,同时服务器的可靠性和安全性也不能满足需求,尤其是大规模的存储应用。
分布式存储系统,是将数据分散存储在多台独立的设备上。采用的是可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
大数据开发|大数据是什么(0基础大数据怎么进行入门学习?基础知识总纲)
文章图片


上图是hdfs的存储架构图,hdfs作为分布式文件系统,兼备了可靠性和扩展性,数据存储3份在不同机器上(两份存在同一机架,一份存在其他机架)保证数据不丢失。由NameNode统一管理元数据,可以任意扩展集群。
主流的分布式数据库有很多hbase,mongoDB,GreenPlum,redis等等等等,没有孰好孰坏之分,只有合不合适,每个数据库的应用场景都不同,其实直接比较是没有意义的。
最后:
【大数据开发|大数据是什么(0基础大数据怎么进行入门学习?基础知识总纲)】大家都知道大数据的技术日新月异,作为一个程序猿想要保持竞争力就必须得不断地学习。

    推荐阅读