前言
Hadoop,这是一个熟悉的名词。熟悉到你甚至都可以用这个名词来判定眼前这个人,到底是不是一个软件工程师。因此,可能为了防止这样尴尬局面的发生,或者至少在面试前五分钟或多或少突击的了解Hadoop。
那么这篇文章或多或少会对你有一点点的帮助
一、Hadoop是什么?
首先,可能你需要先忘记之前在其他博客哪里,被人灌了一大堆名词的记忆。
我们只需要知道Hadoop,它是一个大数据环境下的解决方案,主要由两部分组成 HDFS(分布式文件存储系统)与 MapReduce
1.1 HDFS
HDFS,又被称之为分布式文件系统,那么什么是分布式文件系统呢??
文件系统大家都知道把,就像我们之前用Java编写的文件 IO 流。主要的操作便是读写文件。
那么分布式文件系统呢,就是在文件系统的基础上,外加上远程的增写与分布式的存储。
简单的说,HDFS便是一种文件服务器的解决方案,我们可以利用他来实现文件的存储。就好比我们要做一个视频的网站,用户的上传的资源信息我们应该如何解决呢,我们就可以存放于此。
1.2 MapReduce
MapReduce,应该可以这样认为Map与Reduce。便是他可以将某种操作进行切割,切割成数份小操作。小操作完成之后,再将结果整合在一起实现数据的输出。
简单点说便是,Hadoop提供了可编程接口,来实现用户对Hadoop内的数据操作。但是如果让自己一个Hadoop做,其他三个Hadoop只是在那边看,那么效率和性能就很低。因此就把这个任务分成四份,大家都做一个小任务。这样就快了很多。
其实到目前为止,我对于MapReduce的还是不深,因此也不方便多说写什么。
二、引申项目
听完了上面一系列的对Hadoop的叙述,我们可以知道Hadoop的本质便是带着可编程接口的分布式文件系统。
但是,文件系统的定义太广泛,就好像我们电脑里面的E盘,我们可以在里面存储各式各样的文件,比如说我们可以再里面安装一个Mysql数据库,也可以存放mp3,mp4等文件信息,运维人员如何有效的进行可视化管理呢?
这些都是需求,而且这些需求在本质上是一致的。
因此,就有不少发烧友,便是Hadoop的基础上,通过MapReduce的作用。便在Hadoop上层上进行扩脏开发,来进行普度众生
2.1 HBase
基于Hadoop的结构化数据库,mysql会随着数据大小的变化,其查询性能也会随着指数走向而降低。因此HBase便是为了解决这个方案而诞生。
从本质上来看,HBase我们可以将其看做大数据版本的mysql
2.2 Hive
试想一下,要是我们在开发的时候,如果没有navicat,等等一系列数据库可视化工具的帮助,我们的工作情况会使什么样的呢?
为了查看多少张表,我们必须进行编写 showtables, 查看一张表的数据,我们必须实时的编写Sql语句,哪怕我们先将命令便是在txt文本里面,我们也不得不重复多次复制粘贴于修改的操作。
那样的话,我们开发的表情估计会更加的痛苦,运维人员也会更加的痛苦。
因此,处于同一个原因,Hive便诞生了,简单来说,他便是将Hadoop内部的文件分布信息映射到mysql等数据库之内。
这样,我们只需要利用我呢吧喜欢的可视化工具进行连接,便能清晰的对其内部数据进行操作
2.3 不止如此
当然了,Hadoop的扩展工具还是有很多的,若是感兴趣的大家可以自行百度。
我对其他的认知还是不太深,因此也不便多说一些什么
2.4 就好比是Spring
如果说到这里,大家可能会被突然的一大堆的信息轰炸到脑仁疼。那么下面我们就做一个小的类比,来帮助大家进行理解,要是还不理解,可以暂时关闭博客。没有关系,休息一下,明天或者大脑冷静之时再看一遍也是无妨的。
我们现在就假设Hadoop就跟Spring一样,Spring这个框架,其原生作者在最开始的时候只提供了两个功能:IOC与AOP
IOC的本质其实就可以看成一个Map类,我们通过各式各样的方式,将我们的类存储在里面,并能在我们想要获取到他的时候,将其从里面取出。
public class springIoc{
public final static Map<String,Object> ioc = new HashMap<String,Object>
//我们几乎可以将Ioc的本质看成如此
}
Hadoop的HDFS本质上便于Spring的Ioc相同,都是存储对应的信息
MapReduce与Aop也基本相同,都是提供对内部进行拓展的方案
Hbase与Hive,其实也就是像Spring那些拓展工具一样。就好像我们打开Spring官网,我们会发现有Spring mobile,Spring data , spring flow等等等许多的Spring上升工具。Hbase与这些工具的本意一致,都只是其他发烧友工程师们由于Spring与Hadoop的拓展性强并且有这样的需求,为了方便开发,因此上升的一些工具类
3 什么情况下使用它
我其实一致保持这样的一个理念,便是我们应该在什么样的环境下使用对应的软件,而不是无视需求,随便给程序外加上什么听起来十分不错但是实际上并不需要的这些大数据架构,当然了除了在面试的时候
Hadoop的优势是在TB级别以上的数据群哦,项目刚开始的时候大家可以根据情况,先存储在本地或者说上传到OSS(阿里云)或者COS(腾讯云)上面去哦,当然了你有自己的解决方案也是可以的。通往罗马的道路千千万万吧!!!
总结
希望这篇文章能给予大家一些小小的帮助,有不足可以指出,谢谢大家