<!--
 ! 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.
 !-->
<configuration xmlns="installer">
  <is_configured>false</is_configured>
  <backup>
    <hdfs>
      <version>0.20.2</version>
      <url></url>
      <backupDir></backupDir>
    </hdfs>
  </backup>
  <zookeeper>
    <homeDir>/tmp/zookeeper</homeDir>
    <clientPort>2900</clientPort>
    <servers>
      <server>127.0.0.1</server>
    </servers>
  </zookeeper>
</configuration>
