Ozone1.0如何部署


这篇文章主要为大家展示了“Ozone1.0如何部署”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Ozone1.0如何部署”这篇文章吧。HDFS通过把文件系统元数据全部加载到Namenode内存中,给客户端提供了低延迟的元数据访问。由于元数据需要全部加载到内存,所以一个HDFS集群能支持的最大文件数,受JAVA堆内存的限制,上限大概是4亿左右个文件。所以HDFS适合大量大文件(几百兆以上)的集群,如果集群中有非常多的小文件,HDFS的元数据访问性能会受到影响。 Ozone 是一个分布式、多副本的对象存储系统,并针对大数据场景进行了专门的优化。Ozone 主要围绕可扩展性进行设计,目标是十亿数量级以上的对象存储。Ozone Manager(OM)管理 Ozone 的命名空间,提供所有的 Volume, Bucket 和 Key 的新建,更新和删除操作。Ozone Manager 只和 Ozone Client 和 Storage Container Manager 通信,并不直接和 Datanode 通信。当向Ozone写入数据时,你需要向OM请求一个块,OM会返回一个块并记录下相关信息。当你想要读取那个文件时,你也需要先通过OM获取那个块的地址。OM 允许用户在卷和桶下管理键,卷和桶都是命名空间的一部分,也由 OM 管理。每个卷都是 OM 下的一个独立命名空间的根,这一点和 HDFS 不同,HDFS 提供的是单个根目录的文件系统。与 HDFS 中单根的树状结构相比,Ozone 的命名空间是卷的集合,或者可以看作是个森林,因此可以非常容易地部署多个 OM 来进行扩展。OM 维护了卷、桶和键的列表。它为每个用户维护卷的列表,为每个卷维护桶的列表,为每个桶维护键的列表。单点OM通过RocksDB来持久化元数据;HA模式底层通过 Ratis(实现了Raft协议) 扩展元数据的副本数来实现元数据的HA。 SCM是Ozone的block空间管理的leader节点,主要职责是创建和管理container,container是Ozone的主要复制单元。 SCM为Ozone提供多个关键功能,集群管理、证书颁发、块管理和副本管理:SCM负责创建Ozone集群,当通过init初始化集群时,SCM将创建证书授权所需的集群标识和根证书。 SCM管理着集群中数据节点datanode的生命周期。SCM的证书授权为集群中每个服务颁发身份证书,这个基础证书让服务在网络层更容易启动mTLS(双向认证),并且块的基础token也依赖于这个基础证书。SCM是块管理器,它分配块并将他们分配给数据节点,客户端可以直接对这些块进行读写操作。SCM持续跟踪所有的块副本,如果数据节点或者磁盘损坏,SCM会检测到并会指示数据节点复制丢失的数据块以确保高可用性。Block是数据块对象,真实存储用户的数据,不由SCM管理。Container是一个逻辑概念,是由一些相互之间没有关系的 Block 组成的集合。在Ozone中,数据是以Container的粒度进行副本复制的,默认大小为5G (ozone.scm.container.size),由SCM服务管理。 Pipeline 来保证 Container 实现想要的副本数。SCM 中目前支持2种 Pipeline 方式实现多副本,单副本的 Standalone 模式和三副本的 Ratis 方式(ozone.replication)。当Ozone Manager从SCM请求一个新的块分配时,SCM将识别合适的容器并生成一个包含ContainerId+LocalId的块id。客户端将连接到存储容器的Datanode,Datanode可以根据LocalId管理分离的块。 Container 有2种状态,OPEN 和 CLOSED:当container创建时,它就开始了Open状态,当它写满时(默认5G),它就会关闭并且变成CLOSED的状态,之后便不可修改。 | OPEN | CLOSED | | :————: | :————: | | 可变 | 不可变 | |通过ratis复制 | 使用异步容器copy进行复制| | Raft leader节点用于数据读写| 所有节点都用于读 |存储所有数据,客户端按block写入数据,数据节点将这些block聚合到存储container中, container中包含用户写入的数据块和这些块的元数据。Ozone container存储容器是一个自包含的超级块,容器中包含一系列的Block,以及存储实际数据的磁盘文件,是默认的存储容器格式。当客户端想从Ozone读取数据,客户端向OM发送数据文件的名字,OM会返回组成这个文件的块列表,一个Ozone块包含一个container ID 和一个local ID,container ID让客户端发现container的位置,container的相关信息由SCM提供,在大多数情况下,container位置由Ozone Manager缓存,并与Ozone块一起返回。当客户端找到了container,也就是知道了哪些数据节点包含这些container,客户端会连接到数据节点并且读取由container ID:Local ID指定的数据流,换句话说,Local ID用作容器的索引,从container中读取想要的数据流。 容器的位置发现SCM 如何获得容器的位置?这一点和现有的 HDFS 十分相似。数据节点会定期发送类似于块报告的容器报告,容器报告比块报告的内容简洁的多,比如,对于一个存储容量为 196 TB 的集群,Ozone 大概会拥有四万个容器,相比于 HDFS 的一百五十万个块,块报告数量缩减为四十分之一。这种间接管理的方式大大地提高了 Ozone 的扩展性,因为 SCM 需要处理的块数据大大减少,且命名服务(OM)作为一个独特的服务主体对于扩展 Ozone 具有重要意义。Ozone的监控页面Ozone的s3 compatible REST gatewayOzone 的命名空间由volume组成,同时volume也用作存储账户管理。Ozone Manager(OM) 管理命名空间,Storage Container Manager(SCM) 管理底层的数据,而 Recon 是 Ozone 的管理接口。Ozone数据的逻辑存储架构Volumes(卷): 类似于用户账号,只有管理员可以创建volumes,可以做配额管理,用于存储buckets,一个volume下可以包含多个buckets。Buckets(桶): 类似于目录,用户可以在自己的卷下创建任意数量的桶,一个bucket可以包含无数个keys,buckets不能包含其他buckets,它们之间互不干扰。Keys(键): 类似于文件,位于bucket下,用于读写数据。OZONE和HDFS不要部署在同一个节点上,因为OZONE的环境变量会和HADOOP共用,服务启动会冲突,可以修改环境变量相关脚本进行更改。 # systemctl stop firewalld && systemctl disable firewalld# setenforce 0 && sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/configntpd# useradd hadoop略创建Datanode的数据目录 挂载到磁盘上创建ozone相关目录所有节点都需配置配置ozoneOzone 下载的二进制包,直接解压使用,拷贝至所有节点生成配置修改配置scmomdatanode –所有datanode节点recons3gscmoms3grecon高可用目前只有OM服务支持HA,SCM尚不支持: 单点OM通过RocksDB来持久化元数据; 高可用模式底层通过 Ratis(实现了Raft协议) 扩展元数据的副本数来实现元数据的HA。修改配置,开启OM的HA模式一个ozone-site.xml支持多个Ozone HA配置,为了在可用的HA集群之间进行选择,每个集群都需要一个逻辑名称,该名称可以解析为OM的IP地址(或域名)。此处只有一个集群,自定义一个集群名称omdlw001对于这个集群可以定义他的所有om,并对每个om的节点进行配置在三个om节点上都启动om服务,但是必须得注意,高可用的om服务不能与datanode服务同处 香港云主机于同一个节点,因为2者都使用ratis会冲突。以上是“Ozone1.0如何部署”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注开发云行业资讯频道!

相关推荐: 如何安装Kafka

这篇文章主要为大家展示了“如何安装Kafka”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何安装Kafka”这篇文章吧。首先安装Docker,Docker为Windows、Mac 香港云主机都提供了安装包 Doc…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 10/13 11:38
下一篇 10/13 11:38

相关推荐