###
# #%L
# SAMOA
# %%
# Copyright (C) 2014 - 2015 Apache Software Foundation
# %%
# Licensed 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.
# #L%
###

### Sets the mode of execution for Apex ###
# "local" - Execute in local mode. No cluster setup needed.
# "cluster" - Execute in cluster mode. Needs a working Hadoop 2.0 (YARN) cluster.
samoa.apex.mode=local
#samoa.apex.mode=cluster

### The HDFS directory to use (in case of "cluster" mode) for storing app related data ###
dt.dfsRootDirectory=/user/apex

### The HDFS file system (In case of "cluster" mode) ###
fs.defaultFS=hdfs://localhost:9000

### The YARN resource manager address (In case of "cluster" mode) ###
yarn.resourcemanager.address=localhost:8032

### Path to hadoop common libs (In case of "cluster" mode) ###
# Set this appropriately to the lib directory of hadoop-common if using a custom hadoop distribution
hadoop.common.home=$HADOOP_HOME/share/hadoop/common

### Path to hdfs libs (In case of "cluster" mode) ###
# Set this appropriately to the lib directory of hadoop-hdfs if using a custom hadoop distribution
hadoop.hdfs.home=$HADOOP_HOME/share/hadoop/hdfs

### Path to yarn libs (In case of "cluster" mode) ###
# Set this appropriately to the lib directory of hadoop-yarn if using a custom hadoop distribution
hadoop.yarn.home=$HADOOP_HOME/share/hadoop/yarn

### Path to hadoop conf dir (In case of "cluster" mode) ###
# Set this appropriately to the conf directory of hadoop if using a custom hadoop distribution
hadoop.conf.dir=$HADOOP_HOME/etc/hadoop

### Additional configuration properties, if needed, can be specified in this file (In case of "cluster" mode) ###
dt.site.path=$HOME/.dt/dt-site.xml
