🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # HDFS模拟实现 ![](https://box.kancloud.cn/f1d77fbb106ce2da119aaf5770505937_819x468.png) # yarn模拟实现思路 ![](https://box.kancloud.cn/13b1d1785b238d48b2d303e48acfe829_995x500.png) # 三大组件 ## 解决海量数据的存储问题 分布式文件系统(HDFS) 1. 具有分布式的集群结构 我们把这样实际存储数据的节点叫做 datanode 2. 具有一个统一对外提供查询 存储 搜索 机器节点 对外跟客户端统一打交道 对内跟实际存储数据的节点打交道 3. 具有备份的机制 解决了机器挂掉时候数据丢失的问题 4. 具有统一的API 对客户端来说不用操心你集群内部的事情 只要我调用你的API, 我就可以进行文件的读取 存储 甚至是搜索 甚至我们希望可以提供一个分布式文件系统的引用 fs= new FileSystem() fs.add .copy .rm 与其他文件系统不同的是,HDFS一个典型的数据块大小是128M(HDFS在2.7版本默认的64M升到128M),HDFS中的每个文件都会按照128MB切分成不同的数据块,每个数据块会按照设置的副本策略分布到不同的Datanode. HDFS数据块远大于其他文件系统,这主要针对大规模的流式数据访问而做的优化.更大的数据块意味着更多文件顺序读写和更小的数据块管理开销 ## 解决分布式数据计算(处理)问题 分布式的编程模型 (MapReduce) 思想 分而治之:先局部 再总体 map(映射) reduce(聚合) 整天上作为一个编程模型:需要给用户提供一个友好 便捷的使用规范 比如:你要继承什么东西 配置什么 怎么去调用 怎么去执行 1. 继承我们的一个mapper 实现自己的业务逻辑 2. 继承我们的一个reduce 实现自己的业务逻辑 3. 最好可以提供可供用户进行相关配置的类 或者配置文件 作为一个分布式计算框架 最好我们还提供一个程序的总管(MrAppmater) 用来管理这种分布式计算框架的内部问题:启动 衔接 等等 ## 解决了分布式系统的资源管理问题 分布式资源管理(yarn) 为了更好的管理我们集群的资源 最好设计成分布式的架构 1. 需要一个统一对外提供服务的节点(某一机器 或者机器上的一个进程 一个服务) 叫做资源管理者 ResourceManager 2. 需要在集群中的每台机器上有一个角色 用来进行每台机器资源的管理 汇报 叫做节点管理者 nodemanager # HADOOP生态圈以及各组成部分的简介 **各组件简介** 重点组件: * HDFS:分布式文件系统 * MAPREDUCE:分布式运算程序开发框架 * HIVE:基于大数据技术(文件系统+运算框架)的SQL数据仓库工具 * HBASE:基于HADOOP的分布式海量数据库 * ZOOKEEPER:分布式协调服务基础组件 * Mahout:基于mapreduce/spark/flink等分布式运算框架的机器学习算法库 * Oozie:工作流调度框架 * Sqoop:数据导入导出工具 * Flume:日志数据采集框架 # 项目架构 ![](https://box.kancloud.cn/fb009f696205aaf1593d60dbc2445364_756x501.png)