下面是集群启动依赖的配置项的设置 配置项如果设的不对 集群相关服务启动会出现一定的问题。在这里会涉及到3个服务角色 它们之间还有一定的依赖关系
SCM服务 不需要依赖其它服务 直接自身启动起来即可 为最底层服务。OM服务 需要依赖SCM服务 要配置SCM的通信地址。Datanode节点服务 需要依赖SCM OM服务 二者通信地址都得配上。除了上述3点的地址信息 这里还需要配置它们的元数据放置目录位置。综合前面所述 笔者配置了一个最简单的完整配置文件 内容如下
configuration property name ozone.enabled /name value true /value /property property name ozone.metadata.dirs /name value /home/hdfs/data/meta /value /property property name ozone.om.address /name value lyq-m2:9862 /value /property property name ozone.scm.names /name value lyq-m1 /value /property property name ozone.scm.client.address /name value lyq-m1:9860 /value /property property name ozone.scm.datanode.id /name value /home/hdfs/data/meta/node/datanode.id /value /property /configuration
然后按照官网介绍 依次启动服务 启动顺序如下
1)ozone scm --init(第一次启动需要); ozone --daemon start scm
2)ozone om --init(第一次启动需要); ozone --daemon start om
3)ozone --daemon start datanode
SCM和OM各自有独立的UI界面 但是非常类似 这里简单展示SCM服务的UI界面。
SCM首页
Metric页
Config页
Tool栏
在界面中 有独立tab页显示配置信息还按照不同ta进行了区分 然后在tool栏多了个stack的功能。Metric信息展示的也比较友好。不过一直让笔者比较不解的是 这里为什么没有节点的详细信息 包括节点capacity data used这类的信息
至此Ozone集群的搭建过程宣告完成 下面我们来简单执行ozone命令完成一个小文件的put操作 来验证其对象存储功能。
小文件的对象存储测试Ozone的对象存储使用方式和亚马逊的S3存储十分类似 也是基于Volume,Bucket Key的存储模式。
所以在存储key文件对象前 我们需要建好Volume和Bucket。
首先是volume的创建
[hdfs lyq-s4 ~]$ ozone sh volume create /testvolume1 -q 1GB
2019-09-30 21:22:24,408 [main] INFO - Creating Volume: testvolume1, with hdfs as owner and quota set to 1073741824 bytes.
[hdfs lyq-s4 ~]$ ozone sh volume list
[ {
“owner” : {
“name” : “hdfs”
},
“quota” : {
“unit” : “GB”,
“size” : 1
},
“volumeName” : “testvolume1”,
“createdOn” : “Tue, 01 Oct 2019 04:22:24 GMT”,
“createdBy” : “hdfs”
} ]
然后是此volume下bucket的创建
[hdfs lyq-s4 ~]$ ozone sh bucket create /testvolume1/testbucket
2019-09-30 21:25:20,807 [main] INFO - Creating Bucket: testvolume1/testbucket, with Versioning false and Storage Type set to DISK and Encryption set to false
[hdfs lyq-s4 ~]$ ozone sh bucket info /testvolume1/testbucket
{
“volumeName” : “testvolume1”,
“bucketName” : “testbucket”,
“createdOn” : “Tue, 01 Oct 2019 04:25:20 GMT”,
“acls” : [ {
“type” : “USER”,
“name” : “hdfs”,
“rights” : “READ_WRITE”
}, {
“type” : “GROUP”,
“name” : “hdfs”,
“rights” : “READ_WRITE”
} ],
“versioning” : “DISABLED”,
“storageType” : “DISK”,
“encryptionKeyName” : “N/A”
}
最后是key文件的上传 这里我们先在本地新建一个测试文件testfile
[hdfs lyq-s4 ~]$ ozone sh key put /testvolume1/testbucket/testfile testfile
[hdfs lyq-s4 ~]$ ozone sh key info /testvolume1/testbucket/testfile
{
“version” : 0,
“md5hash” : null,
“createdOn” : “Tue, 01 Oct 2019 04:30:26 GMT”,
“modifiedOn” : “Tue, 01 Oct 2019 04:30:34 GMT”,
“size” : 12,
“keyName” : “testfile”,
“type” : null,
“keyLocations” : [ {
“containerID” : 1,
“localID” : 102885243413725184,
“length” : 12,
“offset” : 0
} ],
“fileEncryptionInfo” : null
}
然后get这个测试文件到本地 验证其输出内容
[hdfs lyq-s4 ~]$ ozone sh key get /testvolume1/testbucket/testfile getfile
[hdfs lyq-s4 ~]$ ls -l
-rw-r–r-- 1 hdfs hdfs 12 Sep 30 21:32 getfile
[hdfs lyq-s4 ~]$ cat getfile
hello world
以上就是最最基本的文件对象的测试例子 当然了 里面包括了很多别的可选参数使用 比如ACL,replication设置等等这些更高级的用法。笔者在后面的文章中将会提到这些小参数的用法 本文只是一个开始。
引用[1].https://hadoop.apache.org/ozone/docs/0.4.0-alpha
[2].https://issues.apache.org/jira/browse/HDFS-7240
本文链接: http://ozone.immuno-online.com/view-719489.html