大数据场景
比如你现在在维护一个商城系统,里面的东西卖的太好了,每天都会产生大量的用户行为和订单数据。现在老板让你去分析过去一年的用户行为和订单数据,你会怎么处理?
从技术的角度看,这是一个将海量数据先存起来,再将数据拿出来进行计算并得到结果的过程。如果使用MySQLL数据库将这海量数据存起来,再执行代码进行统计,大概率直接卡死。那么问题来了,怎么读写这类海量数据场景呢?
没有什么是加一层中间层不能解决的,如果有那就再加一层。
Hadoop是什么?
像我们平时用的MySQL,处理个几百G数据就已经比较极限了,如果数据再大点,比如TB、PB这样的规模,我们就称它为大数据
,它不仅数据规模大,增长速度也非常快,MYSQL根本扛不住,所以需要有专门的工具做处理,
Hadoop就是一套专门用于大数据处理的工具,内部由多个组件构成,你可以将它理解为应用和大数据之间的一个中间层。
以前数据量小的时候,应用程序读写MYSQL,现在数据量大了,应用程序就改为读写Hadoop全家桶。
Hadoop
为应用程序屏蔽了大数据的一些处理细节,对外提供一系列的读写API,应用通过调用API实现对大数据的处理。我们来看一下它是怎么做到的。
大数据之所以难处理,本质原因在于它大,所以解决思路也很简单,核心只有一个字,那就是切,将处理不过来的大数据切分成一份份处理的过来的小数据,对小份数据进行存储、计算等一系列操作。所以Hadoop要解决的核心问题有两个,一个是怎么存,另一个是怎么算怎么存。
怎么存(HDFS
)?
对于TB、PB级别的大数据,一台服务器的硬盘装不下,我们就用多台服务器的硬盘来装,文件太大,那就切,我们可以将大文件切分成一个个128兆的数据块,也就是Block
,放到多台服务器硬盘上。怕一台数据崩了,影响数据完整性,那就多复制几份数据在多台服务器备份着,这些存放数据的服务器就叫Data Node
.
以前我们只需要从一台服务器里读写数据,现在就变成了需要在多台服务器里读写数据。因此需要有一个软件为我们屏蔽多台服务器的读写复杂性。这个负责切分和存储数据的分