<!--
 ! Licensed to the Apache Software Foundation (ASF) under one
 ! or more contributor license agreements.  See the NOTICE file
 ! distributed with this work for additional information
 ! regarding copyright ownership.  The ASF licenses this file
 ! to you under the Apache License, Version 2.0 (the
 ! "License"); you may not use this file except in compliance
 ! with the License.  You may obtain a copy of the License at
 !
 !   http://www.apache.org/licenses/LICENSE-2.0
 !
 ! Unless required by applicable law or agreed to in writing,
 ! software distributed under the License is distributed on an
 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ! KIND, either express or implied.  See the License for the
 ! specific language governing permissions and limitations
 ! under the License.
 !-->
    <cluster xmlns="yarn_cluster">

      <!-- Name of the cluster -->
      <name>local</name>

      <log_dir>/tmp/</log_dir>
      <txn_log_dir>/tmp/</txn_log_dir>

      <!-- Mount point of an iodevice. Use a comma separated list for a machine that
                      has multiple iodevices (disks).
                                 This property can be overriden for a node by redefining at the node level. -->
      <iodevices>/tmp</iodevices>

      <!-- Path on each iodevice where Asterix will store its data -->
      <store>storage</store>

       <!-- IP addresses of the master machine A -->
      <master_node>
          <id>cc</id>
	      <client_ip>localhost</client_ip>
	      <cluster_ip>localhost</cluster_ip>
	      <client_port>1098</client_port>
	      <cluster_port>1099</cluster_port>
	      <http_port>8888</http_port>
      </master_node>
      <node>
      	      <id>nc1</id>
      	      <cluster_ip>127.0.0.1</cluster_ip>
      </node>
    <metadata_node>nc1</metadata_node>
</cluster>
