Ozone命令行接口详解

命令行接口简介

Ozone Shell是命令行与Ozone交互的主要界面,底层用的是Java。

有些功能只能通过Ozone Shell进行操作:

  1. 创建带有限额限制的Volume
  2. 管理内部ACLs(访问控制列表)
  3. 创建带有加密密钥的存储桶

大部分操作除了Shell操作之外,还可以使用hadoop、s3等方式操作。

在学习Ozone Shell命令的时候,可以借助help命令。
比如查看volume所有可用的命令:

ozone sh volume --helpUsage: ozone sh volume [-hV] [COMMAND]
Volume specific operations-h, --help      Show this help message and exit.-V, --version   Print version information and exit.
Commands:info       returns information about a specific volumelist, ls   List the volumes of a given usercreate     Creates a volume for the specified userupdate     Updates parameter of the volumesdelete     deletes a volume if it is emptyaddacl     Add one or more new ACLs.removeacl  Remove one or more existing ACLs.setacl     Set one or more ACLs, replacing the existing ones.getacl     List all ACLs.setquota   Set quota of the volumes. At least one of the quota set flag ismandatory.clrquota   clear quota of the volume. At least one of the quota clear flag ismandatory.

或者查看volume相关命令详细的使用说明:

ozone sh volume create --helpUsage: ozone sh volume create [-hV] [--namespace-quota=<quotaInNamespace>][--quota=<quotaInBytes>] [-u=<ownerName>] <value>
Creates a volume for the specified user<value>              URI of the volume.Ozone URI could either be a full URI or short URI.Full URI should start with o3://, in case of non-HAclusters it should be followed by the host name andoptionally the port number. In case of HA clustersthe service id should be used. Service id provides alogical name for multiple hosts and it is definedin the property ozone.om.service.ids.Example of a full URI with host name and port numberfor a key:o3://omhostname:9862/vol1/bucket1/key1With a service id for a volume:o3://omserviceid/vol1/Short URI should start from the volume.Example of a short URI for a bucket:vol1/bucket1Any unspecified information will be identified fromthe config files.-h, --help               Show this help message and exit.--namespace-quota=<quotaInNamespace>For volume this parameter represents the number ofbuckets, and for buckets represents the number ofkeys (eg. 5)--quota, --space-quota=<quotaInBytes>The maximum space quota can be used (eg. 1GB)-u, --user=<ownerName>   Owner of the volume-V, --version            Print version information and exit.

Shell命令格式

Ozone Shell命令常用格式:

ozone sh object action url

参数详解:

  • ozone sh
    Ozone通过ozone sh调用其所有的命令。
  • object
    object可以是volume, bucket or key。
  • action
    action可以是各种操作,如create, list, delete等等。
  • url
    url会指向volume, bucket or key,格式如下:
    [schema][server:port]/volume/bucket/key
    
    schema是一个访问Ozone的PRC协议,是可选的。
    server:port是Ozone Manager的地址,如果省略了端口,则将使用ozone-site.xml中的默认端口。

Ozone的层次结构

Ozone的层次结构如下:

  1. 集群(Cluster):Ozone集群是Ozone的最高级别,由一组物理或虚拟服务器组成。集群中的各个节点协同工作,处理存储和访问数据的请求。

  2. 卷(Volume):卷是Ozone中的一个逻辑概念,代表一块连续的存储空间,类似于文件系统中的一个分区。每个卷都有自己的容量限制,并且可以独立地设置数据冗余和复制策略。卷是桶(Bucket)的容器。

  3. 桶(Bucket):桶是Ozone中存储对象的基本单元。用户可以在卷中创建多个桶并将对象存储在这些桶中。桶具有全局唯一的名称,并且可以设置访问权限控制以限制对桶中对象的访问。

  4. 对象(Object):对象是在桶中存储的实际数据。每个对象都由唯一的键(key)标识,并且可以具有其他元数据和属性。对象可以通过桶和键来进行检索和访问。

注意:Ozone还有更多的层次结构和概念,如存储单元(Storage Unit)、容器(Container)、块(Block)等。但以上列出的是Ozone最常用和关键的层次结构。

Volume 操作

Volume 作为整个层级结构中最顶级的管理单位,只有管理员可以操作它,并且可以选择性地指定配额和所有者用户来控制卷的容量和权限。

  1. Volume是Ozone对象存储系统中的最高级别的容器。它可以包含多个桶(buckets),而桶又可以包含多个路径(paths)。

  2. 只有管理员(administrators)可以管理Volume,例如创建、删除、列出等操作。

  3. 可以选择性地为Volume指定配额(quota),用于限制该Volume的存储容量。如果没有指定配额,则Volume的容量将没有限制。

  4. 可以选择性地为Volume指定所有者用户(owner user)。所有者用户具有特殊的权限,例如管理Volume内桶和路径的权限。

  • 创建Volume
    只有管理员才能创建Volume
    命令:
    ozone sh volume create /vol1
    
    如果不是管理员,则会报错:
    PERMISSION_DENIED User xxx doesn't have CREATE permission to access volume Volume:vol1
    
  • 查询Volume详细信息
    命令:
    ozone sh volume info /vol1
    
    结果:
    {
    "metadata" : { },
    "name" : "vol1",
    "admin" : "hadoop",
    "owner" : "hadoop",
    "creationTime" : "2020-07-28T12:31:50.112Z",
    "modificationTime" : "2020-07-28T12:31:50.112Z",
    "acls" : [ {
    "type" : "USER",
    "name" : "hadoop",
    "aclScope" : "ACCESS",
    "aclList" : [ "ALL" ]
    }, {
    "type" : "GROUP",
    "name" : "users",
    "aclScope" : "ACCESS",
    "aclList" : [ "ALL" ]
    } ],
    "quota" : 1152921504606846976
    }
    
  • 列出所有Volumn
    命令:
    ozone sh volume list /
    
    结果:
    {"metadata" : { },"name" : "s3v","admin" : "hadoop","owner" : "hadoop","creationTime" : "2020-07-27T11:32:22.314Z","modificationTime" : "2020-07-27T11:32:22.314Z","acls" : [ {"type" : "USER","name" : "hadoop","aclScope" : "ACCESS","aclList" : [ "ALL" ]}, {"type" : "GROUP","name" : "users","aclScope" : "ACCESS","aclList" : [ "ALL" ]} ],"quota" : 1152921504606846976
    }
    

Bucket操作

在Ozone中,桶(Bucket)是对象层次结构的第二级,类似于AWS S3中的桶(buckets)。用户可以在卷(volume)中创建桶,前提是他们具有所需的权限。

简单来说,Ozone中的对象层次结构如下:

卷(Volume)是最高级别的容器,在卷中可以创建桶。

桶(Bucket)是存储对象的容器,类似于AWS S3中的桶。用户可以在卷中创建多个桶,并将对象存储在这些桶中。

  • 创建桶

    ozone sh bucket create /vol1/bucket1
    
  • 查询桶的详细信息
    命令:

    ozone sh bucket info /vol1/bucket1
    

    结果:

    {"metadata" : { },"volumeName" : "vol1","name" : "bucket1","storageType" : "DISK","versioning" : false,"creationTime" : "2020-07-28T13:14:45.091Z","modificationTime" : "2020-07-28T13:14:45.091Z","encryptionKeyName" : null,"sourceVolume" : null,"sourceBucket" : null
    }
    

Key操作

Key是存储数据的对象。

  • 上传数据

    ozone sh key put /vol1/bucket1/README.md README.md
    

    注意:在Ozone中使用命令行工具时,命令的语法ozone sh <object_type> <action> <url>可能会有些困惑,因为它导致了ozone sh key put <destination> <source>这样的语法结构,而不是更自然的<source> <destination>的顺序。
    换句话说,对于文件的上传操作,一般来讲,人们可能更习惯使用类似于ozone put <source> <destination>的语法,其中<source>表示源文件的位置,<destination>表示目标位置。但是在Ozone的命令行工具中,使用了ozone sh key put <destination> <source>的语法,将<destination>作为目标Key的位置,<source>作为源文件的位置。
    这可能在一开始会令人困惑,因为与通常的命令语法不同。但是一旦了解了这种语法结构,并且熟悉了Ozone的命令行工具的使用方式,就能够正确地指定文件的源和目标位置,实现文件的上传等操作。

  • 查询key的详细信息
    命令:

    ozone sh key info /vol1/bucket1/README.md
    

    结果:

    {"volumeName" : "vol1","bucketName" : "bucket1","name" : "README.md","dataSize" : 3841,"creationTime" : "2020-07-28T13:17:20.749Z","modificationTime" : "2020-07-28T13:17:21.979Z","replicationType" : "RATIS","replicationFactor" : 1,"ozoneKeyLocations" : [ {"containerID" : 1,"localID" : 104591670688743424,"length" : 3841,"offset" : 0} ],"metadata" : { },"fileEncryptionInfo" : null
    }
    
  • 下载数据

    ozone sh key get /vol1/bucket1/README.md /tmp/
    

参考文献

Command Line Interface

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/32090.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法挨揍日记】day01——双指针算法_移动零、 复写零

283.移动零 283. 移动零https://leetcode.cn/problems/move-zeroes/ 题目&#xff1a; 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 …

【BASH】回顾与知识点梳理(十二)

【BASH】回顾与知识点梳理 十二 十二. Linux 文件与目录管理12.1 目录与路径相对路径与绝对路径相对路径的用途绝对路径的用途 12.2 目录的相关操作cd (change directory, 变换目录)pwd (Print Working Directory, 显示目前所在的目录)mkdir (make directory, 建立新目录)rmdir…

生信豆芽菜-火山图绘制使用说明

网站&#xff1a;http://www.sxdyc.com/visualsVolcano 一、火山图简介 火山图是散点图的一种&#xff0c;它将统计测试中的统计显著性量度&#xff08;如p value&#xff09;和变化幅度&#xff08;logFC&#xff09;相结合&#xff0c;能够快速直观地识别那些变化幅度较大且具…

13个Python最佳编程技巧,越早知道越好

每天我们都会面临许多需要高级编码的编程挑战。你不能用简单的 Python 基本语法来解决这些问题。在本文中&#xff0c;我将分享 13 个高级 Python 脚本&#xff0c;它们可以成为你项目中的便捷工具。如果你目前还用不到这些脚本&#xff0c;你可以先添加收藏&#xff0c;以备留…

24大连交通大学813软件工程考研习题

1.等价分类法相关概念。 &#xff08;1&#xff09;等价分类法的基本思想是什么&#xff1f; 根据程序的输入特性&#xff0c;将程序的定义域划分为有限个等价区段 —“等价类”&#xff0c;从等价类中选择出的用例具有“代表性”&#xff0c;即测试某个等价类的代表值就等价…

springMVC 程序开发

目录 一. 认识 springMVC spring&#xff0c;springBoot&#xff0c;springMVC的关系 二. springMVC 的连接和获取参数 1. 注解分析&#xff08;不带参数&#xff09; 2. 获取参数 3. 获取对象参数 4. 重命名功能 5. 获取 JSON 对象 6. 通过 path 文件路径来传递参数…

新版Android Studio模拟器浮动

&#xff08;水一篇&#xff0c;但其实很多入门同学不知道&#xff09; 安装新版Andorid Studio后会发现模拟器是内嵌在AS中的&#xff0c;如何让她浮动

[C++项目] Boost文档 站内搜索引擎(4): 搜索的相关接口的实现、线程安全的单例index接口、cppjieba分词库的使用、综合调试...

有关Boost文档搜索引擎的项目的前三篇文章, 已经分别介绍分析了: 项目背景: &#x1fae6;[C项目] Boost文档 站内搜索引擎(1): 项目背景介绍、相关技术栈、相关概念介绍…文档解析、处理模块parser的实现: &#x1fae6;[C项目] Boost文档 站内搜索引擎(2): 文档文本解析模块…

C++学习| MFC简单入门

前言&#xff1a;因为接手了CMFC的程序&#xff0c;所以需要对MFC编程方面有所了解。 C之MFC简单入门 MFC相关的概念MFCWIN32QT MFC项目基本操作MFC项目创建MFC项目文件解读界面和代码数据交互——加法器 MFC相关的概念 MFC MFC&#xff08;Microsoft Foundation Classes微软…

MySQL中基础查询语句

用户表user数据如下&#xff1a; iddevice_idgenderageuniversityprovince12138male21北京大学Beijing23214male复旦大学Shanghai36543famale20北京大学Deijing42315female 23 浙江大学ZheJiang55432male25山东大学Shandong 1&#xff0c;写出ddl语句创建如上表&#xff0c;…

CEC2013(MATLAB):淘金优化算法GRO求解CEC2013的28个函数

一、淘金优化算法GRO 淘金优化算法&#xff08;Gold rush optimizer&#xff0c;GRO&#xff09;由Kamran Zolf于2023年提出&#xff0c;其灵感来自淘金热&#xff0c;模拟淘金者进行黄金勘探行为。淘金优化算法&#xff08;Gold rush optimizer&#xff0c;GRO&#xff09;提…

centos7实现负载均衡

目录 一、基于 CentOS 7 构建 LVS-DR 集群。 1.1 配置lvs负载均衡服务 1.1.1 下载ipvsadm 1.1.2 增加vip 1.1.3 配置ipvsadm 1.2 配置rs1 1.2.1 编写测试页面 1.2.2 手工在RS端绑定VIP、添加路由 1.2.3 抑制arp响应 1.3 配置rs2 1.4 测试 二、配置nginx负载…

chatGPT小白快速入门课程大纲

以下是关于ChatGPT的培训课程大纲,分为7部分,我们会在后续写一个系列的相关文章: 1. 介绍 ChatGPT是什么?ChatGPT是由谁开发的?ChatGPT是一个什么样的语言模型? 2. 功能与特点 ChatGPT可以做什么?ChatGPT有哪些特点?ChatGPT与传统语言模型的区别? 3. 使用方法 如何…

AMEYA360:尼得科科宝旋转型DIP开关系列汇总

旋转型DIP开关 S-4000 电路&#xff1a;BCD(十进制) 代码格式&#xff1a;实码 安装类型&#xff1a;表面贴装 调整位置&#xff1a;顶部 可水洗&#xff1a;无 端子类型&#xff1a;J 引线, 鸥翼型 旋转型DIP开关 SA-7000 电路&#xff1a;BCD(十进制), BCH(十六进制) 代码格式…

转圈打印矩阵

转圈打印矩阵 【题目】 给定一个整型矩阵 matrix&#xff0c;请按照转圈的方式打印它。 例如&#xff1a; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 打印结果为&#xff1a;1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;8&#xff0c;12&#xff0c;16&#xff0c;1…

Java线程池

线程池 1. 概念2. 工作流程3. ThreadPoolExecutor参数 1. 概念 线程池是一种利用池化技术思想来实现的线程管理技术&#xff0c;主要是为了复用线程、便利地管理线程和任务、并将线程的创建和任务的执行解耦开来。我们可以创建线程池来复用已经创建的线程来降低频繁创建和销毁…

前端导出excel,前端纯数据导出excel

非常符合前端直接的使用 使用 先看看使用 表格数据 const tableData [{"id": 1,"firstName": "John","lastName": "Doe","email": "john.doeexample.com","age": 28,"address":…

Detector定位算法在FPGA中的实现——section1 原理推导

关于算法在FPGA中的实现&#xff0c;本次利用业余的时间推出一个系列章节&#xff0c;专门记录从算法的推导、Matlab的实现、FPGA的移植开发与仿真做一次完整的FPGA算法开发&#xff0c;在此做一下相关的记录和总结&#xff0c;做到温故知新。 这里以Detector在Global Coordina…

Ansible从入门到精通【六】

大家好&#xff0c;我是早九晚十二&#xff0c;目前是做运维相关的工作。写博客是为了积累&#xff0c;希望大家一起进步&#xff01; 我的主页&#xff1a;早九晚十二 专栏名称&#xff1a;Ansible从入门到精通 立志成为ansible大佬 ansible templates 模板&#xff08;templa…

flask处理token的装饰器

以下是在 Flask 中基于 token 实现的登录验证装饰器的示例代码&#xff1a; import jwt from functools import wraps from flask import request, jsonify, current_appdef login_required(f):wraps(f)def decorated_function(*args, **kwargs):token request.headers.get(A…