/ozone-go

Apache Ozone go client and fuse driver (experimental)

Primary LanguageGoApache License 2.0Apache-2.0

Go client for Apache Ozone

This repository contains an experimental, proof-of-concept Golang client for Apache Ozone.

It's not ready yet for using in production / non-production.

The repository contains the following sub-modules

  • api: the location for the generic golang api for Apache Ozone
  • cli: standalone executable tool for main operations (similar to the original ozone sh)
  • lib: proof-of-concept shared C library
  • python: example python script uses the shared C library
  • HA failovoer is missing

Status:

  • api
    • main OM metadata operations worked well, but not all the fields are implemented
    • data read / write are implemented on some level but needs further work
    • security can be supported by the used Hadoop RPC implementation, but not tested
  • fuse
    • first working POC, files are successfully listed and files can be read
    • write is not implemented at all
    • requires major work
  • shared lib / python: very basic example, poc

Testing with cli:

cd cli
./build.sh
./ozone-go --om localhost volume create vol1

Or you can install it:

cd cli
go install
ozone -om 127.0.0.1 volume create vol1

Testing Fuse file system

cd fuse
./build.sh
./ozone-fuse/ozone-fuse --om localhost --volume vol1 --bucket bucket1 /tmp/bucket1

Testing the python binding

Create the shared library:

go build -o ozone.so -buildmode=c-shared lib/lib.go

Modify parameters of python/test.py (om address) and run it.