#解决海量数据的存储问题
分布式文件系统(HDFS)
1、具有分布式的集群结构 我们把这样实际存储数据的节点叫做 datanode
2、具有一个统一对外提供查询 存储 搜索 机器节点
对外跟客户端统一打交道
对内跟实际存储数据的节点打交道
3、具有备份的机制 解决了机器挂掉时候数据丢失的问题
4、具有统一的API 对客户端来说不用操心你集群内部的事情 只要我调用你的API,
我就可以进行文件的读取 存储 甚至是搜索
甚至我们希望可以提供一个分布式文件系统的引用 fs= new FileSystem()
fs.add .copy .rm
#解决分布式数据计算(处理)问题
分布式的编程模型 (MapReduce)
思想 分而治之:先局部 再总体
map(映射) reduce(聚合)
整天上作为一个编程模型:需要给用户提供一个友好 便捷的使用规范
比如:你要继承什么东西 配置什么 怎么去调用 怎么去执行
1、继承我们的一个mapper 实现自己的业务逻辑
2、继承我们的一个reduce 实现自己的业务逻辑
3、最好可以提供可供用户进行相关配置的类 或者配置文件
作为一个分布式计算框架 最好我们还提供一个程序的总管(MrAppmater) 用来管理这种分布式计算框架的内部问题:启动 衔接 等等
#解决了分布式系统的资源管理问题
分布式资源管理(yarn)
为了更好的管理我们集群的资源 最好设计成分布式的架构
1、需要一个统一对外提供服务的节点(某一机器 或者机器上的一个进程 一个服务)
叫做资源管理者 ResourceManager
2、需要在集群中的每台机器上有一个角色 用来进行每台机器资源的管理 汇报
叫做节点管理者 nodemanager