首先,提及大数据一词的概念。大数据本质还在于数据,但是它有着新的特征亮点。包括:数据来源广,数据格式多样化(结构化数据、非结构化数据、Excel文件、文本文件等)、数据量大(最少也是TB级别的、甚至可能是PB级别)、数据增长速度快等等。
扩展讲大数据的4个基本特征,我们将进行下面额思考:
1.数据来源广?
广泛的数据来源从何而来,通过何种方式进行采集与汇总?相对应的我们出现Sqoop,
Cammel,Datax等工具。
在这里还是要推荐下我自己建的大数据学习交流群:529867072,群里都是学大数据开发的,如果你正在学习大数据 ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有大数据软件开发相关的),包括我自己整理的一份最新的大数据进阶资料和高级开发教程,欢迎进阶中和进想深入大数据的小伙伴加入。
2.数据采集之后,该如何存储?
采集之后,为了方便存储,我们对应的出现了GFS,HDFS,TFS等分布式文件存储系统。
并且,介于数据的增长速度非常之快,这也就要求我们,数据存储必须可以进行水平扩展。
3.数据存储之后,该如何通过运算快速转化成一致的格式,又该如何快速运算出自己想要的结果?
对此,MapReduce的分布式运算框架提出了解决方案。但是由于MapReduce需要java的编程代码较多,由此,又出现了Hive,Pig等将SQL转化成MapReduce的解析引擎;再有,因普通的MapReduce只能一批一批地批量处理数据,时间消耗过多,最终目的又要求我们输入的一条数据就能得到结果,于是又出现了Storm/JStorm这样的低时延的流式计算框架;但是如果同时需要批处理和流处理,按照如上就得搭两个集群,Hadoop集群(包括HDFS+MapReduce+Yarn)和Storm集群,不易于管理,所以出现了Spark这样的一站式的计算框架,既可以进行批处理,又可以进行流处理(实质上是微批处理)。而后Lambda架构,Kappa架构的出现,又提供了一种业务处理的通用架构。
4.此外,为了提高工作效率,加快运速度,出现了一些辅助工具:
Ozzie,azkaban:定时任务调度的工具。
Hue,Zepplin:图形化任务执行管理,结果查看工具。
Scala语言:编写Spark程序的最佳语言,当然也可以选择用Python。
Python语言:编写一些脚本时会用到。
Allluxio,Kylin等:通过对存储的数据进行预处理,加快运算速度的工具。
原文地址:https://blog.51cto.com/14296550/2403744