FairCallQueue

This document contains information for setting up the FairCallQueue feature with Ozone. In order for FairCallQueue to be enabled and used, Hadoop RPC must be used as transport protocol for OM - S3G communication. There is no implementation for gRPC yet.

There is a custom IdentityProvider implementation for Ozone that must be specified in the configuration, otherwise there is no S3G impersonation which makes the FairCallQueue ineffective since it’s only reading one user, the S3G special user instead of the S3G client user.

Configuration

There must be a port specified to which the OM will forward any activity and the FailCallQueue and DecayRpcScheduler will listen to. Furthermore, this port will have to be part of every configuration name.

Port used for below examples : 9862

<property>
   <name>ozone.om.address</name>
   <value>OMDomain:9862</value>
</property>

<property>
    <name>ozone.om.s3.grpc.server_enabled</name>
    <value>false</value>
</property>
<property>
    <name>ozone.om.transport.class</name>
    <value>org.apache.hadoop.ozone.om.protocolPB.Hadoop3OmTransportFactory</value>
</property>

<property>
   <name>ipc.9862.callqueue.impl</name>
   <value>org.apache.hadoop.ipc.FairCallQueue</value>
</property>
<property>
   <name>ipc.9862.scheduler.impl</name>
   <value>org.apache.hadoop.ipc.DecayRpcScheduler</value>
</property>
<property>
   <name>ipc.9862.identity-provider.impl</name>
   <value>org.apache.hadoop.ozone.om.helpers.OzoneIdentityProvider</value>
</property>
<property>
   <name>ipc.9862.scheduler.priority.levels</name>
   <value>2</value>
</property>
<property>
   <name>ipc.9862.backoff.enable</name>
   <value>true</value>
</property>
<property>
   <name>ipc.9862.faircallqueue.multiplexer.weights</name>
   <value>2,1</value>
</property>
<property>
    <name>ipc.9862.decay-scheduler.thresholds</name>
    <value>50</value>
</property>