[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)
- linux
- 常用命令
- 高级文本命令
- 面试题
- redis
- String
- list
- hash
- set
- sortedSet
- 案例-推荐
- java高级特性
- 多线程
- 实现线程的三种方式
- 同步关键词
- 读写锁
- 锁的相关概念
- 多线程的join
- 有三个线程T1 T2 T3,保证顺序执行
- java五种线程池
- 守护线程与普通线程
- ThreadLocal
- BlockingQueue消息队列
- JMS
- 反射
- volatile
- jvm
- IO
- nio
- netty
- netty简介
- 案例一发送字符串
- 案例二发送对象
- 轻量级RPC开发
- 简介
- spring(IOC/AOP)
- spring初始化顺序
- 通过ApplicationContextAware加载Spring上下文
- InitializingBean的作用
- 结论
- 自定义注解
- zk在框架中的应用
- hadoop
- 简介
- hadoop集群搭建
- hadoop单机安装
- HDFS简介
- hdfs基本操作
- hdfs环境搭建
- 常见问题汇总
- hdfs客户端操作
- mapreduce工作机制
- 案列-单词统计
- 局部聚合Combiner
- 案列-流量统计(分区,排序,比较)
- 案列-倒排索引
- 案例-共同好友
- 案列-join算法实现
- 案例-求topN(分组)
- 自定义inputFormat
- 自定义outputFormat
- 框架运算全流程
- mapreduce的优化方案
- HA机制
- Hive
- 安装
- DDL操作
- 创建表
- 修改表
- DML操作
- Load
- insert
- select
- join操作
- 严格模式
- 数据类型
- shell参数
- 函数
- 内置运算符
- 内置函数
- 自定义函数
- Transform实现
- 特殊分割符处理
- 案例
- 级联求和accumulate
- flume
- 简介
- 安装
- 常用的组件
- 拦截器
- 案例
- 采集目录到HDFS
- 采集文件到HDFS
- 多个agent串联
- 日志采集和汇总
- 自定义拦截器
- 高可用配置
- 使用注意
- sqoop
- 安装
- 数据导入
- 导入数据到HDFS
- 导入关系表到HIVE
- 导入表数据子集
- 增量导入
- 数据导出
- 作业
- 原理
- azkaban
- 简介
- 安装
- 案例
- 简介
- command类型单一job
- command类型多job工作流flow
- HDFS操作任务
- mapreduce任务
- hive脚本任务
- hbase
- 简介
- 安装
- 命令行
- 基本CURD
- 过滤器查询
- 系统架构
- 物理存储
- 寻址机制
- 读写过程
- Region管理
- master工作机制
- 建表高级属性
- 与mapreduce结合
- 协处理器
- 点击流平台开发
- 简介
- storm
- 简介
- 安装
- 集群启动及任务过程分析
- 单词统计
- 并行度
- ACK容错机制
- ACK简介