Ozone安装部署指南

Ozone 的安装和运行有多种方式,支持从简单的本地节点 docker 部署,到大规模多节点的 Kubernetes 或物理集群部署。

docker方式启动Ozone

如果还未安装docker,可通过官方安装脚本自动安装:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

或者使用国内镜像安装:

curl -sSL https://get.daocloud.io/docker | sh

在单个容器启动Ozone服务

启动一个 all-in-one 的 ozone 容器最简单的方法就是使用 Docker Hub 最新的 docker 镜像:

docker run -p 9878:9878 -p 9876:9876 apache/ozone

这个命令会从 Docker Hub 拉取 ozone 镜像并在一个容器中启动所有 ozone 服务,包括必要的元数据服务(Ozone Manager,Storage Container Manager)、一个数据节点和兼容 S3 的 REST 服务(S3 网关)。

在多个独立的容器运行Ozone服务

如果你需要一个更类似生产环境的集群,使用 Ozone 发行包自带的 docker-compose 配置文件可以让 Ozone 服务组件在各自独立的容器中运行。

docker-compose 配置文件和一个 environment 文件已经包含在 Docker Hub 的镜像中。

下面的命令可以从镜像中获取到这两个文件:

docker run apache/ozone cat docker-compose.yaml > docker-compose.yaml
docker run apache/ozone cat docker-config > docker-config

现在你可以用 docker-compose 命令来启动集群:

docker-compose up -d

如果你需要多个数据节点,可以通过下面的命令增加:

docker-compose scale datanode=3

运行 S3 客户端

集群启动就绪后,你可以连接 SCM 的 UI 来验证它的状态,地址为(http://localhost:9876)。

S3 网关的端口为 9878,如果你正在使用 S3 作为存储方案,可以考虑 Ozone 的 S3 功能。

从命令行创建桶的命令为:

aws s3api --endpoint http://localhost:9878/ create-bucket --bucket=bucket1

唯一的区别在于你需要在运行 aws s3api 命令的时候用 –endpoint 选项指定 ozone S3 网关的地址。

下面我们来把一个简单的文件存入 Ozone 的 S3 桶中,首先创建一个用来上传的临时文件:

ls -1 > /tmp/testfile

这个命令创建了一个用来上传到 Ozone 的临时文件,下面的命令用标准的 aws s3 命令行接口把这个文件上传到了 Ozone 的 S3 桶中:

aws s3 --endpoint http://localhost:9878 cp --storage-class REDUCED_REDUNDANCY  /tmp/testfile  s3://bucket1/testfile

注意:对于单容器 ozone 来说,REDUCED_REDUNDANCY 参数是必需的,因为它只有一个数据节点。

我们可以对桶运行 list 命令来验证文件是否上传成功:

aws s3 --endpoint http://localhost:9878 ls s3://bucket1/testfile

你也可以点击下面的链接,通过 Ozone S3 网关自带的浏览器去查看桶内的文件。

http://localhost:9878/bucket1?browser

物理集群上 Ozone 的安装

如果你想要有点挑战性,你可以在物理集群上安装 ozone。搭建一个 Ozone 集群需要了解它的各个组件,Ozone 既能和现有的 HDFS 集群并存运行,也可以独立运行。在这两种模式下,需要运行的 Ozone 组件是相同的。

Ozone 组件

  1. Ozone Manager – 管理 Ozone 命名空间的服务,负责所有对卷、桶和键的操作。
  2. Storage Container Manager – Ozone 中块的管理者,Ozone Manager 从 SCM 请求块,然后用户向块写入数据。
  3. Datanodes – Ozone 的 Datanode 代码既可以运行在 HDFS 的 Datanode 内,也可以独立部署成单独的进程。

搭建一个独立 Ozone 集群

  • 将 ozone-<version> 安装包解压到目标目录,因为 Ozone 的 jar 包需要部署到集群的所有机器上,所以你需要在所有机器上进行此操作。
  • Ozone 依赖名为 ozone-site.xml 的配置文件, 运行下面的命令可以在指定目录生成名为 ozone-site.xml 的配置文件模板,然后你可以将参数替换为合适的值。
ozone genconf <path>

我们来看看生成的文件(ozone-site.xml)中都有哪些参数,以及它们是如何影响 ozone 的。当各个参数都配置了合适的值之后,需要把该文件拷贝到 ozone directory/etc/hadoop

  • ozone.metadata.dirs 管理员通过此参数指定元数据的存储位置,通常应该选择最快的磁盘(比如 SSD,如果节点上有的话),OM、SCM 和 Datanode 会将元数据写入此路径。这是个必需的参数,如果不配置它,Ozone 会启动失败。

示例如下:

   <property>
      <name>ozone.metadata.dirs</name>
      <value>/data/disk1/meta</value>
   </property>

  • ozone.scm.names Storage container manager(SCM) 提供 ozone 使用的分布式块服务,Datanode 通过这个参数来连接 SCM 并向 SCM 发送心跳。Ozone 目前尚未支持 SCM 的 HA,ozone.scm.names 只需配置单个 SCM 地址即可。

示例如下:

    <property>
        <name>ozone.scm.names</name>
      <value>scm.hadoop.apache.org</value>
    </property>

  • ozone.scm.datanode.id.dir 每个 Datanode 会生成一个唯一 ID,叫做 Datanode ID。Datanode ID 会被写入此参数所指定路径下名为 datanode.id 的文件中,如果该路径不存在,Datanode 会自动创建。

示例如下:

   <property>
      <name>ozone.scm.datanode.id.dir</name>
      <value>/data/disk1/meta/node</value>
   </property>


ozone.om.address OM 服务地址,OzoneClient 和 Ozone 文件系统需要使用此地址。

示例如下:

    <property>
       <name>ozone.om.address</name>
       <value>ozonemanager.hadoop.apache.org</value>
    </property>

Ozone 参数汇总

SettingValueComment
ozone.metadata.dirs文件路径元数据存储位置
ozone.scm.namesSCM 服务地址SCM的主机名:端口,或者IP:端口
ozone.scm.block.client.addressSCM 服务地址和端口Ozone 内部服务使用(如 OM)
ozone.scm.client.addressSCM 服务地址和端口客户端使用
ozone.scm.datanode.addressSCM 服务地址和端口Datanode 使用
ozone.om.addressOM 服务地址Ozone handler 和 Ozone 文件系统使用

启动集群

在启动 Ozone 集群之前,需要依次初始化 SCM 和 OM。

ozone scm --init

这条命令会使 SCM 创建集群 ID 并初始化它的状态。 init 命令和 Namenode 的 format 命令类似,只需要执行一次,SCM 就可以在磁盘上准备好正常运行所需的数据结构。

ozone --daemon start scm

SCM 启动之后,我们就可以创建对象存储空间,命令如下:

ozone om --init

OM 初始化完成之后,就可以启动 OM 服务了:

ozone --daemon start om

此时 Ozone 的命名服务 OM 和 块服务 SCM 都已运行。注意: 如果 SCM 未启动,om --init 命令会失败,同样,如果磁盘上的元数据缺失,SCM 也无法启动,所以请确保 scm --initom --init 两条命令都成功执行了。

接下来启动 Datanode,在每个 Datanode 上运行下面的命令:

ozone --daemon start datanode

现在 SCM、OM 和所有的 Datanode 都已启动并运行。

恭喜!你成功地搭建了一个完整的 ozone 集群。

捷径

如果你想简化操作,可以直接运行:

ozone scm --init
ozone om --init
start-ozone.sh

这么做的前提是,workers 文件已经正确编写,并且配置好了到各个 Datanode 的 ssh,这和 HDFS 的配置方式相同,具体方法请查看 HDFS 文档。

5 1 投票
文章评分

本文为从大数据到人工智能博主「xiaozhch5」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://lrting.top/backend/4208/

(0)
上一篇 2022-03-27 02:49
下一篇 2022-03-28 00:19

相关推荐

订阅评论
提醒
guest

0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x