1、CDH集群基本概念:
1、概念
CDH是Cloudera的100%开放源代码平台发行版,包括Apache Hadoop,是专门为满足企业需求而构建的。CDH可立即提供企业使用所需的一切。通过将Hadoop与十几个其他关键的开源项目集成在一起,Cloudera创建了功能先进的系统,可以帮助您执行端到端的大数据工作流程。
cluster : 集群。运行相互独立的服务主机的集群,在同一个集群中,所有服务必须要有同样的CDH版本。
services: 服务。集群中提高某种特定能力的抽象实体,比如hdfs,hbase,yarn等。
role: 角色。服务中扮演特定功能,被分配到某个主机。
role type:角色类型。主要区分角色进程的分类,比如hdfs的namenode和datanode。
2、HDFS概念和特性:
1、概念:
首先,它是一个文件系统,用于存储文件,通过统一的命名空间——目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
2、特性:
(1)HDFS中的文件在物理上是分块存储(block),块的大小可以通过配置参数( dfs.blocksize)来规定,默认大小在hadoop2.x版本中是128M,老版本中是64M
(2)HDFS文件系统会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data
(3)目录结构及文件分块信息(元数据)的管理由namenode节点承担,nameode是HDFS集群主节点,负责维护整个hdfs文件系统的目录树,以及每一个路(文件)所对应的block块信息(block的id,及所在的datanode服务器)
(4)文件的各个block的存储管理由datanode节点承担,datanode是HDFS集群从节点,每一个block都可以在多个datanode上存储多个副本(副本数量也可以通过参数设置dfs.replication)
(5)HDFS是设计成适应一次写入,多次读出的场景,且不支持文件的修改
3、hdfs的工作机制:
(1)HDFS集群分为两大角色:NameNode、DataNode (Secondary Namenode)
(2)NameNode负责管理整个文件系统的元数据
(3)DataNode 负责管理用户的文件数据块
(4)文件会按照固定的大小(blocksize)切成若干块后分布式存储在若干台datanode上
(5)每一个文件块可以有多个副本,并存放在不同的datanode上
(6)Datanode会定期向Namenode汇报自身所保存的文件block信息,而namenode则会负责保持文件的副本数量
(7)HDFS的内部工作机制对客户端保持透明,客户端请求访问HDFS都是通过向namenode申请来进行
3、Hbase概念
1、概念:
HBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群。
HBASE的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。
HBASE是Google Bigtable的开源实现,但是也有很多不同之处。比如:Google Bigtable利用GFS作为其文件存储系统,HBASE利用Hadoop HDFS作为其文件存储系统;Google运行MAPREDUCE来处理Bigtable中的海量数据,HBASE同样利用Hadoop MapReduce来处理HBASE中的海量数据;Google Bigtable利用Chubby作为协同服务,HBASE利用Zookeeper作为对应。
2、与传统数据库对比
1、传统数据库遇到的问题:
1)数据量很大的时候无法存储
2)没有很好的备份机制
3)数据达到一定数量开始缓慢,很大的话基本无法支撑
2、HBASE优势:
1)线性扩展,随着数据量增多可以通过节点扩展进行支撑
2)数据存储在hdfs上,备份机制健全
3)通过zookeeper协调查找数据,访问速度块。
3、hbase集群中的角色
1、一个或者多个主节点,Hmaster
2、多个从节点,HregionServer
4、Hive基本概念
1、什么是Hive:
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
2、为什么使用Hive:
直接使用hadoop所面临的问题 :
人员学习成本太高
项目周期要求太短
MapReduce实现复杂查询逻辑开发难度太大
为什么要使用Hive :
操作接口采用类SQL语法,提供快速开发的能力
避免了去写MapReduce,减少开发人员的学习成本
扩展功能很方便
3、Hive的特点
可扩展
Hive可以自由的扩展集群的规模,一般情况下不需要重启服务。
延展性
Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。
容错
良好的容错性,节点出现问题SQL仍可完成执行。
5、MapReduce概念
1、概念:
Mapreduce是一个分布式运算程序的编程框架,是用户开发“基于hadoop的数据分析应用”的核心框架;
Mapreduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个hadoop集群上;
2、为什么要MAPREDUCE
(1)海量数据在单机上处理因为硬件资源限制,无法胜任
(2)而一旦将单机版程序扩展到集群来分布式运行,将极大增加程序的复杂度和开发难度
(3)引入mapreduce框架后,开发人员可以将绝大部分工作集中在业务逻辑的开发上,而将分布式计算中的复杂性交由框架来处理
设想一个海量数据场景下的wordcount需求:
单机版:内存受限,磁盘受限,运算能力受限 分布式: 文件分布式存储(HDFS) 运算逻辑需要至少分成2个阶段(一个阶段独立并发,一个阶段汇聚) 运算程序如何分发 程序如何分配运算任务(切片) 两阶段的程序如何启动?如何协调? 整个程序运行过程中的监控?容错?重试? |
可见在程序由单机版扩成分布式时,会引入大量的复杂工作。为了提高开发效率,可以将分布式程序中的公共功能封装成框架,让开发人员可以将精力集中于业务逻辑。
而mapreduce就是这样一个分布式程序的通用框架,其应对以上问题的整体结构如下
1、MRAppMaster(mapreduce application master) 2、MapTask 3、ReduceTask |
3、结构
一个完整的mapreduce程序在分布式运行时有三类实例进程:
1、MRAppMaster:负责整个程序的过程调度及状态协调
2、mapTask:负责map阶段的整个数据处理流程
3、ReduceTask:负责reduce阶段的整个数据处理流程