赞
踩
1、什么是Hadoop
专业版解释
Hadoop是Apache 公司开发的一款可靠的、可扩展性的、分布式计算的开源软件。以Hadoop分布式文件系统(HDFS)和分布式运算编程框架(MapReduce)为核心,允许在集群服务器上使用简单的编程模型对大数据集进行分布式处理。Hadoop被设计成能够从单台服务器扩展到数以千计的服务器,每台服务器都有本地的计算和存储资源。Hadoop的高可用性并不依赖硬件,其代码库自身就能在应用层侦测并处理硬件故障,因此能基于服务器集群提供高可用性的服务。
通俗版解释
Hadoop是一个开源的框架,可编写和运行分布式应用处理大规模数据,是专为离线和大规模数据分析而设计的。以分布式文件系统(HDFS)和分布式运算编程框架(MapReduce)为核心,其中HDFS实现将文件分布式的存储在多台服务器上,MapReduce则实现了在多台机器上分布式的并行运算。
2、Hadoop用来做什么?
2.1 存储了大规模的数据,我们要干什么呢,当然是分析数据中的价值,Hadoop+MapReduce用于离线大数据的分析挖掘,比如:电商数据的分析挖掘、社交数据的分析挖掘,企业客户关系的分析挖掘,最终的目标就是BI了,提高企业运作效率,实现精准营销,各个垂直领域的推荐系统,发现潜在客户等等。总结了Hadoop的应用场景如下:
2.2 例如,Facebook公司运行了世界第二大Hadoop集群,数据超过2PB,每天加入10TB数据,2400个内核,9TB内存,大部分时间硬件满负荷运行。如用户数,网页浏览次数,网站访问时间增常情况,广告活动效果数据,计算用户喜欢人和应用程序。通过分析历史数据,以设计和改进产品,以及管理。
HDFS和MapReduce是Hadoop的两大核心,除此之外Hbase、Hive这两个核心工具也随着Hadoop发展变得越来越重要。同时,在Hadoop2.0后,在HDFS的基础上增加了YARN,是一个资源管理框架,在YARN上既可以放MapReduce,也可以放置其他的计算资源,主要是管理资源的,如CPU,硬盘,内存,网络等。
1、HDFS的体系架构
概念
Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件上的分布式文件系统。HDFS是一个高度容错性的系统,能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。
数据块(block):大文件会被分割成多个block进行存储,block大小默认为64MB。每一个block会在多个datanode上存储多份副本,默认是3份。
NameNode:namenode负责管理文件目录、文件和block的对应关系以及block和datanode的对应关系。
DataNode:datanode就负责存储了,当然大部分容错机制都是在datanode上实现的。
HDFS的工作机制
(1)客户把一个文件存入HDFS,其实HDFS会把这个文件切块后,分散存储在N台linux机器系统中(负责存储文件块的角色:data node)<准确来说:切块的行为是由客户端决定的>
(2)一旦文件被切块存储,那么,HDFS中就必须有一个机制,来记录用户的每一个文件的切块信息,及每一块的具体存储机器(负责记录块信息的角色是:name node)
(3)为了保证数据的安全性,HDFS可以将每一个文件块在集群中存放多个副本(到底存几个副本,是由当时存入该文件的客户端指定的)
综述:一个HDFS系统,由一台运行了namenode的服务器,和N台运行了datanode的服务器组成!
总结:一个HDFS系统,由一台运行了namenode的服务器,和N台运行了datanode的服务器组成!
2、MapReduce体系架构
3、Hive的体系架构
概念
Hive是基于Hadoop的一个数据仓库工具(离线),可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
为什么使用Hive
直接使用hadoop所面临的问题 :
人员学习成本太高
项目周期要求太短
MapReduce实现复杂查询逻辑开发难度太大
使用Hive
操作接口采用类SQL语法,提供快速开发的能力。
避免了去写MapReduce,减少开发人员的学习成本。
功能扩展很方便。
4、Hbase数据管理
概念
Hbase就是Hadoop database,可以提供数据的实时随机读写。Hbase与Mysql、Oralce、db2、SQLserver等关系型数据库不同,它是一个NoSQL数据库(非关系型数据库) 。
RowKey:是Byte array,是表中每条记录的“主键”,方便快速查找,Rowkey的设计非常重要。
Column Family:列族,拥有一个名称(string),包含一个或者多个相关列
Column:属于某一个columnfamily,familyName:columnName,每条记录可动态添加
Version Number:类型为Long,默认值是系统时间戳,可由用户自定义
Value(Cell):Byte array
Hbase的表模型与关系型数据库的表模型不同:
Hbase的表没有固定的字段定义
Hbase的表中每行存储的都是一些key-value对
Hbase的表中有列族的划分,用户可以指定将哪些kv插入哪个列族
Hbase的表在物理存储上,是按照列族来分割的,不同列族的数据一定存储在不同的文件中
Hbase的表中的每一行都固定有一个行键,而且每一行的行键在表中不能重复
Hbase中的数据,包含行键,包含key,包含value,都是byte[ ]类型,hbase不负责为用户维护数据类型
HBASE对事务的支持很差
Hbase使用场景
大数据量存储,大数据量高并发操作
需要对数据随机读写操作
读写访问均是非常简单的操作
5、Yarn的体系架构
概念
Yarn是一个分布式程序的运行调度平台,是hadoop2.X版本后新加入的模块。
yarn中有两大核心角色:
(1)Resource Manager
接受用户提交的分布式计算程序,并为其划分资源。
管理、监控各个Node Manager上的资源情况,以便于均衡负载。
(2)Node Manager
管理它所在机器的运算资源(cpu + 内存)。
负责接受Resource Manager分配的任务,创建容器、回收资源。
Yarn的工作机制
(1)用户向YARN中提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。
(2)ResourceManager为该应用程序分配第一个Container,并与对应的NodeManager通信,要求它在这个Container中启动应用程序的ApplicationMaster。
(3)ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4~7。
(4)ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源。
(5)一旦ApplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务。
(6)NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。
(7)各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。
在应用程序运行过程中,用户可随时通过RPC向ApplicationMaster查询应用程序的当前运行状态。
(8)应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭自己。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。