分布式存储技术及容灾方案_第1页
分布式存储技术及容灾方案_第2页
分布式存储技术及容灾方案_第3页
分布式存储技术及容灾方案_第4页
分布式存储技术及容灾方案_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、分布式存储技术及容灾方案课程大纲分布式存储技术Hadoop概念Hadoop发展历史Hadoop架构HDFS架构MapReduce架构Hadoop实验Hadoop灾备分布式存储分布式存储系统主要包括分布式文件系统与分布式数据库系统。文件系统与数据库系统区别。文件系统用文件将数据长期保存在外存上,数据库系统用数据库统一存储数据;文件系统中的程序和数据有一定的联系,数据库系统中的程序和数据分离;文件系统用操作系统中的存取方法对数据进行管理,数据库系统用DBMS统一管理和控制数据;文件系统实现以文件为单位的数据共享,数据库系统实现以记录和字段为单位的数据共享。分布式存储大规模数据处理的问题1990年,

2、普通的硬盘驱动器可存储1370MB数据并拥有4.4 MB/s的传输速度 ,只需五分钟的时间就可以读取整个磁盘的数据。目前,1TB级别的磁盘驱动器是很正常的,但是数据传输的速度却在100MB/s左右。所以它需要花两个半小时以上的时间读取整个驱动器的数据,从一个驱动器上读取所有的数据需要很长的时间,写甚至更慢。如何解决?一个很简单的减少读取时间的办法是同时从多个磁盘上读取数据。试想一下,我们拥有100个磁盘,每个存储百分之一的数据。如果它们并行运行,那么不到两分钟我们就可以读完所有的数据。Hadoop是什么?Hadoop是一种针对大数据分析的开源分布式计算平台,是由Apache软件基金会主席Dou

3、g Cutting在雅虎时创建。一个分布式文件系统和并行执行环境,让用户便捷地处理海量数据。目前Yahoo是最主要的贡献者。Hadoop应用YahooYahoo目前有超过38000台服务器,有超过4000个以上的服务器集群,数据总量达到了170PB,每日的数据增量在10TB以上。Yahoo的Hadoop应用包含有搜索、日志处理(Analytics, Reporting, Buzz)、用户建模、内容优化,垃圾邮件过滤器以及广告计算等。Hadoop应用Yahoo以网络分析为例,Yahoo目前有超过100亿个网页,1PB的网页数据内容,2万亿条链接,每日面临这300TB的数据输出。“在应用Hadoo

4、p前,实施这一过程我们大概需要1个月的时间,但应用后仅需要1周时间”。再以Yahoo搜索为例,“我们的服务器上保留有用户三年来的搜索记录,这个数据是由超过 10TB的自然语言文本库所组成”,“如果数据重整,我们在应用Hadoop前需要1个月的时间进行处理,而在有了Hadoop后仅仅需要30分钟。Hadoop应用Facebook随着Facebook网站的使用量增加,网站上需要处理和存储的日志和维度数据激增。在这种环境下对任何一种数据处理平台的一个关键性要求是它必须具有快速的支持系统扩展的应变能力。此外,由于工程资源有限,所以系统必须是可信的,并且易于使用和维护。Facebook正在运行世界第二大

5、Hadoop集群系统Facebook在Hadoop上存放的数据超过了2PB;每天加载的数据超过10TB;Hadoop系统具有2400个内核,大约9TB的内存。Hadoop应用淘宝淘宝是在国内最先使用Hadoop的公司之一。淘宝网目前有会员2亿左右,日均UV高达4000万,日交易量高达10亿元,每天产生大量的数据,所以部署了一系列不同规模的Hadoop集群。淘宝生产所使用的Hadoop集群为目前国内规模最大的Hadoop集群之一。Hadoop集群规模总容量为14.1PB,利用率77.09%共有1300台机器每天处理18000道Hadoop作业用户数474人,用户组38个扫描数据:约500TB/天

6、Hadoop行业应用1.在线旅游:目前Cloudera的Hadoop架构正在为80%左右的全球在线旅游预定服务。Orbitz CEO Barney Harford表示,受益于Hadoop架构,他们极为轻松地实现了诸多的数据分析工作,并在其中得出“MAC用户比Windows用户愿意支付20美元的成本来预订酒店”,可以帮助发现以前从来没有发现的数据点,进而使分析和挖掘成为了可能。2.移动数据:Cloudera为“70%美国智能手机”提供服务,通过无线方式存储和处理移动数据,以及有关市场份额的数学可以帮助锁定客户。3.电子商务:Cloudera第三个市场是美国超过10,000,000家网上商店。Ha

7、doop行业应用4.能源发现:采用Hadoop来对数据进行排序和整理,而这些数据全部来自从海洋深处地震时产生的数据,而其背后有可能意味着石油储量。5.能源节省:使用Hadoop来提升电力服务,尽量为用户节省在资源方面的投入。某些特定功能,如精确并长期的费用预测如果没有Hadoop几乎很难完成。Opower现在管理着30TB的信息,其中包括来自5000万用户(横跨60个公共事业部)能源数据,气象与人口方面的公共及私人数据,历史信息,地理数据及其他。这些都是通过超过20个MySQL数据库和一个Hadoop集群来存储和处理的。Hadoop行业应用6.基础设施管理:随着更多的公司从服务器、交换机及其他

8、IT设备商收集并分析数据,Hadoop更有市场。NetApp收集设备日志(现在已经超过1PB的容量了),并将它们存储在Hadoop中。7.图像处理:利用Hadoop来存储和处理高来自卫星捕捉的高分辨率图像,并尝试将这些信息及图像与地理格局的变化相对应。8.欺诈检测:在金融服务机构和情报机构中,欺诈检测一直都是关注的重点。Zions Bancorporation利用Hadoop来存储所有数据,并对客户交易和现货异常进行判断,对可能存在欺诈行为提前预警的。Hadoop行业应用9.IT安全:如基础设施管理一样,企业通过使用Hadoop来处理机器产生的数据,以识别恶意软件和网络攻击模式。ipTrust

9、通过使用Hadoop来指定IP地址的名誉得分(在0-1之间的得分,O等于没有防线或未知的风险),从而使其他安全产品可以判断是否接受来自这些来源的通信,IBM和HP都使用ipTrust的安全产品。10.医疗保健:Apixio利用Hadoop平台开发了语义分析服务,可以对病人的健康提供医生、护士、及其他相关人士的回答。Apixio试图通过对医疗记录进行先进的技术分析,与一个简单的基于云计算的搜索引擎来帮助医生迅速了解病人。Hadoop特点扩容能力(Scalable):能可靠地(Reliably)存储和处理千兆字节(PB)数据。成本低(Economical):可以通过普通机器组成的服务器群来分发以及

10、处理数据。这些服务器群总计可达数千个节点。高效率(Efficient):通过分发数据,Hadoop可以在数据所在的节点上并行地(Parallel)处理它们,这使得处理非常的快速。可靠性(Reliable):Hadoop能自动地维护数据的多份复制,并且在任务失败后能自动地重新部署(Redeploy)计算任务。Hadoop生态系统Hadoop成员组成Apache Hadoop 是一个用java语言实现的软件框架,在由大量计算机组成的集群中运行海量数据的分布式计算,它可以让应用程序支持上千个节点和PB级别的数据。Hadoop corePIGHBaseZooKeeperHadoop成员组成Hadoop

11、 core:Hadoop的核心子项目,提供了一个分布式文件系统(HDFS)和支持MapReduce的分布式计算。Hbase:建立在Hadoop内核之上,提供可靠的,可扩展的分布式数据库。 ZooKeeper:一个高效的,可扩展的协调系统。分布式应用可以使用ZooKeeper来存储和协调关键共享状态。PIG:建立于Hadoop内核之上,是一种支持并行计算运行框架的高级数据流语言。 HDFS系统架构HDFS主要组件NameNodeDataNode存储元数据存储文件内容元数据保存在内存中文件内容保存在磁盘保存文件、Block、DataNode之间的映射关系维护了Block id到DataNode本地

12、文件的映射关系NameNodeNameNode是一个中心服务器,单一节点,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。NameNode负责文件元数据的操作,DataNode负责处理文件内容的读写请求,跟文件内容相关的数据流不经过NameNode,只会询问它跟那个DataNode联系,否则NameNode会成为系统的瓶颈。副本存放在哪些DataNode上由NameNode来控制,根据全局情况做出块放置决定,读取文件时NameNode尽量让用户先读取最近的副本,降低带块消耗和读取时延。NameNode全权管理数据块的复制,它周期性地从集群中的每个DataNode接收心跳

13、信号和块状态报告(BlockReport)。接收到心跳信号意味着该DataNode节点工作正常。块状态报告包含了一个该DataNode上所有数据块的列表。 DataNode一个数据块在DataNode以文件存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。DataNode启动后向NameNode注册,通过后周期性(1小时)的向NameNode上报所有的块信息。 心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点

14、不可用。集群运行中可以安全加入和退出一些机器。文件存储文件存储文件切分成块(默认大小64M),以块为单位,每个块有多个副本存储在不同的机器上,副本数可在文件生成时指定(默认3)。NameNode是主节点,存储文件的元数据如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表以及块所在的DataNode等等。DataNode在本地文件系统存储文件块数据,以及块数据的校验和。可以创建、删除、移动或重命名文件,当文件创建、写入和关闭之后不能修改文件内容。实例:HDFS写文件Write packetCreate file Write packetWrite packetS

15、end ackSend ackSend ackClose file实例:HDFS读文件Read blockOpen fileClose fileGet block locationHDFS读文件流程客户端联系NameNode,得到所有数据块信息,以及数据块对应的所有数据服务器的位置信息。尝试从某个数据块对应的一组数据服务器中选出一个,进行连接。数据被一个包一个包发送回客户端,等到整个数据块的数据都被读取完了,就会断开此链接,尝试连接下一个数据块对应的数据服务器,整个流程,依次如此反复,直到所有想读的都读取完了为止。HDFS可靠性保障一个名字节点和多个数据节点数据复制(冗余机制)存放的位置(机架

16、感知策略)故障检测数据节点心跳包(检测是否宕机)块报告(安全模式下检测)数据完整性检测(校验和比较)名字节点(日志文件,镜像文件)空间回收机制Hadoop实验实验环境三台PC机,Linux操作系统,各主机对应的ip地址:1 ubuntu12 ubuntu23 ubuntu3Hadoop安装包(/core/releases.html)安装jdk 1.5以上版本Hadoop实验Hadoop安装在所有的机器上建立相同的用户,例如:gridSSH配置,实现在机器之间执行指令的时候不需要输入密码在ubuntu1(准备设为NameNode)上生成密钥对,执行$ssh-keygen -t rsa,然后一路回

17、车,就会按照默认的选项将生成的密钥对保存在.ssh/id_rsa文件中。执行:$cd /.ssh$cp id_rsa.pub authorized_keys$scp authorized_keys ubuntu2:/home/grid/.ssh$scp authorized_keys ubuntu3:/home/grid/.sshHadoop实验在ubuntu1上配置Hadoop解压缩,执行:$tar -zxvf ./hadoop-0.19.1.tar.gz编辑conf/hadoop-site.xml编辑conf/master,修改为master的主机名(每个主机名一行)ubuntu1编辑co

18、nf/slaves,加入所有slaves的主机名ubuntu2ubuntu3Hadoop实验在其它机器上配置把Hadoop安装文件复制到其他机器上$ scp -r hadoop-0.19.1 ubuntu2:/home/grid$ scp -r hadoop-0.19.1 ubuntu3:/home/grid编辑所有机器的conf/hadoop-env.sh文件,将JAVA_HOME变量设置为各自JDK安装的根目录,不同机器可以使用不同的JAVA版本查看Hadoop运行状态HDFS状态:50070/MapReduce状态:50030/查看文件系统情况bin/Hadoop dfsadmin -r

19、eport列出文件系统目录bin/Hadoop fs ls hdfs:/:9100/查看Hadoop运行状态Hadoop实验Hadoop实验Hadoop实验数据分布Hadoop实验关掉一个DataNode Hadoop实验关掉两个DataNode HBase简介HBase是一个分布式的、多版本的、面向列的开源数据库利用Hadoop HDFS作为其文件存储系统,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。利用Hadoop MapReduce来处理HBase中的海量数据利用Zookeeper作为协同服务。HBase中表的特点大:一个表可以有上亿行,上百万列(列多时,插入变慢)面向列

20、:面向列(族)的存储和权限控制,列(族)独立检索。稀疏:对于为空的列,并不占用存储空间,表可以设计的非常稀疏。每个cell中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;HBase中的数据都是字符串,没有类型;HBase特点强一致性同一行数据读写只在同一台Region Server上进行水平伸缩Region的自动分裂以及Master的balance只用增加Datanode机器即可增加容量只用增加Region Server机器即可增加读写吞吐量行事务同一行的列的写入是原子的和Hadoop无缝集成Hadoop分析后的结果可直接写入HBase存放在HBase的数据可直接通过

21、Hadoop来进行分析HBase对比HBaseRDBMS数据类型只有字符串丰富的数据类型数据操作简单的增删改查各种各样的函数,表连接存储模式基于列存储基于表格结构和行存储数据保护更新后旧版本仍然会保留替换可伸缩性轻易的进行增加节点,兼容性高需要中间层,牺牲功能HBase体系结构HBase体系结构Client 包含访问HBase的接口并维护cache来加快对HBase的访问Zookeeper 保证任何时候,集群中只有一个master存贮所有Region的寻址入口。实时监控Region server的上线和下线信息。并实时通知给Master存储HBase的schema和table元数据Master

22、 为Region server分配region负责Region server的负载均衡发现失效的Region server并重新分配其上的region管理用户对table的增删改查操作Region Server Region server维护region,处理对这些region的IO请求Region server负责切分在运行过程中变得过大的region逻辑视图和物理视图HBase以表的形式存储数据。表由行和列组成。列划分为若干个列族(row family)Row Key Time Stamp CF contents: CF anchor: CF mime: t9 “fashion.360bu

23、y t8 “tuan.360buy t6 . text/html t5 . t3 . Row Key Time Stamp Column“contents: t6 . t5 . t3 . 逻辑视图物理视图Row Key Time Stamp Column anchor: t9 anchor: “fashion.360buy t8 anchor: “tuan.360buy Row Key Time Stamp Column mime: t6 text/html HBase每个列族存储为一个StoreHBase数据库每个Column Family对应一张存储表,表格的Row Key、TimeSta

24、mp和Column确定每条记录的唯一索引。Row KeyTime StampColumn ContentsColumn AnchorColumn “mime”my.look.ca“n.www”T9CNNT8CNN.COMT6“. “Text/htmlT5“. “t3“. “行键列列HBase数据库Row KeyTime StampColumn ContentsColumn AnchorColumn “mime”my.look.ca“n.www”T9CNNT8CNN.COMT6“. “Text/htmlT5“. “t3“. “族标签HBase数据备份/容灾方案一、Distcp 可以使用distc

25、p命令copy hdfs文件的方式实现备份时,备份时需要禁用备份表确保copy时该表没有数据写入。对于在线服务的hbase集群,该方式不可用,通过distcp文件恢复hbase表时需使用bin/hbase org.jruby.Main bin/add_table.rb/hbase/testable命令从hdfs目录中恢复表的元数据,然后重启hbase。HBase数据备份/容灾方案二、CopyTable执行命令前,需先创建表。支持时间区间、row区间,改变表名称,改变列簇名称,指定是否copy删除数据等功能,例如:hbase org.apache.hadoop.hbase.mapreduce.C

26、opyTable -starttime=1265875194289 -endtime=1265878794289 -peer.adr=dstClusterZK:2181:/hbase -families=myOldCf:myNewCf,cf2,cf3 TestTable1、同一个集群不同表名称hbase org.apache.hadoop.hbase.mapreduce.CopyTable -=tableCopy srcTable2、跨集群copy表Hbase org.apache.hadoop.hbase.mapreduce.CopyTable -peer.adr=dstClusterZK:

27、2181:/hbase srcTable该方式,原表、目标表的名称相同HBase数据备份/容灾方案三、Export/Import通过Export导出数据到目标集群的hdfs,再在目标集群执行import导入数据,Export支持指定开始时间和结束时间,因此可以做增量备份,在导出时可以指定version,starttime,endtime等参数,并且可以指定是否压缩,比如:hbase org.apache.hadoop.hbase.mapreduce.Export test4 hdfs:/t2-namenode:9000/test4_90 1 1415693812520 141569491252

28、0Export导出工具与CopyTable一样是依赖hbase的scan读取数据。HBase数据备份/容灾方案四、Snapshot开启快照功能,需要在hbase-site.xml文件中添加如下配置项:hbase.snapshot.enabledtrue在hbase shell中使用clone_snapshot, delete_snapshot, list_snapshots, restore_snapshot, snapshot命令可对快照进行操作,需要注意的是:如果该表开启了replication功能实现主从同步则在使用restore_snapshot功能对主表进行恢复时,必须先停止repl

29、ication功能并且redo the bootstrap,因为replication是基于WAL日志实现的,而snapshot是直接在hdfs层面不是基于hbase的put、delete等API进行的,不会写WAL日志。HBase数据备份/容灾方案在创建snapshot后,可以通过Export Snapshot工具把快照导出到另外一个集群,实现数据备份或者数据迁移,Export Snapshot工具的用法如下:执行该命令后,hdfs会把test4_snapshot_201411111422文件夹copy到/hbase/.hbase-snapshot文件下,进入t2-namenode这个hba

30、se集群,执行list_snapshots会看到有一个快照:test4_snapshot_201411111422,通过命令clone_snapshot可以把该快照copy成一个新的表。在使用snapshot把一个集群的数据copy到新集群后,应用程序开启双写,然后可以使用Export工具把快照与双写之间的数据导入到新集群,从而实现数据迁移,为保障数据不丢失,Export导出时指定的时间范围可以适当放宽。HBase数据备份/容灾方案五、Replication通过replication机制可以实现hbase集群的主从模式,具体步骤如下:1、如果主从hbase集群共用一个集群,则zookeeper

31、.znode.parent不能都是默认的hbase,可以配置为hbase-master和hbase-slave2、在主hbase集群的hbase-site.xml中添加配置项:(1)配置主集群每次向从集群发送的entry最大的个数,默认值25000(2)配置主集群每次向从集群发送的entry的包的最大值大小,默认为64M(3)配置主集群使用的从集群的RS的数据百分比,默认为0.1,需调整为1,充分利用从集群的RS(4)配置主集群在RS宕机多长时间后进行failover,默认为2秒(5)配置从事replication的线程数,默认为1HBase数据备份/容灾方案3、在从hbase集群的hbase

32、-site.xml中添加:hbase.replicationtrue4、进入主集群的shell,执行:add_peer ID CLUSTER_KEY5、在从集群中创建一个与master集群相同的表6、修改表定义,开启复制功能disable your_table alter your_table, NAME = family_name, REPLICATION_SCOPE = 1enable your_table可以通过工具VerifyReplication对复制的数据一致性进行校验,需在主集群执行,例如:hbase org.apache.hadoop.hbase.mapreduce.repli

33、cation.VerifyReplication -starttime=1265875194289 -stoptime=2265878794289 1 test4TairTair是淘宝开发的一个分布式 key/value 存储引擎。Tair 分为持久化和非持久化两种使用方式,非持久化的Tair可以看成是一个分布式缓存,持久化的Tair 将数据存放于磁盘中。为了解决磁盘损坏导致数据丢失,Tair可以配置数据的备份数目,Tair自动将一份数据的不同备份放到不同的主机上,当有主机发生异常,无法正常提供服务的时候,其于的备份会继续提供服务。Tair总体结构Tair作为一个分布式系统,是由一个中心控制节

34、点和一系列的服务节点组成。我们称中心控制节点为config server,服务节点是data server。config server负责管理所有的data server,维护data server的状态信息;data server对外提供各种数据服务,并以心跳的形式将自身状况汇报给config server。通常情况下,一个集群中包含2台config server及多台data server。config server是控制点,而且是单点,目前采用一主一备的形式来保证其可靠性。所有的data server地位都是等价的。Tair总体结构Tair总体结构Config Server的功能1) 通

35、过维护和data server心跳来获知集群中存活节点的信息2) 根据存活节点的信息来构建数据在集群中的分布表3) 提供数据分布表的查询服务4) 调度data server之间的数据迁移、复制Data Server的功能1) 提供存储引擎2) 接受client的put/get/remove等操作3) 执行数据迁移,复制等4) 插件:在接受请求的时候处理一些自定义功能5) 访问统计Tair容灾部署双机房单集群单份Tair集群部署在两个机房中(也就是该Tair集群的机器分别在两个机房), 数据存储份数为1。Tair容灾部署双机房单集群双份Tair集群部署在2个机房中,数据保存2份在不同的数据服务器

36、。该类型的集群部署方式与双机房单集群单份数据的部署方式一样。其不同之处,数据保存份数不一样。Tair容灾部署双机房主备集群存在一个主集群和一个备份集群,分别在两个机房中。备集群会自动同步数据,保证两个机房数据的最终一致性。当一个机房发生故障后,备集群会自动切换成主集群,提供服务,保证系统可用性。Hadoop灾备由于namenode 是HDFS的大脑,而这个大脑又是单点,如果大脑出现故障,则整个分布式存储系统就无法使用。如何应对DataNode故障?如何应对Client故障?如何应对NameNode故障?Secondary NameNode机制Backup Node机制Facebook Avat

37、ar机制应对DataNode故障DataNode正常服务,坏掉的磁盘上的数据尽快通知NameNode。问:NameNode怎么知道DataNode挂掉了?答:DataNode每3秒钟向NameNode发送心跳,如果10分钟DataNode没有向NameNode发送心跳,则NameNode认为该DataNode已经dead,NameNode将取出该DataNode上对应的block,对其进行复制。应对NameNode故障持久化元数据Secondary NameNode这种机制只能回复到上一次备份的地方,而从上次备份到现在的数据都会丢失将NameNode的fsimage与edit log从Name

38、Node复制到临时目录将fsimage同edit log合并,并产生新的fsimage将产生的新的fsimage上传给NameNode清除NameNode中的edit logedits:日志文件,记录引发元数据改变的操作。fsimage:元数据的镜像文件,可以理解为元数据保存在磁盘上的一个副本。Secondary NameNodeSecondary NameNode第一步:secondary namenode请求namenode停止使用edits,暂时记录在edits.new文件中第二步:secondary namenode从namenode复制fsimage、edits到本地第三步:seco

39、ndary namenode合并fsimage、edits为fsimage.ckpt第四步:secondary namenode发送fsimage.ckpt到namenode第五步:namenode用新的fsimage覆盖旧的fsimage,用新的edits覆盖旧的edits第六步:更新checkpoint时间到这里fsimage更新完毕,即保证了primary正常服务,也完成了fsimage的更新BackupNode在0.21.0中,Secondary NameNode被取缔了。往常在 Secondary NameNode中无非也就是阶段性的将NameNode上的editlog和fsimage进行合并,称之为一次 checkpoint,然后回灌给NameNode ,就做这么一件事情,现在0.21.0中,被一个叫做BackupNode的角色给取代。这个BackupNode相当于一个NameNode的“冷备机”。 NameNode在hadoop hdfs中是一个单点,如果这个单点发生故障,需要对NameNode进行恢复,而在一个规模很大,文件目录以及文件块很多的HDFS中,重 启一次Name

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论