Ozone命令行接口详解
命令行接口简介
Ozone Shell是命令行与Ozone交互的主要界面,底层用的是Java。
有些功能只能通过Ozone Shell进行操作:
- 创建带有限额限制的Volume
- 管理内部ACLs(访问控制列表)
- 创建带有加密密钥的存储桶
大部分操作除了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是一个访问Ozone的PRC协议,是可选的。[schema][server:port]/volume/bucket/key
server:port是Ozone Manager的地址,如果省略了端口,则将使用ozone-site.xml中的默认端口。
Ozone的层次结构
Ozone的层次结构如下:
-
集群(Cluster):Ozone集群是Ozone的最高级别,由一组物理或虚拟服务器组成。集群中的各个节点协同工作,处理存储和访问数据的请求。
-
卷(Volume):卷是Ozone中的一个逻辑概念,代表一块连续的存储空间,类似于文件系统中的一个分区。每个卷都有自己的容量限制,并且可以独立地设置数据冗余和复制策略。卷是桶(Bucket)的容器。
-
桶(Bucket):桶是Ozone中存储对象的基本单元。用户可以在卷中创建多个桶并将对象存储在这些桶中。桶具有全局唯一的名称,并且可以设置访问权限控制以限制对桶中对象的访问。
-
对象(Object):对象是在桶中存储的实际数据。每个对象都由唯一的键(key)标识,并且可以具有其他元数据和属性。对象可以通过桶和键来进行检索和访问。
注意:Ozone还有更多的层次结构和概念,如存储单元(Storage Unit)、容器(Container)、块(Block)等。但以上列出的是Ozone最常用和关键的层次结构。
Volume 操作
Volume 作为整个层级结构中最顶级的管理单位,只有管理员可以操作它,并且可以选择性地指定配额和所有者用户来控制卷的容量和权限。
-
Volume是Ozone对象存储系统中的最高级别的容器。它可以包含多个桶(buckets),而桶又可以包含多个路径(paths)。
-
只有管理员(administrators)可以管理Volume,例如创建、删除、列出等操作。
-
可以选择性地为Volume指定配额(quota),用于限制该Volume的存储容量。如果没有指定配额,则Volume的容量将没有限制。
-
可以选择性地为Volume指定所有者用户(owner user)。所有者用户具有特殊的权限,例如管理Volume内桶和路径的权限。
- 创建Volume
只有管理员才能创建Volume
命令:
如果不是管理员,则会报错:ozone sh volume create /vol1PERMISSION_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
相关文章:
Ozone命令行接口详解
命令行接口简介 Ozone Shell是命令行与Ozone交互的主要界面,底层用的是Java。 有些功能只能通过Ozone Shell进行操作: 创建带有限额限制的Volume管理内部ACLs(访问控制列表)创建带有加密密钥的存储桶 大部分操作除了Shell操作…...
机器学习笔记 - 基于C++的深度学习 二、实现卷积运算
一、卷积 卷积是信号处理领域的老朋友。最初的定义如下 在机器学习术语中: I(…)通常称为输入 K(…)作为内核,并且 F(…)作为给定K的I(x)的特征图。 虑多维离散域,我们可以将积分转换为以下求和 对于二维数字图像,我们可以将其重写为: <...
python pandas 获取Excel文件下所有的sheet名称,表格数据
方法1: 一定要加sheet_nameNone,才能读取出所有的sheet,否则默认读取第一个sheet,且获取到的keys是第一行的值 df pd.read_excel(自己的Excel文件路径.xlsx, sheet_nameNone) # 路径注意转义 for i in df.keys():print(i)方法…...
gateway做token校验
本文使用springcloud的gateway做token校验 登录的本质:拿用户名和密码 换 token。 token会返回给浏览器(存储),当访问的时候,携带token 发起请求。 token校验图 引入redis依赖 <dependency><groupId>or…...
C#学习记录-线程
线程 定义:Thread t new Thread(Test); //可以用匿名 lamda 调用:t.Start("ljc6666");方法可以无参或一个参数,如果要传入多个参数,可以传入一个结构体 namespace _17_线程Thread {internal class Program{stati…...
Spring Boot 启动注解分析
虽然我们在日常开发中,Spring Boot 使用非常多,算是目前 Java 开发领域一个标配了,但是小伙伴们仔细想想自己的面试经历,和 Spring Boot 相关的面试题都有哪些?个人感觉应该是比较少的,Spring Boot 本质上还…...
React Native数据存储
最近做RN开发中需要数据存储,查阅RN官方资料,发现推荐我们使用 AsyncStorage,对使用步骤做一下记录。 AsyncStorage是什么 简单的,异步的,持久化的key-value存储系统AsyncStorage在IOS下存储分为两种情况: 存储内容较…...
【网络编程】揭开套接字的神秘面纱
文章目录 1 :peach:简单理解TCP/UDP协议 :peach:2 :peach:网络字节序 :peach:3 :peach:socket编程接口 :peach:3.1 :apple:socket 常见API :apple:3.2 :apple:sockaddr结构:apple: 4 :peach:简单的UDP网络程序 :peach:4.1 :apple:基本分析:apple:4.2 :apple:udpServer.hpp(重点…...
MySQL 8.0 事务定义和基本操作
MySQL 事务(Transaction)的四大特性:A、C、I、D A、原子性:(Atomicity) 一个事务是不可分割的最小工作单位。 执行的事务,要么全部成功,要么回滚到执行事务之前的状态。 C、一致…...
项目经理必备:常用的项目管理系统推荐!
当我们成为项目负责人时,找到合适的工具来管理跟进项目,就成为了迫切需要解决的问题。一款优秀的工具,在项目的管理跟进中,起着极为重要的作用,一般可以付费购买专门的项目管理软件。 1.可快速切换查看不同角度的项目信…...
【香瓜说职场】信任危机(2022.08.19)
自从17年4月份开始辞职创业,已经5年零4个月了。今天跟大家聊一点不太正能量的事。 首先关于“要不要说些不好的”这件事,我爸妈常建议我不要把不好的事情写出来,因为觉得丢人、不体面、怕影响合伙人关系、影响同事关系。而我觉得如果只写好的…...
【Rust】Rust学习 第六章枚举和模式匹配
本章介绍 枚举(enumerations),也被称作 enums。枚举允许你通过列举可能的 成员(variants) 来定义一个类型。首先,我们会定义并使用一个枚举来展示它是如何连同数据一起编码信息的。接下来,我们会…...
Win10安装GPU支持的最新版本的tensorflow
我在安装好cuda和cudnn后,使用pip install tensorflow安装的tensorflow都提示不能找到GPU, 为此怀疑默认暗转的tensorflow是不带GPU支持的。 在tensorflow官网提供了多个版本的GPU支持的windows的安装包 https://www.tensorflow.org/install/pip?hlz…...
20个Golang自动化DevOps库
探索 20 个用于简化任务和提高生产力的重要库。 Golang,也称为 Go,是一种静态类型、编译型编程语言,由 Google 的 Robert Griesemer、Rob Pike 和 Ken Thompson 设计。它于 2009 年推出,旨在解决其他编程语言的缺点,特…...
【WiFi】WiFi 6E最新支持的国家和频段
信道Map图 国家和频段 CountryStatus Spectrum Andorra Adopted Considering 5945-6425 MHz 6425-7125 MHz ArgentinaAdopted5925-7125 MHzAustralia Adopted Considering 5925-6425 MHz 6425-7125 MHz Austria Adopted Considering 5945-6425 MHz 6425-7125 MHz BahrainA…...
如何使用html,包括css,js 画思维导图?有哪些可用的方法?
首先,创建一个新的HTML文件,可以使用任何文本编辑器。在文件中添加必要的标签和结构来定义网页的内容和布局。 <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>Mind Map</title><link re…...
机器学习---梯度下降代码
1. 归一化 # Read data from csv pga pd.read_csv("pga.csv") print(type(pga))print(pga.head())# Normalize the data 归一化值 (x - mean) / (std) pga.distance (pga.distance - pga.distance.mean()) / pga.distance.std() pga.accuracy (pga.accuracy - pg…...
【VB6|第23期】原来Jet.OLEDB也可以读取新版.xlsx的Excel文件
日期:2023年8月11日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方…...
通过控制ros节点的启停,软实现人工控制和紧急停止功能的图示
通过控制ros节点的启停,软实现人工控制和紧急停止功能的图示 实现原理简介: 人工控制的节点: 键盘节点 方向盘节点 自动控制的节点: movebase 导航 autoware 等 底盘节点: 差速底盘 阿克曼底盘 控制节点࿱…...
面试热题(滑动窗口最大值)
给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 输入:nums [1,3,-1,-3,5,3,6,7], k 3 输出:[3,3,5,…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
智能职业发展系统:AI驱动的职业规划平台技术解析
智能职业发展系统:AI驱动的职业规划平台技术解析 引言:数字时代的职业革命 在当今瞬息万变的就业市场中,传统的职业规划方法已无法满足个人和企业的需求。据统计,全球每年有超过2亿人面临职业转型困境,而企业也因此遭…...
云安全与网络安全:核心区别与协同作用解析
在数字化转型的浪潮中,云安全与网络安全作为信息安全的两大支柱,常被混淆但本质不同。本文将从概念、责任分工、技术手段、威胁类型等维度深入解析两者的差异,并探讨它们的协同作用。 一、核心区别 定义与范围 网络安全:聚焦于保…...
Qt的学习(一)
1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...
