当前位置:首页 » 操作系统 » hdfs数据库

hdfs数据库

发布时间: 2023-02-10 14:18:55

1. HDFS 为何在大数据领域经久不衰

大数据中最宝贵、最难以代替的就是数据,一切都围绕数据。

HDFS是最早的大数据存储系统,存储着宝贵的数据资产,各种新算法、框架要想得到广泛使用,必须支持HDFS,才能获取已存储在里面的数据。所以大数据技术越发展,新技术越多,HDFS得到的支持越多,越离不开HDFS。 HDFS也许不是最好的大数据存储技术,但依然是最重要的大数据存储技术

HDFS是如何实现大数据高速、可靠的存储和访问的呢?

Hadoop分布式文件系统HDFS的设计目标是管理数以千计的服务器、数以万计的磁盘,将大规模的服务器计算资源当作一个单一存储系统进行管理,对应用程序提供数以PB计的存储容量,让应用程序像使用普通文件系统一样存储大规模的文件数据。

文件以多副本的方式进行存储:

缺点:

优点:

HDFS的大容量存储和高速访问的实现。

RAID将数据分片后,在多块磁盘上并发进行读写访问,提高了存储容量、加快了访问速度,并通过数据冗余校验提高了数据可靠性,即使某块磁盘损坏也不会丢数据。将RAID的设计理念扩大到整个分布式服务器集群,就产生了分布式文件系统,这便是Hadoop分布式文件系统的核心原理。

和RAID在多个磁盘上进行文件存储及并行读写的思路一样,HDFS是在一个大规模分布式服务器集群上,对数据分片后进行并行读写及冗余存储。因为HDFS可部署在一个大的服务器集群,集群中所有服务器的磁盘都可供HDFS使用,所以整个HDFS的存储空间可以达到PB级。

HDFS是主从架构。一个HDFS集群会有一个NameNode(命名节点,简称NN),作为主服务器(master server)。

HDFS公开了文件系统名称空间,允许用户将数据存储在文件中,就好比我们平时使用os中的文件系统一样,用户无需关心底层是如何存储数据的。 在底层,一个文件会被分成一或多个数据块,这些数据库块会被存储在一组数据节点中。在CDH中数据块的默认128M。 在NameNode,可执行文件系统的命名空间操作,如打开,关闭,重命名文件等。这也决定了数据块到数据节点的映射。

HDFS被设计为可运行在普通的廉价机器上,而这些机器通常运行着一个Linux操作系统。一个典型的HDFS集群部署会有一个专门的机器只能运行 NameNode ,而其他集群中的机器各自运行一个 DataNode 实例。虽然一台机器上也可以运行多个节点,但不推荐。

负责文件数据的存储和读写操作,HDFS将文件数据分割成若干数据块(Block),每个DataNode存储一部分Block,这样文件就分布存储在整个HDFS服务器集群中。

应用程序客户端(Client)可并行访问这些Block,从而使得HDFS可以在服务器集群规模上实现数据并行访问,极大提高访问速度。

HDFS集群的DataNode服务器会有很多台,一般在几百台到几千台,每台服务器配有数块磁盘,整个集群的存储容量大概在几PB~数百PB。

负责整个分布式文件系统的元数据(MetaData)管理,即文件路径名、数据块的ID以及存储位置等信息,类似os中的文件分配表(FAT)。

HDFS为保证数据高可用,会将一个Block复制为多份(默认3份),并将多份相同的Block存储在不同服务器,甚至不同机架。当有磁盘损坏或某个DataNode服务器宕机,甚至某个交换机宕机,导致其存储的数据块不能访问时,客户端会查找其备份Block访问。

HDFS中,一个文件会被拆分为一个或多个数据块。默认每个数据块有三个副本,每个副本都存放在不同机器,而且每一个副本都有自己唯一的编号:

文件/users/sameerp/data/part-0的复制备份数设为2,存储的BlockID分别为1、3:

上述任一台服务器宕机后,每个数据块都至少还有一个备份存在,不会影响对文件/users/sameerp/data/part-0的访问。

和RAID一样,数据分成若干Block后,存储到不同服务器,实现数据大容量存储,并且不同分片的数据能并行进行读/写操作,实现数据的高速访问。

副本存放:NameNode节点选择一个DataNode节点去存储block副本的过程,该过程的策略是在可靠性和读写带宽间权衡。

《Hadoop权威指南》中的默认方式:

Google大数据“三驾马车”的第一驾是GFS(Google 文件系统),而Hadoop的第一个产品是HDFS,分布式文件存储是分布式计算的基础。

这些年来,各种计算框架、各种算法、各种应用场景不断推陈出新,但大数据存储的王者依然是HDFS。

磁盘介质在存储过程中受环境或者老化影响,其存储的数据可能会出现错乱。

HDFS对存储在DataNode上的数据块,计算并存储校验和(CheckSum)。在读数据时,重新计算读取出来的数据的校验和,校验不正确就抛异常,应用程序捕获异常后就到其他DataNode上读取备份数据。

DataNode监测到本机的某块磁盘损坏,就将该块磁盘上存储的所有BlockID报告给NameNode,NameNode检查这些数据块还在哪些DataNode上有备份,通知相应的DataNode服务器将对应的数据块复制到其他服务器上,以保证数据块的备份数满足要求。

DataNode会通过心跳和NameNode保持通信,如果DataNode超时未发送心跳,NameNode就会认为这个DataNode已经宕机失效,立即查找这个DataNode上存储的数据块有哪些,以及这些数据块还存储在哪些服务器上,随后通知这些服务器再复制一份数据块到其他服务器上,保证HDFS存储的数据块备份数符合用户设置的数目,即使再出现服务器宕机,也不会丢失数据。

NameNode是整个HDFS的核心,记录着HDFS文件分配表信息,所有的文件路径和数据块存储信息都保存在NameNode,如果NameNode故障,整个HDFS系统集群都无法使用;如果NameNode上记录的数据丢失,整个集群所有DataNode存储的数据也就没用了。

所以,NameNode高可用容错能力非常重要。NameNode采用主从热备的方式提供高可用服务:

集群部署两台NameNode服务器:

两台服务器通过Zk选举,主要是通过争夺znode锁资源,决定谁是主服务器。而DataNode则会向两个NameNode同时发送心跳数据,但是只有主NameNode才能向DataNode返回控制信息。

正常运行期,主从NameNode之间通过一个共享存储系统shared edits来同步文件系统的元数据信息。当主NameNode服务器宕机,从NameNode会通过ZooKeeper升级成为主服务器,并保证HDFS集群的元数据信息,也就是文件分配表信息完整一致。

软件系统,性能差点,用户也许可接受;使用体验差,也许也能忍受。但若可用性差,经常出故障不可用,就麻烦了;如果出现重要数据丢失,那开发摊上大事。

而分布式系统可能出故障地方又非常多,内存、CPU、主板、磁盘会损坏,服务器会宕机,网络会中断,机房会停电,所有这些都可能会引起软件系统的不可用,甚至数据永久丢失。

所以在设计分布式系统的时候,软件工程师一定要绷紧可用性这根弦,思考在各种可能的故障情况下,如何保证整个软件系统依然是可用的。

## 6 保证系统可用性的策略

任何程序、任何数据,都至少要有一个备份,也就是说程序至少要部署到两台服务器,数据至少要备份到另一台服务器上。此外,稍有规模的互联网企业都会建设多个数据中心,数据中心之间互相进行备份,用户请求可能会被分发到任何一个数据中心,即所谓的异地多活,在遭遇地域性的重大故障和自然灾害的时候,依然保证应用的高可用。

当要访问的程序或者数据无法访问时,需要将访问请求转移到备份的程序或者数据所在的服务器上,这也就是 失效转移 。失效转移你应该注意的是失效的鉴定,像NameNode这样主从服务器管理同一份数据的场景,如果从服务器错误地以为主服务器宕机而接管集群管理,会出现主从服务器一起对DataNode发送指令,进而导致集群混乱,也就是所谓的“脑裂”。这也是这类场景选举主服务器时,引入ZooKeeper的原因。ZooKeeper的工作原理,我将会在后面专门分析。

当大量的用户请求或者数据处理请求到达的时候,由于计算资源有限,可能无法处理如此大量的请求,进而导致资源耗尽,系统崩溃。这种情况下,可以拒绝部分请求,即进行 限流 ;也可以关闭部分功能,降低资源消耗,即进行 降级 。限流是互联网应用的常备功能,因为超出负载能力的访问流量在何时会突然到来,你根本无法预料,所以必须提前做好准备,当遇到突发高峰流量时,就可以立即启动限流。而降级通常是为可预知的场景准备的,比如电商的“双十一”促销,为了保障促销活动期间应用的核心功能能够正常运行,比如下单功能,可以对系统进行降级处理,关闭部分非重要功能,比如商品评价功能。

HDFS是如何通过大规模分布式服务器集群实现数据的大容量、高速、可靠存储、访问的。

1.文件数据以数据块的方式进行切分,数据块可以存储在集群任意DataNode服务器上,所以HDFS存储的文件可以非常大,一个文件理论上可以占据整个HDFS服务器集群上的所有磁盘,实现了大容量存储。

2.HDFS一般的访问模式是通过MapRece程序在计算时读取,MapRece对输入数据进行分片读取,通常一个分片就是一个数据块,每个数据块分配一个计算进程,这样就可以同时启动很多进程对一个HDFS文件的多个数据块进行并发访问,从而实现数据的高速访问。关于MapRece的具体处理过程,我们会在专栏后面详细讨论。

3.DataNode存储的数据块会进行复制,使每个数据块在集群里有多个备份,保证了数据的可靠性,并通过一系列的故障容错手段实现HDFS系统中主要组件的高可用,进而保证数据和整个系统的高可用。

2. hadoop是做什么的

提供海量数据存储和计算的,需要java语言基础。

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。

特点

1、快照支持在一个特定时间存储一个数据拷贝,快照可以将失效的集群回滚到之前一个正常的时间点上。HDFS已经支持元数据快照。

2、HDFS的设计是用于支持大文件的。运行在HDFS上的程序也是用于处理大数据集的。这些程序仅写一次数据,一次或多次读数据请求,并且这些读操作要求满足流式传输速度。

HDFS支持文件的一次写多次读操作。HDFS中典型的块大小是64MB,一个HDFS文件可以被切分成多个64MB大小的块,如果需要,每一个块可以分布在不同的数据节点上。

3、阶段状态:一个客户端创建一个文件的请求并不会立即转发到名字节点。实际上,一开始HDFS客户端将文件数据缓存在本地的临时文件中。

3. hdfs的特点有哪些

hdfs的特点
一、hdfs的优点
1.支持海量数据的存储:一般来说,HDFS存储的文件可以支持TB和PB级别的数据。
2.检测和快速应对硬件故障:在集群环境中,硬件故障是常见性问题。因为有上千台服务器连在一起,故障率很高,因此故障检测和自动恢复hdfs文件系统的一个设计目标。假设某一个datanode挂掉之后,因为数据是有备份的,还可以从其他节点里找到。namenode通过心跳机制来检测datanode是否还存活。
3.流式数据访问:(HDFS不能做到低延迟的数据访问,但是HDFS的吞吐量大)=》Hadoop适用于处理离线数据,不适合处理实时数据。HDFS的数据处理规模比较大,应用一次需要大量的数据,同时这些应用一般都是批量处理,而不是用户交互式处理。应用程序能以流的形式访问数据库。主要的是数据的吞吐量,而不是访问速度。访问速度最终是要受制于网络和磁盘的速度,机器节点再多,也不能突破物理的局限。
4.简化的一致性模型:对于外部使用用户,不需要了解hadoop底层细节,比如文件的切块,文件的存储,节点的管理。一个文件存储在HDFS上后,适合一次写入,多次读取的场景。因为存储在HDFS上的文件都是超大文件,当上传完这个文件到hadoop集群后,会进行文件切块,分发,复制等操作。如果文件被修改,会导致重新触发这个过程,而这个过程耗时是最长的。所以在hadoop里,2.0版本允许数据的追加,单不允许数据的修改。
5.高容错性:数据自动保存多个副本,副本丢失后自动恢复。可构建在廉价的机器上,实现线性扩展。当集群增加新节点之后,namenode也可以感知,将数据分发和备份到相应的节点上。
6.商用硬件:Hadoop并不需要运行在昂贵且高可靠的硬件上。它是设计运行在商用硬件(在各种零售店都能买到的普通硬件)的集群上的,因此至少对于庞大的集群来说,节点故障的几率还是非常高的。HDFS遇到上述故障时,被设计成能够继续运行且不让用户察觉到明显的中断。
二、HDFS缺点(局限性)
1、不能做到低延迟数据访问:由于hadoop针对高数据吞吐量做了优化,牺牲了获取数据的延迟,所以对于低延迟数据访问,不适合hadoop。对于低延迟的访问需求,HBase是更好的选择。
2、不适合大量的小文件存储 :由于namenode将文件系统的元数据存储在内存中,因此该文件系统所能存储的文件总数受限于namenode的内存容量。根据经验,每个文件、目录和数据块的存储信息大约占150字节。因此,如果有一百万个小文件,每个小文件都会占一个数据块,那至少需要300MB内存。如果是上亿级别的,就会超出当前硬件的能力。
3、修改文件:对于上传到HDFS上的文件,不支持修改文件。Hadoop2.0虽然支持了文件的追加功能,但是还是不建议对HDFS上的文件进行修改。因为效率低下。HDFS适合一次写入,然后多次读取的场景。
4、不支持用户的并行写:同一时间内,只能有一个用户执行写操作。

4. hadoop与传统的关系型数据库(如oracle)相比,有什么优势及劣势

hadoop的hdfs支持海量数据量存储 maprece支持对海量数据的分布式处理x0dx0aoracle虽然可以搭建集群 但是当数据量达到一定限度之后查询处理速度会变得很慢 且对机器性能要求很高x0dx0a其实这两个东西不是同类 hadoop是一个分布式云处理架构,倾向于数据计算 而oracle是一个关系型数据库,倾向于数据存储。要说比较可以比较hbase与oracle。x0dx0ahbase是一种nosql数据库,列式数据库,支持海量数据存储,支持列的扩展,但是查询操作较复杂,不如oracle这类关系型数据库简单,且只支持一个索引,但是Hbase在表结构设置合理情况下,查询速度跟数据量大小没有太大关系,即数据量的大小不会影响到查询速度,顺便说句Hbase查询速度可以达到ms级

5. hdfs文件系统可以代替mysql吗

不能。
不是一个概念。mysql是传统的关系型数据库。hdfs是nosql hadoop的存储方式。hdfs是分布式的自带高可用存储,文件格式跟mysql的存储引擎不一样。大数据离线存储,当然是hdfs更合适。通过Map/Rece进行批处理递送到Apache Hadoop仍然是中枢环节。但随着要从“超思维速度“分析方面获取竞争优势的压力递增,因此Hadoop(分布式文件系统)自身经历重大的发展。
科技的发展允许实时查询,如Apache Drill, Cloudera Impala和Stinger Initiative正脱颖而出,新一代的资源管理Apache YARN 支持这些。为了支持这种日渐强调实时性操作,我们正发布一个新MySQL Applier for Hadoop(用于Hadoop的MySQL Applier)组件。它能够把MySQL中变化的事务复制到Hadoop / Hive / HDFS。Applier 组件补充现有基于批处理Apache Sqoop的连接性。

6. Hbase与HDFS是个什么关系

他们的关系是:hbase是一个内存数据库,而hdfs是一个存储空间;是物品和房子的关系。

hdfs只是一个存储空间,他的完整名字是分布式文件系统。从名字可知他的作用了。
hbase是一个内存数据库,简单点说hbase把表啊什么的存在hdfs上。

7. HDFS由什么组成

大数据平台包含了采集层、存储层、计算层和应用层,是一个复杂的IT系统,需要学会Hadoop等分布式系统的开发技能。
1.1采集层:Sqoop可用来采集导入传统关系型数据库的数据、Flume对于日志型数据采集,另外使用Python一类的语言开发网络爬虫获取网络数据;
1.2储存层:分布式文件系统HDFS最为常用;采用了主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;集群中的DataNode管理存储的数据。
1.3计算层:有不同的计算框架可以选择,常见的如MapRece、Spark等,一般来讲,如果能使用计算框架的“原生语言”,运算效率会最高(MapRece的原生支持Java,而Spark原生支持Scala);
1.4应用层:包括结果数据的可视化、交互界面开发以及应用管理工具的开发等,更多的用到Java、Python等通用IT开发前端、后端的能力;

8. 怎样将数据库数据写入到hdfs中

如下面这个shell脚本
#Oracle的连接字符串,其中包含了Oracle的地址,SID,和端口号
CONNECTURL=jdbc:oracle:thin:@20.135.60.21:1521:DWRAC2
#使用的用户名
ORACLENAME=kkaa
#使用的密码
ORACLEPASSWORD=kkaa123
#需要从Oracle中导入的表名
oralceTableName=tt
#需要从Oracle中导入的表中的字段名
columns=AREA_ID,TEAM_NAME
#将Oracle中的数据导入到HDFS后的存放路径
hdfsPath=apps/as/hive/$oralceTableName
#执行导入逻辑。将Oracle中的数据导入到HDFS中
sqoop import --append --connect $CONNECTURL --username $ORACLENAME --password $ORACLEPASSWORD --target-dir $hdfsPath --num-mappers 1 --table $oralceTableName --columns $columns --fields-terminated-by '\001'
执行这个脚本之后,导入程序就完成了。

9. Hbase与HDFS是什么关系

HDFS是GFS的一种实现,他的完整名字是分布式文件系统,类似于FAT32,NTFS,是一种文件格式,是底层的,Hadoop HDFS为HBase提供了高可靠性的底层存储支持。

HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统。

(9)hdfs数据库扩展阅读:

Hadoop 中各模块的作用:

1、Hadoop HDFS为HBase提供了高可靠性的底层存储支持。

2、Hadoop MapRece为HBase提供了高性能的计算能力。

3、Zookeeper为HBase提供了稳定服务和failover机制。

4、Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变得非常简单。

5、Sqoop则为HBase提供了方便的RDBMS(关系型数据库)数据导入功能,使得传统数据库数据向HBase中迁移变得非常方便。

热点内容
数据库表设计教程 发布:2025-09-16 10:50:47 浏览:340
朋友圈缓存如何清除 发布:2025-09-16 10:49:57 浏览:438
sqlserver数据类型 发布:2025-09-16 10:41:16 浏览:732
如何配置全站时间同步系统 发布:2025-09-16 10:19:13 浏览:167
java解析json文件 发布:2025-09-16 10:10:41 浏览:968
车配置字母怎么看 发布:2025-09-16 10:09:32 浏览:408
烟台电脑服务器维修 发布:2025-09-16 10:08:45 浏览:268
编译命令cl 发布:2025-09-16 09:57:21 浏览:520
小君直播密码是多少 发布:2025-09-16 09:25:46 浏览:610
用中文编译的编程软件 发布:2025-09-16 09:04:37 浏览:152