1.介绍
HADOOP是apache旗下的一套开源软件平台
HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理
HADOOP的核心组件有 : HDFS(分布式文件系统) YARN(运算资源调度系统) MAPREDUCE(分布式运算编程框架)
2.产生背景
HADOOP最早起源于Nutch。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题。
2003年、2004年谷歌发表的两篇论文为该问题提供了可行的解决方案。
——分布式文件系统(GFS),可用于处理海量网页的存储
——分布式计算框架MAPREDUCE,可用于处理海量网页的索引计算问题。
Nutch的开发人员完成了相应的开源实现HDFS和MAPREDUCE,并从Nutch中剥离成为独立项目HADOOP,到2008年1月,HADOOP成为Apache顶级项目,迎来了它的快速发展期。
3.hadoop生态圈以及各组成部分
重点组件:
HDFS:分布式文件系统
MAPREDUCE:分布式运算程序开发框架
HIVE:基于大数据技术(文件系统+运算框架)的SQL数据仓库工具
HBASE:基于HADOOP的分布式海量数据库
ZOOKEEPER:分布式协调服务基础组件
Mahout:基于mapreduce/spark/flink等分布式运算框架的机器学习算法库
Oozie:工作流调度框架
Sqoop:数据导入导出工具
Flume:日志数据采集框架
4.分布式系统三大组件的总结
4.1.解决海量数据的存储问题(分布式文件系统hdfs)
具有分布式的集群结构,我们把实际存储数据的节点叫做datanode.
具有一个统一对外提供咨询,存储搜索的机器节点,对外跟客户端统一打交道,对内跟实际存储数据的节点打交道
具有备份的机制 解决了机器挂掉时数据丢失的问题
具有统一的API,对客户端来说不用操心你集群内部的部署,只要调用你的API就可以进行对文件的读取,存储,甚至是搜索,
4.2.解决分布式数据计算(处理)问题(分布式的编程模型Mapreduce)
思想:分而治之 先局部 再总体 map映射,reduce聚合
整体上作为一个编程模型,需要给用户提供一个友好的 便捷的使用规范
比如:你要继承什么东西 配置什么 怎么去调用 怎么去执行
继承我们的一个mapper类去实现自己的业务逻辑,继承我们的一个reduce实现自己的业务逻辑,最好可以提供
可供用户进行相关配置的类 或者是配置文件
作为一个分布式计算框架 最好还可以提供一个程序的总管(MrAppmaster) 用来管理这种分布式计算框架的内部问题:启动 斜街 等
4.3.解决分布式系统的资源管理问题(分布式资源管理)
为了更好的管理我们集群的资源,最好设计成分布式的架构,
需要有一个统一对外提供服务的节点(某一机器 或者机器上的一个进程 一个服务) 叫做资源管理者 ResourceManager
需要在集群中的每台机器上有一个角色,用来进行每台机器资源的管理,汇报,叫做节点管理者nodemanager