More Related Content
Similar to Hadoop系统架构 (20)
More from ssuser220dc6 (20)
Hadoop系统架构
- 3. © ZTE All rights reserved
Hadoop的简历
Apache Nutch项目(开源搜索引擎,
Lucene项目(文本检索引擎)的一
部分)的一部分:Spider
诞生于2004年
创作者:
Doug Cutting & Michael J.Cafarella
名字&形象代言人:Doug Cutting
自己儿子的玩具——小黄象
Hadoop
Lucene
Nutch
Hadoop
- 4. © ZTE All rights reserved
Hadoop是什么?
一个分布式文件系统和并行执行环境;
让用户便捷地处理海量数据;
Hadoop是大数据领域的事实标准;
用Java编写,支持多种编程语言,
如:Python、C++
借鉴了Google的分布式分件系统和分布
式编程思想。
HDFS
MapReduce
- 5. © ZTE All rights reserved
Hadoop大事记
2004年-- 最初的版本(现在称为HDFS和MapReduce)由Doug Cutting和Mike Cafarella
开始实施。
2006年2月-- Apache Hadoop项目正式启动以支持MapReduce和HDFS的独立发展。
2006年5月-- 雅虎建立了一个300个节点的Hadoop研究集群。
2007年4月-- 研究集群达到两个1000个节点的集群。
2008年4月-- 赢得世界最快1 TB数据排序在900个节点上用时209秒,由雅虎研究团队完
成。
2008年10月-- 研究集群每天装载10 TB的数据。
2009年3月-- 17个集群总共24 000台机器。
2009年4月-- 赢得每分钟排序,59秒内排序500 GB(在1400个节点上)和173分钟内排序
100 TB数据(在3400个节点上)。
- 7. © ZTE All rights reserved
Hadoop的特性
扩容能力:能可靠地存储和处理千兆字节(PB)数据。
成本低:可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达
数千个节点。
高效率:通过分发数据,hadoop可以在数据所在的节点上并行地处理它们,这使得处理
非常的快速。
易于管理:磁盘和节点自动管理。
可靠性:hadoop能自动地维护数据的多份复制,并且在任务失败后能自动地重新部署计
算任务。
通用性强:可以用于各种类型数据的处理,MapReduce几乎就是标准接口。
社区活跃,衍生产品多。
- 12. © ZTE All rights reserved
Hadoop集群结构
DataNode NodeManager
Slave
NameNode ResourceManager
Master
DataNode NodeManager
Slave
DataNode NodeManager
Slave
NameNode ResourceManager
Standby
ZooKeeper
ZooKeeper
ZooKeeper
- 13. © ZTE All rights reserved
物理分布的Hadoop集群
NodeManager/
DataNode
NodeManager/
DataNode
NodeManager/
DataNode
NodeManager/
DataNode
NodeManager/
DataNode
NodeManager/
DataNode
Zookeeper
Rack
Switch
NodeManager/
DataNode
NodeManager/
DataNode
NodeManager/
DataNode
NodeManager/
DataNode
NodeManager/
DataNode
NodeManager/
DataNode
Zookeeper
Rack
Switch
NodeManager/
DataNode
NodeManager/
DataNode
NodeManager/
DataNode
NodeManager/
DataNode
Zookeeper
ResourceManager/
NameNode
ResourceManager/
NameNode
Rack
Switch
Switch
- 14. © ZTE All rights reserved
Hadoop物理节点部署
Server
Linux OS
Hadoop
Utility
JVM
Browser NameNode
Resource
Manager
History
Server
Server
Linux OS
JVM
DataNode
Node
Manager
Master Node
Slave Node
- 15. © ZTE All rights reserved
Hadoop的各种版本选择
Apache Hadoop
Hortonworks
Cloudera(CDH:Cloudera
Distribution Hadoop)
MapR
……
选择 Hadoop版本的考虑因素:
是否开源(即是否免费)
是否有稳定版
是否经实践检验
是否有强大的社区支持
- 17. © ZTE All rights reserved
HDFS简介
HDFS——Hadoop分布式文件系统;
是Hadoop体系中数据存储管理的基础;
为了做到可靠性,创建了多份数据块的副本,并将它们放置在服务器群的计算节点中,
MapReduce就可以在它们所在的节点上处理这些数据了。
- 18. © ZTE All rights reserved
HDFS的主要特点
HDFS主要特点:
使用低成本存储和服务器构建;
存放PB级别的海量数据;
高可扩展性,实际生产环境扩展至4000
个节点;
高可靠性和容错性,数据自动复制,可
自我修复;
高带宽,高并发访问,对于延迟不敏感;
面向批处理。
HDFS不适合:
存储小文件 (不建议使用)
大量的随机读 (不建议使用)
需要对文件的修改 (不支持)
- 20. © ZTE All rights reserved
什么是MapReduce
MapReduce为离线数据分析
而设计,基本上是个利用数据并
行性进行分布运算而后汇总结
果的计算框架;
适合超大规模且格式复杂的数
据处理。
MapReducev1框架图
- 21. © ZTE All rights reserved
MapReduce流程
Map(映射):对一些独立元素组成的
列表的每一个元素进行指定的操作,
可以高度并行。
Reduce(化简):对一个列表的元素进
行合并。
一个简单的MapReduce程序只需
要指定map()、reduce()、输入和输
出,剩下的事(并行化、容错、数据
分布、负载均衡的等)由框架帮你
搞定。
- 22. © ZTE All rights reserved
MapReduce示例——WordCount
- 23. © ZTE All rights reserved
Apache Hadoop的版本演进
- 24. © ZTE All rights reserved
Yarn
资源管理
任务调度
原JobTracker
功能
ResourceManager
ApplicationMaster
原TaskTracker NodeManager
任务监控
Master端
Slave端
YARN架构思路:将原JobTacker三大功能拆分
Hadoop2.0以后,
MapReduce1.0中的资源管
理调度功能,被单独分离出
来形成了YARN,它是一个
纯粹的资源管理调度框架。
被剥离了资源管理调度功能
的MapReduce 框架就变成
了MapReduce2.0,它是运
行在YARN之上的一个纯粹
的计算框架。
YARN
- 25. © ZTE All rights reserved
Yarn的框架与功能
JobTracker 和 TaskTracker 已从 YARN 中删
除,取而代之的是一组对应用程序不可知的
新守护程序。
YARN 分层结构的本质是 ResourceManager。
这个实体控制整个集群并管理应用程序向基
础计算资源的分配。ResourceManager 将各
个资源部分(计算、内存、带宽等)精心安
排给基础 NodeManager(YARN 的每节点
代理)。ResourceManager 还与
ApplicationMaster 一起分配资源,与
NodeManager 一起启动和监视它们的基础
应用程序。
Yarn框架图
- 26. © ZTE All rights reserved
ZooKeeper
Zookeeper:动物管理员,可以管理大数据生态系统中的小动物,如:
hadoop(大象)、pig(小猪)、hive(蜂巢)等组件,是一种分布式
应用协调系统,可以为分布式应用系统中的不同组件提供协调服务,具
体的,有如下常见应用场景:
为分布式应用系统提供统一的配置管理信息(configuration)
为分布式应用系统提供统一的命名服务(naming)
提供基于简单原语的分布式同步操作(distributed synchronization)
集群管理(group service)
- 28. © ZTE All rights reserved
Hbase
HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,主要用来存储非结构化和半结构化的松散数据。
HBase的目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群处理由超过10亿行数据和数百万列
元素组成的数据表。
ETL工具 BI报表 RDBMS
Pig Hive Sqoop
MapReduce
HBase
HDFS
(Hadoop Distributed File System)
Zookeeper
Avro
Hadoop生态系统
Hadoop生态系统中HBase与其他部分的关系
- 29. © ZTE All rights reserved
Hive
Hive是一个构建于Hadoop顶层的数据
仓库工具。
支持大规模数据存储、分析,具有良好
的可扩展性;
依赖分布式文件系统HDFS存储数据;
依赖分布式并行计算模型MapReduce处
理数据;
定义了简单的类似SQL 的查询语言——
HiveQL;
用户可以通过编写的HiveQL语句运行
MapReduce任务。
应用层 报表中心 在线业务 BI
Hadoop
数据仓库
Hive Pig HBase Mahout
Hadoop
MapReduce
HDFS
- 30. © ZTE All rights reserved
Impala
Cloudera Impala是用来进行大数据查询的补充工具。
Cloudera Impala可以直接为存储在HDFS或Hbase中的Hadoop
数据提供快速、交互式的SQL查询。
除了使用相同的存储平台,Impala与Hive一样也使用了相同的元
数据,SQL语法(Hive SQL),ODBC驱动和用户接口,这就很
方便的为用户提供了一个相似并且统一的平台来进行批量和实时
查询。
Impala主要用于实时查询。
实时查询,秒级返回结果
• Cloudera开发并开源
• MPP模型的分布查询引擎
Hive
Hadoop
Impala
简化查询逻辑的表达
问题:难以满足探索式分析
存储、处理大量数据
问题:编写查询逻辑的工作
量较大
- 31. © ZTE All rights reserved
Flume
Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。
- 32. © ZTE All rights reserved
Kafka
Kafka——分布式发布-订阅消息系统,一般作为企业大数据分析平台的数据交换枢纽,不
同类型的分布式系统可以统一接入到Kafka,实现和Hadoop各个组件之间的不同类型数
据的实时高效交换。它主要处理活跃的流式数据。
特点:
• 高吞吐量:同时为发布和订阅提供高
吞吐量,每秒可生产约25万消息
(50MB),处理55万消息
(110MB)。
• 支持online和offline场景。
- 33. © ZTE All rights reserved
Spark
Spark最初由美国加州伯克利大学(UCBerkeley)的AMP实验室于2009年开发,是基于
内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序。
Spark在2014年打破了Hadoop保持的基准排序纪录
Spark/206个节点/23分钟/100TB数据
Hadoop/2000个节点/72分钟/100TB数据
Spark用十分之一的计算资源,获得了比Hadoop快3倍的速度
Hadoop与Spark执行逻辑回归的时间对比
- 34. © ZTE All rights reserved
Spark生态体系
应用场景 时间跨度 其他框架 Spark生态系统中的组件
复杂的批量数据处理 小时级 MapReduce、Hive Spark
基于历史数据的交互
式查询
分钟级、秒级 Impala 、 Dremel 、
Drill
Spark SQL
基于实时数据流的数
据处理
毫秒、秒级 Storm、S4 Spark Streaming
基于历史数据的数据
挖掘
- Mahout MLlib
图结构数据的处理 - Pregel、Hama GraphX
- 35. © ZTE All rights reserved
Spark Streaming
Spark Streaming 是一个对实时数据流进行高吞吐、高容错的流式处理系统,可以对多种数据源(如
Kafka、Flume、Twitter 和ZeroMQ 等)进行类似Map、Reduce 和Join 等复杂操作,并将结果保存
到外部文件系统、数据库或应用到实时仪表盘。应用:实时流量分析、实时日志分析。
- 36. © ZTE All rights reserved
Storm
Storm是一个免费开源、分布式、高容错的实时计算系统。Storm令持
续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要
求。Storm经常用于在实时分析、在线机器学习、持续计算、分布式远
程调用和ETL等领域。
应用:
一淘-实时分析系统pora:实时分析用户的属性,并反馈给搜索引擎。实时分析用户
的行为日志,能够为用户展现最贴近其当前需求的结果。
携程-网站性能监控:实时分析系统监控携程网的网站性能,通过历史数据对比等判
断规则,触发预警事件。
- 37. © ZTE All rights reserved
Spark与Storm对比
应用场景:
Storm
需要纯实时,不能忍受1秒以上延
迟的场景下使用,比如实时金融系
统要求实时金融交易与分析。实时
性更强!
Spark
一个项目除了实时计算之外,还包
括了离线批处理、交互式查询等业
务功能,那么就应该首选Spark。
综合处理能力强,吞吐量大!
比较点 Storm Spark
Streaming
实时计算模型 纯实时 准实时
实时计算延迟 毫秒级 秒级
吞吐量 低 高
事务机制 支持完善 支持,但不够完善
健壮性/容错性 非常强 一般
动态调整并行度 支持 不支持
Editor's Notes
- 2008年1月,Hadoop已成为Apache顶级项目,证明它是成功的。通过这次机会,Hadoop成功地被雅虎之外的很多公司应用,如Facebook、纽约时报等。特别是纽约时报,它使用运行在亚马逊的EC2云计算上Hadoop,将4TB的报纸扫描文档压缩,转换为用于Web的PDF文档,这个过程历时不到24小时,使用100台机器运行,这成为Hadoop一个良好的宣传范例。
2008年2月,雅虎宣布其索引网页的生产系统采用了在10000多个核的Linux集群上运行的Hadoop。Hadoop真正达到了万维网的规模。2008年4月,在一个900节点的Hadoop集群上,雅虎的研究人员运行1TB的Jim Gray基准排序,只用了209秒。
2009年4月,在一个1400节点的集群上对500GB数据进行排序,只用了59秒,这显示了Hadoop强大的计算能力。
- 目前最多4000个节点
扩容能力:能可靠地存储和处理千兆字节(PB)数据。
成本低:可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。
高效率:通过分发数据,hadoop可以在数据所在的节点上并行地处理它们,这使得处理非常的快速。
易于管理:磁盘和节点自动管理。
可靠性:hadoop能自动地维护数据的多份复制,并且在任务失败后能自动地重新部署计算任务。
通用性强:可以用于各种类型数据的处理,MapReduce几乎就是标准接口。
社区活跃,衍生产品多。
- 应用趋势,越来越注重实时分析
- MapReduce实现了Map和Reduce两个功能
Map把一个函数应用于集合中的所有成员,然后返回一个基于这个处理的结果集
Reduce对结果集进行分类和归纳
在同一个计算作业,Map()和 Reduce() 两个函数可以分别并行运行
不同的计算作业,只要计算资源足够,在同一时刻也可以并行运行
MapReduce 框架的核心优势(一)
1. 高度可扩展,可动态增加/削减计算节点,真正实现弹性计算。
2. 高容错能力,支持任务自动迁移、重试和预测执行,不受计算节点故障影响。
3. 公平调度算法,支持优先级和任务抢占,兼顾长/短任务,有效支持交互式任务。
MapReduce 框架的核心优势(二):
4. 就近调度算法, 调度任务到最近的数据节点,有效降低网络带宽。
5. 动态灵活的资源分配和调度,达到资源利用最大化,计算节点不会出现闲置和过载的情况;同时支持资源配额管理。
6. 经过大量实际生产环境使用和验证,最大集群规模在 4000 个计算节点。
- 视频分析和检索
推荐引擎
数据分析手段
全文挖掘
建立索引
图形创建和分析
模式识别
协同过滤
情感分析
风险评估
- ResourceManager整个集群只有一个,负责集群资源的统一管理和调度。HA时可以多个。
详细功能
处理客户端请求
启动/监控AppliactionMaster
监控NodeManager
资源分配与调度
ApplicationMaster每个应用有一个,负责应用程序的管理
详细功能
数据切分
为应用程序申请资源,并进一步分配给内部任务
任务监控与容错
ApplicationMaster 管理一个在 YARN 内运行的应用程序的每个实例。ApplicationMaster 负责协调来自 ResourceManager 的资源,并通过 NodeManager 监视容器的执行和资源使用(CPU、内存等的资源分配)。请注意,尽管目前的资源更加传统(CPU 核心、内存),但未来会带来基于手头任务的新资源类型(比如图形处理单元或专用处理设备)。
Nodemanager整个集群有多个,负责单节点资源管理和使用
详细功能
单个节点上的资源管理和任务管理
处理来自ResourceManager的命令
处理来自AppliactionMaster的命令
NodeManager 管理一个 YARN 集群中的每个节点。NodeManager 提供针对集群中每个节点的服务,从监督对一个容器的终生管理到监视资源和跟踪节点健康。MRv1 通过插槽管理 Map 和 Reduce 任务的执行,而 NodeManager 管理抽象容器,这些容器代表着可供一个特定应用程序使用的针对每个节点的资源。
Container对任务运行环境的抽象,每个任务一个Container
描述一系列信息
任务运行资源(节点、内存、CPU)
任务启动命令
任务运行环境
双层调度框架
RM将资源分配给AM
AM将资源进一步分配给各个Task
- Zookeeper本身也是一个分布式系统,是1个由多台server服务器节点组成的集群。
Zookeeper系统中主要有3种角色:leader、follower 和 observer。
Leader是zookeeper系统中的核心控制节点,通过集群的leader 选举过程,从server节点中选举出来,负责系统数据的更新(投票过程)。
Follower对外接受client端的连接请求,处理来自客户端的请求并返
回响应,对内连接到leader上,转发来自客户端的数据更新请求,接
受并处理来自leader的数据更新请求(proposal+commit),参加leader的投票等。
Observer和follower很类似,不同之处主要是observer不参加leader选择的投票。
集群内的所有Server之间互相连接,当超过半数(N/2+1)的Server可用时,整个集群可用,对外提供服务
Client需要保存一个所有Server的列表,启动时随机连接到一个Server,故障时尝试连接其他Server
Client的读请求由所连接的Server本地处理;写请求则会首先在Server之间传播,成功后再回复Client 。
Zookeeper会严格保证操作的时序,每个操作都会有一个全局的zxid