hadoop2.0生态技术简介
所属分类 hadoop
浏览量 1412
HA(High Available)和 Federation机制
MapReduce JobTracker/TaskTracker机制完全重构
资源管理由YARN处理
核心组件
HDFS Hadoop Distributed File System
MapReduce 基于YARN大数据集并行处理系统
YARN Yet Another Resource Negotiator 集群资源管理 作业调度
common 通用功能 序列化 RPC 持久化数据结构
其他组件
Ambari
基于Web的工具,支持Hadoop集群的部署、管理和监控。
支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop和Hcatalog等
Hbase 分布式列式数据库,支持大表结构化存储
Hive 分布式数据仓库系统 将SQL转化为MapReduce任务
Spark 基于内存的快速通用的计算引擎
Zookeeper 分布式协调服务 配置维护,名字服务,分布式同步和组服务
pig 高级数据流语言和执行环境 使用PigLatin来表达大数据分析程序,将脚本转换为MapReduce任务
Tez 通用DAG计算框架
Sqoop 数据传输工具 SQL-to-Hadoop
HDFS
Master/Slave架构
NameNode+多个DataNode
NameNode 管理和维护HDFS集群上整个文件系统命名空间的Master,
主要负责数据块Block映射到文件的BlockMap位置信息,以及HDFS上目录和文件的元数据信息等。
DataNode
处理Client读/写请求 , 数据块的创建、删除和复制操作
心跳 数据信息上报
数据块默认为128MB ,可通过dfs.block.size参数配置
机架 rack 机架感知
副本放置策略
NameNode FsImage EditLog
HDFS Client DistributedFileSystem create
DFSOutputStream write
数据组装成一个个packet放入dataQueue中,Streamer线程将packet从dataQueue中取出,
放到ackQueue队列中并将其发送给Pipeline中的第一个DataNode节点上,
第一个DataNode节点又将packet发送至第二个DataNode节点,
直到Pipeline中所有的DataNode节点都已收到此packet,之后沿着Pipeline的反方向链依次返回ack。
如果向DataNode节点写入packet的过程失败,则DataStreamer线程将packet从ackQueue中移除放到dataQueue中,
将失效DataNode节点从Pipeline中移除,并与NameNode节点进行通信申请分配新的DataNode节点。
一个packet发送成功后,ResponseProcessor线程则将此packet从ackQueue中移除,
直到所有packet写入完成后,HDFS Client调用DFSOutputStream的close方法关闭输出流,
调用DistributedFileSystem对象的complete方法通知NameNode节点写文件完成。
MapReduce
Map任务把数据输出到内存中开启的一个环状缓冲区中,
当缓冲区的使用达到指定阈值时会将缓冲区中的数据刷到磁盘上的临时文件中,这个Spill过程会产生很多临时小文件spill_file。
Map阶段结束之前可能会对中间过程产生的多个spill_file进行合并,产生一个最终文件。
Reduce进程通过HTTP获取Map阶段产生的输出文件,复制过来的数据先写入内存缓冲区中,当数据量到达一定阈值时将数据写入到本地文件系统中,
之后MapReduce会执行Reduce端的Merge和Sort过程。Reduce阶段对排序后的键值对执行指定的reduce处理过程,将结果写入到各part文件中。
YARN
Yet Another Resource Negotiator
MRv2(MapReduce NextGen)
YARN 责集群中CPU和内存等资源的管理和控制,降低集群管理成本。
ResourceManager
ApplicationMaster
ApplicationMaster是NodeManager上运行的一个进程,负责为计算作业从ResourceManager申请计算资源,
并根据ResourceManager的调度结果,将作业分配到不同的NodeManager上去执行Task。
同时与每个NodeManager节点保持心跳,跟踪这些资源的使用以及执行并监控各个Task的执行。
NodeManager节点是ResourceManager的从节点,内部管理维护着许多动态创建的Container,
而不是固定数目的Map slots和Reduce slots。
NodeManager监控节点上的CPU和内存使用情况定时上报给ResourceManager。
Container是YARN平台上用作资源隔离的框架,对单个节点上的内存和CPU等资源进行封装,兼容各种计算框架。
资源分配由ApplicationMaster动态申请,不必事先指定计算任务所需的Container数和每个Container所要分得的资源,资源利用能力得到有效地提升。
Zookeeper
参考Google Chubby实现 提供分布式协调服务
类似目录树的层次数据结构
分布式锁,状态同步,配置维护,统一命名服务和集群管理等服务
Leader Follower Client
Leader由Follower投票选举产生
HBase
基于列,有利于压缩,Null值不占用存储空间
Row Key 最大长度为64KB
Column Family 存储在HDFS上的一个单独文件中 值为Null列不占用存储空间
Cell(存储单元)由行键,列族和Timestamp(时间戳)组成
多个版本 ,按 Timestamp(时间戳)倒序存储,最新的数据排在最前面。
Table
Region 负载均衡和分布式存储的最小单元
RegionServer
Hive
Hive提供了CLI(Command Line Interface,命令行接口),Web页面的服务访问方式,也可以通过Thrift,JDBC/ODBC接口进行编程访问。
Driver组件包括Complier、Optimizer和Executor,
所有客户端的命令和查询都会进入到Driver驱动,它将输入语句进行解析、编译,对计算的需求进行优化,生成执行计划,启动底层的MapReduce来执行任务。
Metastore 元数据和表模式信息
三种存储方式:内嵌Derby方式,local方式和remote方式。
内嵌Derby方式 默认,同一时间只能有一个进程连接使用数据库,
local方式和remote方式 使用本地或者远程搭建的关系型数据库(通常使用MySQL)存储元数据。
上一篇
下一篇
hadoop1.0与2.0的区别
CAPEX和OPEX的具体含义
架构的三个维度和六个层面
mysql连接错误ERROR 2002 (HY000)解决方法
maven处理本地jar包依赖
spring bean 生命周期实例