详解hadoop核心架构
- 格式:docx
- 大小:48.16 KB
- 文档页数:6
Hadoop集群部署架构解析与部署指南随着大数据时代的到来,Hadoop成为了处理海量数据的重要工具。
Hadoop是一个开源的分布式计算框架,它的核心是Hadoop Distributed File System(HDFS)和MapReduce计算模型。
在本文中,我们将深入探讨Hadoop集群的部署架构,并提供一份详细的部署指南。
一、Hadoop集群的部署架构解析Hadoop集群的部署架构通常包括主节点(Master Node)和从节点(Slave Node)。
主节点负责管理整个集群的运行,从节点则负责存储和计算数据。
在一个典型的Hadoop集群中,主节点包括一个主服务器(NameNode)和一个备用服务器(Secondary NameNode),从节点则包括多个数据节点(DataNode)和任务节点(TaskTracker)。
主服务器(NameNode)是HDFS的核心组件,负责管理文件系统的命名空间和数据块的分配。
它存储了文件系统的元数据,包括文件的目录结构、文件的权限和数据块的位置等。
备用服务器(Secondary NameNode)则负责定期合并和压缩主服务器的编辑日志,以减轻主服务器的负载。
数据节点(DataNode)是HDFS中存储实际数据的节点,它们负责数据的读写和块的复制。
数据节点将数据分为多个块,并将这些块存储在本地磁盘上。
任务节点(TaskTracker)则负责执行MapReduce任务,包括数据的切分、映射和归约。
任务节点通过与数据节点的通信,将计算任务分配给适当的数据节点。
二、Hadoop集群的部署指南1. 硬件要求在部署Hadoop集群之前,首先需要考虑硬件要求。
主节点和从节点通常需要具备相同的硬件配置,包括CPU、内存和磁盘空间。
建议使用多核CPU和大容量内存,以提高集群的计算和存储能力。
此外,还需要足够的磁盘空间来存储数据块和计算结果。
2. 操作系统选择Hadoop支持多种操作系统,包括Linux、Windows和Mac OS等。
Hadoop的体系结构1. 介绍Hadoop是一个开源的分布式计算框架,主要用于存储和处理大规模数据集。
它采用了一种适用于大规模集群的可扩展性设计,能够在廉价的硬件上运行并处理TB到PB级别的数据。
Hadoop的体系结构包括了多个模块和组件,下面将详细探讨每个模块的功能和相互关系。
2. Hadoop体系结构图Hadoop体系结构的主要组成部分如下所示:+------------------+| Hadoop |+------------------+/ | \/ | \+-----------+ +-----------+ +-----------+| HDFS | | MapReduce | | YARN |+-----------+ +-----------+ +-----------+| | || | |+---------+ +---------+ +---------+| Name | | Data | | Application || Node | | Node | | Master/Node |+---------+ +---------+ +---------+3. HDFS (Hadoop分布式文件系统)HDFS是Hadoop的分布式文件系统,它用于存储大规模数据集,并提供了高可靠性、高性能和高容错性。
HDFS的体系结构包括以下组件:3.1 NameNodeNameNode是HDFS的主节点,负责管理整个文件系统的命名空间和元数据。
它维护了文件和目录树的结构,并保存了文件的属性(如权限、所有者等)。
NameNode还负责将文件划分为数据块,并记录每个数据块所在的DataNode。
3.2 DataNodeDataNode是HDFS中的工作节点,负责实际存储数据。
它接收来自客户端或其他DataNode的数据写请求,并将数据块存储在本地磁盘上。
DataNode还负责提供数据读取服务,将数据块传输给客户端或其他DataNode。
hadoop核⼼组件概述及hadoop集群的搭建什么是hadoop? Hadoop 是 Apache 旗下的⼀个⽤ java 语⾔实现开源软件框架,是⼀个开发和运⾏处理⼤规模数据的软件平台。
允许使⽤简单的编程模型在⼤量计算机集群上对⼤型数据集进⾏分布式处理。
hadoop提供的功能:利⽤服务器集群,根据⽤户的⾃定义业务逻辑,对海量数据进⾏分布式处理。
狭义上来说hadoop 指 Apache 这款开源框架,它的核⼼组件有:1. hdfs(分布式⽂件系统)(负责⽂件读写)2. yarn(运算资源调度系统)(负责为MapReduce程序分配运算硬件资源)3. MapReduce(分布式运算编程框架)扩展:关于hdfs集群: hdfs集群有⼀个name node(名称节点),类似zookeeper的leader(领导者),namenode记录了⽤户上传的⼀些⽂件分别在哪些DataNode上,记录了⽂件的源信息(就是记录了⽂件的名称和实际对应的物理地址),name node有⼀个公共端⼝默认是9000,这个端⼝是针对客户端访问的时候的,其他的⼩弟(跟随者)叫data node,namenode和datanode会通过rpc进⾏远程通讯。
Yarn集群: yarn集群⾥的⼩弟叫做node manager,MapReduce程序发给node manager来启动,MapReduce读数据的时候去找hdfs(datanode)去读。
(注:hdfs集群和yarn集群最好放在同⼀台机器⾥),yarn集群的⽼⼤主节点resource manager负责资源调度,应(最好)单独放在⼀台机器。
⼴义上来说,hadoop通常指更⼴泛的概念--------hadoop⽣态圈。
当下的 Hadoop 已经成长为⼀个庞⼤的体系,随着⽣态系统的成长,新出现的项⽬越来越多,其中不乏⼀些⾮ Apache 主管的项⽬,这些项⽬对 HADOOP 是很好的补充或者更⾼层的抽象。
hadoop项目结构及各部分具体内容Hadoop是一个开源的分布式计算框架,由Apache基金会管理。
它的核心是Hadoop分布式文件系统(HDFS)和MapReduce计算模型。
其项目结构包括以下几个部分:1. Hadoop Common:这是Hadoop项目的核心模块,包含文件系统、I/O操作、网络通信、安全性等基本功能的实现。
2. Hadoop HDFS:这是Hadoop的分布式文件系统,用于存储和管理大量数据。
它将数据分割成块,将这些块存储在不同的计算机上,以实现数据的可靠性和高可用性。
3. Hadoop YARN:这是Hadoop的资源管理器,用于管理集群中的资源,包括内存、CPU、磁盘等。
它可以将集群资源分配给运行在集群上的应用程序,从而提高资源利用率。
4. Hadoop MapReduce:这是Hadoop的计算模型,用于在分布式环境下执行大数据处理任务。
MapReduce将任务分成更小的子任务,然后在不同的计算机上并行执行这些子任务,最后将结果合并。
除了以上核心部分,Hadoop还包括一些其他功能模块:1. Hadoop Hive:这是一个基于Hadoop的数据仓库,提供了SQL 查询功能。
它可以将结构化数据映射到Hadoop HDFS上,从而实现大规模数据的查询和分析。
2. Hadoop Pig:这是一个基于Hadoop的数据流语言和平台,用于进行大规模数据处理和分析。
它支持多种数据源和处理方式,可以快速地进行数据的转换和操作。
3. Hadoop HBase:这是一个基于Hadoop的分布式数据库,用于存储大量的结构化数据。
它支持高可用性、可靠性和扩展性,并提供了快速查询和插入数据的功能。
总之,Hadoop是一个强大的大数据处理框架,它的各个部分提供了不同的功能和特性,可以轻松地处理大规模数据。
Hadoop 生态系统介绍Hadoop生态系统是一个开源的大数据处理平台,它由Apache基金会支持和维护,可以在大规模的数据集上实现分布式存储和处理。
Hadoop生态系统是由多个组件和工具构成的,包括Hadoop 核心,Hive、HBase、Pig、Spark等。
接下来,我们将对每个组件及其作用进行介绍。
一、Hadoop核心Hadoop核心是整个Hadoop生态系统的核心组件,它主要由两部分组成,一个是Hadoop分布式文件系统(HDFS),另一个是MapReduce编程模型。
HDFS是一个高可扩展性的分布式文件系统,可以将海量数据存储在数千台计算机上,实现数据的分散储存和高效访问。
MapReduce编程模型是基于Hadoop的针对大数据处理的一种模型,它能够对海量数据进行分布式处理,使大规模数据分析变得容易和快速。
二、HiveHive是一个开源的数据仓库系统,它使用Hadoop作为其计算和存储平台,提供了类似于SQL的查询语法,可以通过HiveQL 来查询和分析大规模的结构化数据。
Hive支持多种数据源,如文本、序列化文件等,同时也可以将结果导出到HDFS或本地文件系统。
三、HBaseHBase是一个开源的基于Hadoop的列式分布式数据库系统,它可以处理海量的非结构化数据,同时也具有高可用性和高性能的特性。
HBase的特点是可以支持快速的数据存储和检索,同时也支持分布式计算模型,提供了易于使用的API。
四、PigPig是一个基于Hadoop的大数据分析平台,提供了一种简单易用的数据分析语言(Pig Latin语言),通过Pig可以进行数据的清洗、管理和处理。
Pig将数据处理分为两个阶段:第一阶段使用Pig Latin语言将数据转换成中间数据,第二阶段使用集合行处理中间数据。
五、SparkSpark是一个快速、通用的大数据处理引擎,可以处理大规模的数据,支持SQL查询、流式数据处理、机器学习等多种数据处理方式。
hadoop基本架构和工作原理Hadoop是一个分布式开源框架,用于处理海量数据。
它能够使用廉价的硬件来搭建集群,同时还提供了高度可靠性和容错性。
Hadoop基本架构包括Hadoop Common、Hadoop Distributed File System (HDFS)和Hadoop MapReduce三个部分,下面将详细介绍Hadoop的工作原理。
1. Hadoop CommonHadoop Common是整个Hadoop架构的基础部分,是一个共享库,它包含了大量的Java类和应用程序接口。
Hadoop集群的每一台机器上都要安装Hadoop Common,并保持相同版本。
2. HDFSHadoop Distributed File System(HDFS)是Hadoop的分布式文件存储部分。
它的目的是将大型数据集分成多个块,并且将这些块在集群中的多个节点间分布式存储。
HDFS可以实现高度可靠性,因为它将每个块在存储节点之间备份。
HDFS可以在不同的节点中进行数据备份,这确保了数据发生故障时,可以轻松恢复。
3. MapReduceHadoop MapReduce是一种编程模型,用于处理大型数据集。
它将处理任务分成两个主要阶段,即Map阶段和Reduce阶段。
在Map阶段,MapReduce将数据集分成小块,并将每个块分配给不同的节点进行处理。
在Reduce阶段,结果被聚合,以生成最终的输出结果。
总的来说,MapReduce作为Hadoop的核心组件,负责对数据集进行处理和计算。
它充当的角色是一个调度员,它会将不同的任务分发到集群中的不同节点上,并尽力保证每个任务都可以获得足够的计算资源。
Hadoop采用多种技术来提供MapReduce的分布式计算能力,其中包括TaskTracker、JobTracker和心跳机制等。
TaskTracker是每个集群节点的一个守护程序,负责处理MapReduce任务的具体实现。
详解Hadoop核心架构通过对Hadoop分布式计算平台最核心的分布式文件系统HDFS、MapReduce 处理过程,以及数据仓库工具Hive和分布式数据库Hbase的介绍,基本涵盖了Hadoop分布式平台的所有技术核心。
通过这一阶段的调研总结,从内部机理的角度详细分析,HDFS、MapReduce、Hbase、Hive是如何运行,以及基于Hadoop数据仓库的构建和分布式数据库内部具体实现。
如有不足,后续及时修改。
HDFS的体系架构整个Hadoop的体系结构主要是通过HDFS来实现对分布式存储的底层支持,并通过MR来实现对分布式并行任务处理的程序支持。
HDFS采用主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode 和若干个DataNode组成的(在最新的Hadoop2.2版本已经实现多个NameNode 的配置-这也是一些大公司通过修改hadoop源代码实现的功能,在最新的版本中就已经实现了)。
NameNode作为主服务器,管理文件系统命名空间和客户端对文件的访问操作。
DataNode管理存储的数据。
HDFS支持文件形式的数据。
从内部来看,文件被分成若干个数据块,这若干个数据块存放在一组DataNode 上。
NameNode执行文件系统的命名空间,如打开、关闭、重命名文件或目录等,也负责数据块到具体DataNode的映射。
DataNode负责处理文件系统客户端的文件读写,并在NameNode的统一调度下进行数据库的创建、删除和复制工作。
NameNode是所有HDFS元数据的管理者,用户数据永远不会经过NameNode。
如图:HDFS体系结构图图中涉及三个角色:NameNode、DataNode、Client。
NameNode是管理者,DataNode是文件存储者、Client是需要获取分布式文件系统的应用程序。
文件写入:1)Client向NameNode发起文件写入的请求。
ApacheHadoop框架详细分析Apache Hadoop框架详细分析Apache Hadoop框架是一种用于大规模数据处理的开源软件,它通过分布式存储和计算能力来解决大数据处理的问题。
本文将对Apache Hadoop框架进行详细分析,包括其核心组件、架构以及应用场景等。
一、Hadoop框架概述Apache Hadoop是一个能够处理大规模数据的分布式计算框架,它由Apache软件基金会下的Hadoop项目开发和维护。
Hadoop的设计目标是以廉价的硬件构建可靠的、可扩展的分布式系统,并且能够对大规模数据进行高效的分布式处理。
Hadoop主要包括两个核心组件:分布式文件系统Hadoop HDFS和分布式计算框架Hadoop MapReduce。
HDFS用于存储大量数据,并将其分布在集群的多个节点上,实现高容错性和高可靠性。
MapReduce是一种分布式计算模型,通过将任务分解为多个片段并在多个节点上并行执行,实现对大规模数据的并行处理。
二、Hadoop框架架构Hadoop框架的架构由主节点(Master)和多个从节点(Slave)组成,其中主节点包括一个名称节点(NameNode)和一个资源管理器(ResourceManager),从节点包括多个数据节点(DataNode)和节点管理器(NodeManager)。
名称节点负责管理文件系统的命名空间和数据块的位置信息,资源管理器负责协调集群中的资源分配和任务调度。
数据节点负责存储和管理数据块,节点管理器负责管理从节点上的计算资源和任务执行。
Hadoop框架的工作流程如下:首先,客户端将输入文件划分为多个数据块,并将这些数据块分布存储在HDFS中的不同数据节点上;然后,客户端向资源管理器提交MapReduce任务,资源管理器根据集群的资源情况进行任务调度,并将任务分配给可用的从节点;接下来,从节点通过数据节点读取数据块,并由节点管理器负责执行Map和Reduce任务;最后,任务输出结果写入HDFS,并由客户端读取和处理。
海量数据处理技术——Hadoop介绍如今,在数字化时代,数据已经成为企业和组织中最重要的资产之一,因为巨大量的数据给企业和组织带来了更多的挑战,比如如何存储、管理和分析数据。
随着数据越来越庞大,传统方法已经无法胜任。
这正是Hadoop出现的原因——Hadoop是一个开源的、可扩展的海量数据处理工具。
本文将介绍什么是Hadoop、它的架构和基本概念、以及使用的应用场景。
一、什么是HadoopHadoop是一种基于Java的开源框架,它可以将大量数据分布式分割存储在许多不同的服务器中,并能够对这些数据进行处理。
Hadoop最初是由Apache软件基金会开发的,旨在解决海量数据存储和处理的难题。
Hadoop采用了一种分布式存储和处理模式,能够高效地处理PB级别甚至EB级别的数据,使得企业和组织能够在这些大量数据中更快地发现价值,并利用它带来的价值。
二、 Hadoop架构和基本概念Hadoop架构由两个核心组成部分构成:分布式文件系统Hadoop Distributed File System(HDFS)和MapReduce的执行框架。
1. HDFSHDFS以可扩展性为前提,其存储处理是在上面构建的,它在集群内将数据分成块(Block),每个块的大小通常为64MB或128MB,然后将这些块存储在相应的数据节点上。
HDFS架构包含两类节点:一个是namenode,另一个是datanode。
namenode是文件系统的管理节点,负责存储所有文件和块的元数据,这些元数据不包括实际数据本身。
datanode是存储节点,负责存储实际的数据块,并向namenode报告其状态。
2. MapReduceMapReduce是一个处理数据的编程模型,它基于两个核心操作:map和reduce。
Map负责将输入数据划分为一些独立的小片段,再把每个小片段映射为一个元组作为输出。
Reduce将Map输出的元组进行合并和过滤,生成最终输出。
简述hadoop核心组件及功能应用Hadoop是一个开源的分布式计算系统,由Apache组织维护。
它可以处理大量的数据,支持数据的存储、处理和分析。
其核心组件包括HDFS(Hadoop分布式文件系统)、MapReduce计算框架、YARN(资源管理)。
以下是对每个核心组件的简要介绍:1. HDFSHDFS是Hadoop分布式文件系统,它是Hadoop最核心的组件之一。
HDFS是为大数据而设计的分布式文件系统,它可以存储大量的数据,支持高可靠性和高可扩展性。
HDFS的核心目标是以分布式方式存储海量数据,并为此提供高可靠性、高性能、高可扩展性和高容错性。
2. MapReduce计算框架MapReduce是Hadoop中的一种计算框架,它支持分布式计算,是Hadoop的核心技术之一。
MapReduce处理海量数据的方式是将数据拆分成小块,然后在多个计算节点上并行运行Map和Reduce任务,最终通过Shuffle将结果合并。
MapReduce框架大大降低了海量数据处理的难度,让分布式计算在商业应用中得以大规模应用。
3. YARNYARN是Hadoop 2.x引入的新一代资源管理器,它的作用是管理Hadoop集群中的资源。
它支持多种应用程序的并行执行,包括MapReduce和非MapReduce应用程序。
YARN的目标是提供一个灵活、高效和可扩展的资源管理器,以支持各种不同类型的应用程序。
除了以上三个核心组件,Hadoop还有其他一些重要组件和工具,例如Hive(数据仓库)、Pig(数据分析)、HBase(NoSQL数据库)等。
这些组件和工具都是Hadoop生态系统中的重要组成部分,可以帮助用户更方便地处理大数据。
总之,Hadoop是目前最流行的大数据处理框架之一,它的核心组件和工具都为用户提供了丰富的数据处理和分析功能。
详解Hadoop核心架构通过阶段性的调研总结,从内部机理的角度详细分析,HDFS、MapReduce、Hbase、Hive是如何运行,以及基于Hadoop数据仓库的构建和分布式数据库内部具体实现。
HDFS的体系架构整个Hadoop的体系结构主要是通过HDFS来实现对分布式存储的底层支持,并通过MR来实现对分布式并行任务处理的程序支持。
HDFS采用主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode 和若干个DataNode组成的(在最新的Hadoop2.2版本已经实现多个NameNode 的配置-这也是一些大公司通过修改hadoop源代码实现的功能,在最新的版本中就已经实现了)。
NameNode作为主服务器,管理文件系统命名空间和客户端对文件的访问操作。
DataNode管理存储的数据。
HDFS支持文件形式的数据。
从内部来看,文件被分成若干个数据块,这若干个数据块存放在一组DataNode上。
NameNode执行文件系统的命名空间,如打开、关闭、重命名文件或目录等,也负责数据块到具体DataNode的映射。
DataNode负责处理文件系统客户端的文件读写,并在NameNode的统一调度下进行数据库的创建、删除和复制工作。
NameNode是所有HDFS元数据的管理者,用户数据永远不会经过NameNode。
图中涉及三个角色:NameNode、DataNode、Client。
NameNode是管理者,DataNode是文件存储者、Client是需要获取分布式文件系统的应用程序。
文件写入:1)Client向NameNode发起文件写入的请求。
2)NameNode根据文件大小和文件块配置情况,返回给Client它管理的DataNode的信息。
3)Client将文件划分为多个block,根据DataNode的地址,按顺序将block 写入DataNode块中。
文件读取:1)Client向NameNode发起读取文件的请求。
2)NameNode返回文件存储的DataNode信息。
3)Client读取文件信息。
HDFS作为分布式文件系统在数据管理方面可借鉴点:文件块的放置:一个Block会有三份备份,一份在NameNode指定的DateNode 上,一份放在与指定的DataNode不在同一台机器的DataNode上,一根在于指定的DataNode在同一Rack上的DataNode上。
备份的目的是为了数据安全,采用这种方式是为了考虑到同一Rack失败的情况,以及不同数据拷贝带来的性能的问题。
MapReduce体系架构MR框架是由一个单独运行在主节点上的JobTracker和运行在每个集群从节点上的TaskTracker共同组成。
主节点负责调度构成一个作业的所有任务,这些任务分布在不同的不同的从节点上。
主节点监视它们的执行情况,并重新执行之前失败的任务。
从节点仅负责由主节点指派的任务。
当一个Job被提交时,JobTracker接受到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。
JobTracker可以运行于集群中的任意一台计算机上。
TaskTracker负责执行任务,它必须运行在DataNode上,DataNode既是数据存储节点,也是计算节点。
JobTracker将map任务和reduce 任务分发给空闲的TaskTracker,这些任务并行运行,并监控任务运行的情况。
如果JobTracker出了故障,JobTracker会把任务转交给另一个空闲的TaskTracker重新运行。
HDFS和MR共同组成Hadoop分布式系统体系结构的核心。
HDFS在集群上实现了分布式文件系统,MR在集群上实现了分布式计算和任务处理。
HDFS在MR 任务处理过程中提供了文件操作和存储等支持,MR在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成分布式集群的主要任务。
Hadoop上的并行应用程序开发是基于MR编程框架。
MR编程模型原理:利用一个输入的key-value对集合来产生一个输出的key-value对集合。
MR库通过Map和Reduce两个函数来实现这个框架。
用户自定义的map函数接受一个输入的key-value对,然后产生一个中间的key-value对的集合。
MR把所有具有相同的key值的value结合在一起,然后传递个reduce函数。
Reduce函数接受key 和相关的value结合,reduce函数合并这些value值,形成一个较小的value 集合。
通常我们通过一个迭代器把中间的value值提供给reduce函数(迭代器的作用就是收集这些value值),这样就可以处理无法全部放在内存中的大量的value值集合了。
流程简而言之,大数据集被分成众多小的数据集块,若干个数据集被分在集群中的一个节点进行处理并产生中间结果。
单节点上的任务,map函数一行行读取数据获得数据的(k1,v1),数据进入缓存,通过map函数执行map(基于key-value)排序(框架会对map的输出进行排序)执行后输入(k2,v2)。
每一台机器都执行同样的操作。
不同机器上的(k2,v2)通过merge排序的过程(shuffle的过程可以理解成reduce前的一个过程),最后reduce合并得到,(k3,v3),输出到HDFS文件中。
谈到reduce,在reduce之前,可以先对中间数据进行数据合并(Combine),即将中间有相同的key的对合并。
Combine的过程与reduce的过程类似,但Combine是作为map任务的一部分,在执行完map函数后仅接着执行。
Combine 能减少中间结果key-value对的数目,从而降低网络流量。
Map任务的中间结果在做完Combine和Partition后,以文件的形式存于本地磁盘上。
中间结果文件的位置会通知主控JobTracker,JobTracker再通知reduce任务到哪一个DataNode上去取中间结果。
所有的map任务产生的中间结果均按其key值按hash函数划分成R份,R个reduce任务各自负责一段key区间。
每个reduce需要向许多个map任务节点取的落在其负责的key区间内的中间结果,然后执行reduce函数,最后形成一个最终结果。
有R个reduce任务,就会有R个最终结果,很多情况下这R个最终结果并不需要合并成一个最终结果,因为这R个最终结果可以作为另一个计算任务的输入,开始另一个并行计算任务。
这就形成了上面图中多个输出数据片段(HDFS副本)。
Hbase数据管理Hbase就是Hadoop database。
与传统的mysql、oracle究竟有什么差别。
即列式数据与行式数据由什么区别。
NoSql数据库与传统关系型数据由什么区别:Hbase VS Oracle1、Hbase适合大量插入同时又有读的情况。
输入一个Key获取一个value 或输入一些key获得一些value。
2、Hbase的瓶颈是硬盘传输速度。
Hbase的操作,它可以往数据里面insert,也可以update一些数据,但update的实际上也是insert,只是插入一个新的时间戳的一行。
Delete数据,也是insert,只是insert一行带有delete标记的一行。
Hbase的所有操作都是追加插入操作。
Hbase是一种日志集数据库。
它的存储方式,像是日志文件一样。
它是批量大量的往硬盘中写,通常都是以文件形式的读写。
这个读写速度,就取决于硬盘与机器之间的传输有多快。
而Oracle 的瓶颈是硬盘寻道时间。
它经常的操作时随机读写。
要update一个数据,先要在硬盘中找到这个block,然后把它读入内存,在内存中的缓存中修改,过段时间再回写回去。
由于你寻找的block不同,这就存在一个随机的读。
硬盘的寻道时间主要由转速来决定的。
而寻道时间,技术基本没有改变,这就形成了寻道时间瓶颈。
3、Hbase中数据可以保存许多不同时间戳的版本(即同一数据可以复制许多不同的版本,准许数据冗余,也是优势)。
数据按时间排序,因此Hbase特别适合寻找按照时间排序寻找Top n的场景。
找出某个人最近浏览的消息,最近写的N篇博客,N种行为等等,因此Hbase在互联网应用非常多。
4、Hbase的局限。
只能做很简单的Key-value查询。
它适合有高速插入,同时又有大量读的操作场景。
而这种场景又很极端,并不是每一个公司都有这种需求。
在一些公司,就是普通的OLTP(联机事务处理)随机读写。
在这种情况下,Oracle的可靠性,系统的负责程度又比Hbase低一些。
而且Hbase局限还在于它只有主键索引,因此在建模的时候就遇到了问题。
比如,在一张表中,很多的列我都想做某种条件的查询。
但却只能在主键上建快速查询。
所以说,不能笼统的说那种技术有优势。
5、 Oracle是行式数据库,而Hbase是列式数据库。
列式数据库的优势在于数据分析这种场景。
数据分析与传统的OLTP的区别。
数据分析,经常是以某个列作为查询条件,返回的结果也经常是某一些列,不是全部的列。
在这种情况下,行式数据库反应的性能就很低效。
行式数据库:Oracle为例,数据文件的基本组成单位:块/页。
块中数据是按照一行行写入的。
这就存在一个问题,当我们要读一个块中的某些列的时候,不能只读这些列,必须把这个块整个的读入内存中,再把这些列的内容读出来。
换句话就是:为了读表中的某些列,必须要把整个表的行全部读完,才能读到这些列。
这就是行数据库最糟糕的地方。
列式数据库:是以列作为元素存储的。
同一个列的元素会挤在一个块。
当要读某些列,只需要把相关的列块读到内存中,这样读的IO量就会少很多。
通常,同一个列的数据元素通常格式都是相近的。
这就意味着,当数据格式相近的时候,数据就可以做大幅度的压缩。
所以,列式数据库在数据压缩方面有很大的优势,压缩不仅节省了存储空间,同时也节省了IO。
(这一点,可利用在当数据达到百万、千万级别以后,数据查询之间的优化,提高性能,示场景而定)Hive数据管理Hive是建立在Hadoop上的数据仓库基础架构。
它提供了一系列的工具,用来进行数据提取、转换、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据机制。
可以把Hadoop下结构化数据文件映射为一张成Hive中的表,并提供类sql查询功能,除了不支持更新、索引和事务,sql其它功能都支持。
可以将sql语句转换为MapReduce任务进行运行,作为sql到MapReduce 的映射器。
提供shell、JDBC/ODBC、Thrift、Web等接口。
优点:成本低可以通过类sql语句快速实现简单的MapReduce统计。