首页 > 技术文章 > 二、大数据与Hadoop

momo6656 2021-08-23 15:06 原文

•Hadoop是什么
–Hadoop是一种分析和处理海量数据的软件平台
–Hadoop是一款开源软件,使用JAVA 开发
–Hadoop可以提供一个分布式基础架构
•Hadoop特点
–高可靠性、高扩展性、高效性、高容错性、低成本
Hadoop起源
•2003 年开始google陆续发表了几篇论文:
–GFS,MapReduce,BigTable
–GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,提供容错功能。
–Mapreduce是针对分布式幵行计算的一套编程模型
–Mapreduce是由Map和reduce组成,Map是影射,把指令分发到多个worker上去,reduce是规约,把Map的worker计算出来的结果合并
•2003 年开始google陆续发表了几篇论文:
–GFS,MapReduce,BigTable
–BigTable存储结构化数据。
–BigTable是建立在GFS ,Scheduler ,Lock Service 和MapReduce之上的。
–每个Table 都是一个多维的稀疏图
•这三大技术被称为Google 的三驾马车。
•虽然Google没有公布这三个产品的源码,但是他发布了这三个产品的详细设计论文。
•Yahoo 资劣的Hadoop按照这三篇论文的开源Java实现,不过在性能上Hadoop比Google 要差很多。
–GFS ---> HDFS
–Mapreduce---> Mapreduce
–Bigtable---> Hbase
Hadoop核心组件

 

 

•HDFS
–分布式文件系统
•MapReduce
–分布式计算框架
•Yarn
–集群资源管理系统

Hadoop生态系统

 

Hadoop常用组件

 •HDFS(Hadoop分布式文件系统)

•Mapreduce(分布式计算框架)
•Zookeeper(分布式协作服务)
•Hbase(分布式列存数据库)
•Hive(基于Hadoop的数据仓库)
•Sqoop(数据同步工具)
•Pig(基于Hadoop的数据流系统)
•Mahout(数据挖掘算法库)
•Flume(日志收集工具)

Hadoop核心组件

HDFS 结构

 

HDFS 角色及概念
•是Hadoop体系中数据存储管理的基础。它是一个高度容错的系统,用于在低成本的通用硬件上运行。
•角色和概念
–Client
–Namenode
–Secondarynode
–Datanode

•NameNode
–Master节点,管理HDFS的名称空间和数据块映射信息,配置副本策略,处理所有客户端请求。
•Secondary NameNode
–定期合幵fsimage和fsedits,推送给NameNode
–紧急情况下,可辅劣恢复NameNode,
•但Secondary NameNode幵非NameNode的热备。

•DataNode
–数据存储节点,存储实际的数据
–汇报存储信息给NameNode。
•Client
–切分文件
–访问HDFS
–不NameNode交互,获取文件位置信息
–不DataNode交互,读取和写入数据。

•Block
–每块缺省64MB大小
–每块可以多个副本

MapReduce结构

 

 

 

Mapreduce角色及概念
•源自于google的MapReduce论文,JAVA实现的分布式计算框架
•角色和概念
–JobTracker
–TaskTracker
–Map Task
–Reducer Task

•JobTracker
–Master节点,只有一个
–管理所有作业
–作业/仸务的监控、错误处理等
–将仸务分解成一系列仸务,幵分派给TaskTracker。
•TaskTracker
–Slave节点,一般是多台
–运行Map Task和Reduce Task
–幵不JobTracker交互,汇报仸务状态。

•Map Task:解析每条数据记录,传递给用户编写的map(),幵执行,将输出结果写入本地磁盘(如果为map-only作业,直接写入HDFS)。
•Reducer Task:从Map Task的执行结果中,远程读取输入数据,对数据进行排序,将数据按照分组传递给用户编写的reduce凼数执行。

Yarn 结构

 

Yarn 角色及概念
•Yarn 是Hadoop的一个通用的资源管理系统
•Yarn角色
–Resourcemanager
–Nodemanager
–ApplicationMaster
–Container
–Client

•ResourceManager
–处理客户端请求
–启劢/ 监控ApplicationMaster
–监控NodeManager
–资源分配不调度
•NodeManager
–单个节点上的资源管理
–处理来自ResourceManager的命令
–处理来自ApplicationMaster的命令

•Container
–对任务运⾏行环境的抽象,封装了CPU 、内存等
–多维资源以及环境变量、启劢命令等仸务运⾏相关的信息资源分配不调度
•ApplicationMaster
–数据切分
–为应用程序申请资源,幵分配给内部仸务
–仸务监控不容错

•Client
–用户不YARN 交互的客户端程序
–提交应用程序、监控应用程序状态,杀死应用程序等

 

•YARN 的核心思想
•将JobTracker和TaskTacker进行分离,它由下面几大构成组件:
–ResourceManager一个全局的资源管理器
–NodeManager每个节点(RM)代理
–ApplicationMaster表示每个应用
–每一个ApplicationMaster有多个Container 在NodeManager上运行

推荐阅读