# 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.

fluo.observer.provider=stresso.trie.StressoObserverProvider

fluo.app.trie.nodeSize=8
# For a max ~10^9 set to 6.  For a max ~10^12 set to 5.  If more than 10^12 set to 4.
fluo.app.trie.stopLevel=6

# The following assumes that fluo init is run in the stresso dir
fluo.observer.init.dir=./lib

fluo.accumulo.table=${fluo.connection.application.name}

# You may need to edit the following to match your Hadoop and Accumulo settings
fluo.dfs.root=hdfs://localhost:8020/fluo
fluo.accumulo.instance=uno
fluo.accumulo.user=root
fluo.accumulo.password=secret
fluo.accumulo.zookeepers=localhost

# Performance related properties
fluo.worker.num.threads=128
fluo.loader.num.threads=64
fluo.loader.queue.size=256

