在多版本并发控制方法中经常采用异地更新技术,即不是直接在旧数据项上修改,而是先创建一个数据项的新版本,然后让新版本取代旧版本。使用MVCC的好处是,读请求不会因为存在写操作而被阻塞。数据库中的只读访问常常检索的是已被提交的数据项版本。系统的开销主要发生在相同数据项的多个版本上。有一种称为快照隔离的技术用于实现支持MVCC的数据库。SI的开销虽然小,但弱化了可串行化。SI包含以下两个重要性质。......
2023-10-28
HDFS(Hadoop distributed file system)是Hadoop架构的核心,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。它所具备的高容错性、高可靠性、高可扩展性、高获得性、高吞吐率等特征,为海量数据提供了不怕故障的存储,为超大数据集(large data set)的应用处理带来了很多便利。
HDFS源于Google公司在2003年10月份发表的GFS(Google file system)论文。它其实就是GFS的一个克隆版本。
大家之所以热衷于选择用HDFS存储数据,因为HDFS具有以下优点。
(1)高容错性。数据自动保存多个副本。它通过增加副本的形式,提高容错性。某一个副本丢失以后,它可以自动恢复,这是由HDFS内部机制实现的。
(2)适合批处理。它迁移计算而不是移动数据。它会把数据位置暴露给计算框架。
(3)适合大数据处理。处理数据达到GB、TB甚至PB级别的数据。能够处理百万规模以上的文件数量,能够处理1000节点的规模。
(4)流式文件访问。一次写入,多次读取。文件一旦写入,就不能修改,只能追加。
(5)可构建在廉价机器上。它通过多副本机制提高可靠性,它提供了容错和恢复机制,比如某个副本丢失,可以通过其他副本来恢复。
当然,HDFS也有缺点,主要包括以下几方面。
(1)低延时的数据访问。低延时(如毫秒级)地存储数据、毫秒级以内读取数据是很难做到的。它适合高吞吐率的场景,就是在某一时间内写入大量的数据。
(2)小文件存储。存储大量小文件(小文件是指小于HDFS系统的块大小的文件(默认为64 MB))的话,会占用NameNode大量的内存来存储文件、目录和块信息。这样是不可取的,因为NameNode的内存是有限的。小文件存储的(磁盘)寻道时间会超过读取时间,违反了HDFS的设计目标。
(3)并发写入,文件随机修改。一个文件只能有一个写操作,不允许多个线程同时写。仅支持数据追加(append),不支持文件的随机修改。
(4)HDFS如何存储数据。
HDFS采用Master/Slave的架构来存储数据(见图18.6),这种架构主要由四部分组成,分别为Client、NameNode、DataNode和Secondary NameNode。
(1)Client:就是客户端,主要功能主要包括以下几方面。
●文件切分。文件上传HDFS的时候,Client将文件切分成一个一个的块,然后进行存储。
●与NameNode交互,获取文件的位置信息。
●与DataNode交互,读取或者写入数据。
●Client提供一些命令来管理HDFS,比如启动或者关闭HDFS。
●Client可以通过一些命令来访问HDFS。
(www.chuimin.cn)
图18.6 HDFS的架构图
(2)NameNode:是一个主管、管理者,主要负责以下几方面的工作。
●管理HDFS的名称空间。
●管理数据块映射信息。
●配置副本策略。
●处理客户端读/写请求。
(3)DataNode:就是slave。NameNode下达命令,DataNode执行实际的操作。它主要负责以下几方面的工作。
●存储实际的数据块。
●执行数据块的读/写操作。
(4)Secondary NameNode:系统中往往会设置Secondary NameNode。这并非NameNode的热备。当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务,但能辅助NameNode,分担其工作任务。
HDFS如何写入文件,主要包括以下几步。
●客户端通过调用类Distributed FileSystem的create方法,创建一个新的文件。
●DistributedFileSystem通过RPC(远程过程调用)调用NameNode,去创建一个没有块关联的新文件。创建前,NameNode会做各种校验,比如文件是否存在、客户端有无权限去创建等。如果通过校验,NameNode就会记录下新文件,否则就会给出I/O异常消息。
●前两步结束后会返回FSDataOutputStream对象,与读文件相似,FSDataOutputStream被封装成DFSOutputStream,DFSOutputStream可以协调NameNode和Data Node。客户端开始写数据到DFSOutputStream,DFSOutputStream会把数据切分成一个个小数据包(packet),然后排成数据队列(data queue)。
●DataStreamer会去处理数据队列(data queue),先询问NameNode这个新的块最适合存储在哪几个Data Node里,比如重复数是3,那么就找到3个最适合的Data Node,把它们排成一个流水线(pipeline)。DataStreamer把数据包按队列输出到管道的第一个DataNode中,第一个Data Node又把数据包输出到第二个DataNode中,依此类推。
●DFSOutputStream还有一个队列叫ack队列,也是由数据包组成的,等待Data Node收到并响应,当流水线中的所有Data Node都表示已经收到的时候,这时ack队列才会把对应的数据包移除掉。
●客户端完成写数据后,调用close方法关闭写入流。
●DataStreamer把剩余的包都输入到流水线里,然后等待ack信息,收到最后一个ack后,通知Data Node将文件标示为已完成。
NameNode如何选择在哪个Data Node存储副本(replication)?需要对可靠性、写入带宽和读取带宽进行权衡。
有关分布式数据库技术的文章
在多版本并发控制方法中经常采用异地更新技术,即不是直接在旧数据项上修改,而是先创建一个数据项的新版本,然后让新版本取代旧版本。使用MVCC的好处是,读请求不会因为存在写操作而被阻塞。数据库中的只读访问常常检索的是已被提交的数据项版本。系统的开销主要发生在相同数据项的多个版本上。有一种称为快照隔离的技术用于实现支持MVCC的数据库。SI的开销虽然小,但弱化了可串行化。SI包含以下两个重要性质。......
2023-10-28
SVN是一套版本控制系统,简单地说就是一套自动备份系统。这个比喻虽然不太恰当,但使用SVN完全不用担心数据的丢失,只要从一开始就使用SVN,哪怕项目快结束了,也能找到刚开始时的文件内容。事实上SVN远不止备份那么简单,之所以这样比喻,是为了让没接触过SVN的读者有个直观印象,方便接下来的学习。图1-21 SVN流程图图1-21简单地演示了SVN多人协同开发时的流程。......
2023-11-04
Oracle公司的OPS环境比一般的(单实例)Oracle环境复杂得多。不同结构下的OPS的实施略有不同。图14.23OPS体系结构为了利用这些特性,需要专业人员合适的设计以及恰当的手工配置。下面对有些关键问题进行简单讨论,讨论中会涉及一些Oracle系统专用的术语,读者可参阅Oracle公司的相关文档。DLM与Oracle进程一起工作并相互通信。DLM相关的初始化参数在每个实例的SGA[12]中分配必要的结构以处理消息机制、封锁与实例相关的Cache管理,这样就为各种Oracle进程操纵提供了基础。......
2023-10-28
因大型飞轮的铸壁厚度大,特别是设有平衡铁的特重型飞轮,在铸型中的冷却速度很缓慢,要达到上述性能要求并非易事,必须选择适当的合金元素及其加入量。飞轮最重要的工作部位是轮缘上的传动齿区及中央与主轴连接的内法兰区,这些部位一般不允许有任何铸造缺陷。保温时间视飞轮的最大厚度而定,一般可取每20mm延长1h。......
2023-07-02
以提高效率为目的的先进磨削方法常见的有高速磨削、强力磨削、超精密磨削、镜面磨削以及砂带磨削。与砂轮磨削类似,砂带磨削时,其磨粒对工件既有切削作用,又有刻划和滑擦作用。因此,砂带磨削材料切除率高,磨削表面质量也好。目前,在工业发达国家,砂带磨削量已占磨削加工量的一半左右。图8-13砂带磨削图8-14砂带组成......
2023-07-01
传统的食品包装主要是通过物理方式使被包装食品与外界相对隔绝而保持食品品质的,这种静态的包装方式称为惰性包装。活性包装技术是通过包装材料与包装内部的气体及食品之间的相互作用,来有效地延长商品的货架期或改善食品的安全性和感官性质,并保持食品的品质。活性包装作为一种新型的包装技术,大大促进了食品工业的发展,并展示出了其良好的应用前景。而活性包装技术正是将这些活性包装系统通过各种形式应用于食品包装上。......
2023-06-21
查询优化的本地化分层聚焦于将查询转换成本地数据。一个全局关系可以通过应用重构规则来重构,从而导出一个关系代数程序,其操作数是数据片,这个程序称为本地化程序。将分布查询分配到节点上的自然办法是生成查询,让每个全局关系使用本地化程序来代替。这可以看成是在一棵分布查询的算符树上将叶子用与本地化程序对应的子树来替代。数据水平分片关系的连接也可以简化。......
2023-10-28
与数据库安全系统打交道的人员可以分为两类:数据库管理员和普通用户。DBA要对安全负责,所以他(们)要创建授权规则,定义谁可以使用哪部分数据,以及如何使用。图13.1数据库安全系统由图13.1可知,数据库安全系统里存放着授权规则,在每次数据库存取时强制满足其规则。从完整性方面考虑,数据库安全可以包含以下两方面。1)设计阶段的数据库安全在设计阶段必须关注数据库的安全性。DBA负责处理整个数据库系统里的用户账号和口令。......
2023-10-28
相关推荐