什么是大数据?
在学习大数据之前,先要了解他解决了什么问题,能给我们带来什么价值。一方面,以前IT行业发展没有那么快,系统的应用也不完善,数据库足够支撑业务系统。但是随着行业的发展,系统运行的时间越来越长,搜集到的数据也越来越多,传统的数据库已经不能支撑全量数据的存储工作;另一方面,数据越来越多,单机的计算已经成为瓶颈。因此,基于分布式的大数据系统应运而生。
那么是大数据呢?大数据是一个广泛的概念,百度上搜解释一大堆,并不能让我们很好的理解。所以我用两个例子来描述一下:比如我们网上购物,在购物网站上都有商品推荐,网站将一段时间内销量最多的商品推荐给你,销量是从订单中计算出来的,那么问题来了,大量的订单如何存储?大量的订单又如何计算?再比如天气预报:大量的天气数据如何存储?大量的天气数据如何存储?
1、商品推荐: 问题:(1)大量的订单如何存储? (2)大量的订单如何计算?
2、天气预报: 问题:(1)大量的天气数据如何存储?(2)大量的天气数据如何存储?
因此可以看出,大数据技术解决的是哪种问题,同时这也是大数据的本质:
(1)数据的存储:分布式文件系统(分布式存储)
(2)数据的计算:分布式计算
Java和大数据是什么关系?
大数据就是一个行业,实现同一个需求同样有多种工具可以选择,狭义一点以技术的角度讲,各类框架有Hadoop,spark,storm,flink等,就这类技术生态圈来讲,还有各种中间件如flume,kafka,sqoop等等。而大数据常用的两个框架:
1、Hadoop:基于Java语言开发
2、Spark: 基于Scala语言,Scala基于Java语言
所以说大数据以Java技术为基础,在熟练掌握了Java技术以后,再学习大数据的相关技术会容易很多。
学习大数据需要的基础和路线
- 学习大数据需要的基础:Java基础(JavaSE)---> 类、继承、I/O、反射、泛型等等;Linux基础(Linux的操作) ---> 创建文件、目录、vi编辑器等等
- 学习路线:
(1)Java基础和Linux基础
(2)Hadoop的学习:体系结构、原理、编程
第一阶段:HDFS、MapReduce、HBase(NoSQL数据库)
第二阶段:数据分析引擎 ---> Hive、Pig 数据采集引擎 ---> Sqoop、Flume
第三阶段:HUE:Web管理工具 ZooKeeper:实现Hadoop的HA Oozie: 工作流引擎
(3)Spark的学习
第一个阶段:Scala编程语言
第二个阶段:Spark Core-----> 基于内存,数据的计算
第三个阶段:Spark SQL -----> 类似Oracle中的SQL语句
第四个阶段:Spark Streaming ---> 进行实时计算(流式计算):比如:自来水厂
(4)Apache Storm:类似Spark Streaming ---> 进行实时计算(流式计算)
NoSQL:Redis基于内存的数据库