多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 什么是hadoop 1. HADOOP是apache旗下的一套开源软件平台 2. HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理 3. HADOOP的核心组件有 A. HDFS(分布式文件系统) B. YARN(运算资源调度系统) C. MAPREDUCE(分布式运算编程框架) 4. 广义上来说,HADOOP通常是指一个更广泛的概念——HADOOP生态圈 # HADOOP产生背景 1. HADOOP最早起源于Nutch。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题。 2. 2003年、2004年谷歌发表的两篇论文为该问题提供了可行的解决方案。 分布式文件系统(GFS),可用于处理海量网页的存储 分布式计算框架MAPREDUCE,可用于处理海量网页的索引计算问题。 3. Nutch的开发人员完成了相应的开源实现HDFS和MAPREDUCE,并从Nutch中剥离成为独立项目HADOOP,到2008年1月,HADOOP成为Apache顶级项目,迎来了它的快速发展期。 # HADOOP在大数据,云计算中的位置和关系 1. 云计算是分布式计算、并行计算、网格计算、多核计算、网络存储、虚拟化、负载均衡等传统计算机技术和互联网技术融合发展的产物。借助IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)等业务模式,把强大的计算能力提供给终端用户。 2. 现阶段,云计算的两大底层支撑技术为“虚拟化”和“大数据技术” 3. 而HADOOP则是云计算的PaaS层的解决方案之一,并不等同于PaaS,更不等同于云计算本身。 # 国内外HADOOP应用案例介绍 1. HADOOP应用于数据服务基础平台建设 ![](https://box.kancloud.cn/c0345abb1248a0539c9ab2843a17bd58_1462x1144.png) 2. HADOOP用于用户画像 ![](https://box.kancloud.cn/79b99c489fc72f1c6760f0c9c6cace99_2164x896.png) 3. HADOOP用于网站点击流日志数据挖掘 金融行业: 个人征信分析 证券行业: 投资模型分析 交通行业: 车辆、路况监控分析 电信行业:用户上网行为分析 ...... 总之:hadoop并不会跟某种具体的行业或者某个具体的业务挂钩,它只是一种用来做海量数据分析处理的工具 ![](https://box.kancloud.cn/d29132e12ea8e837873cd9d6c1a21779_2200x1298.png) # HDFS模拟实现 ![](https://box.kancloud.cn/ef30db8377a4a0fbe6f8d8398b6b82a8_821x464.png) # yarn模拟实现思路 ![](https://box.kancloud.cn/0f929c556c65773a1be9b5361c81b1c1_738x379.png) # 三大组件 ## 解决海量数据的存储问题 分布式文件系统(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 # HADOOP生态圈以及各组成部分的简介 ![](https://box.kancloud.cn/5ed5fbbd2b33361f0146970dfa457918_1734x1182.png) **各组件简介** 重点组件: * HDFS:分布式文件系统 * MAPREDUCE:分布式运算程序开发框架 * HIVE:基于大数据技术(文件系统+运算框架)的SQL数据仓库工具 * HBASE:基于HADOOP的分布式海量数据库 * ZOOKEEPER:分布式协调服务基础组件 * Mahout:基于mapreduce/spark/flink等分布式运算框架的机器学习算法库 * Oozie:工作流调度框架 * Sqoop:数据导入导出工具 * Flume:日志数据采集框架 # 项目架构 ![](https://box.kancloud.cn/ed1c68db0fc45948e4f2c5640564e37e_1488x996.png)