blob: e43c1f5070761c33304cd9017ec49b1650aae59c [file] [log] [blame]
package phrasecount.cmd;
import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.beust.jcommander.JCommander;
import com.beust.jcommander.Parameter;
import com.beust.jcommander.ParameterException;
import org.apache.accumulo.core.conf.Property;
import org.apache.accumulo.minicluster.MemoryUnit;
import org.apache.accumulo.minicluster.MiniAccumuloCluster;
import org.apache.accumulo.minicluster.MiniAccumuloConfig;
import org.apache.accumulo.minicluster.ServerType;
import org.apache.fluo.api.client.FluoAdmin.InitializationOptions;
import org.apache.fluo.api.client.FluoFactory;
import org.apache.fluo.api.config.FluoConfiguration;
import org.apache.fluo.api.mini.MiniFluo;
import phrasecount.Application;
public class Mini {
static class Parameters {
@Parameter(names = {"-m", "--moreMemory"}, description = "Use more memory")
boolean moreMemory = false;
@Parameter(names = {"-w", "--workerThreads"}, description = "Number of worker threads")
int workerThreads = 5;
@Parameter(names = {"-t", "--tabletServers"}, description = "Number of tablet servers")
int tabletServers = 2;
@Parameter(names = {"-z", "--zookeeperPort"}, description = "Port to use for zookeeper")
int zookeeperPort = 0;
@Parameter(description = "<MAC dir> <output props file>")
List<String> args;
}
public static void main(String[] args) throws Exception {
Parameters params = new Parameters();
JCommander jc = new JCommander(params);
try {
jc.parse(args);
if (params.args == null || params.args.size() != 2)
throw new ParameterException("Expected two arguments");
} catch (ParameterException pe) {
System.out.println(pe.getMessage());
jc.setProgramName(Mini.class.getSimpleName());
jc.usage();
System.exit(-1);
}
MiniAccumuloConfig cfg = new MiniAccumuloConfig(new File(params.args.get(0)), "secret");
cfg.setZooKeeperPort(params.zookeeperPort);
cfg.setNumTservers(params.tabletServers);
if (params.moreMemory) {
cfg.setMemory(ServerType.TABLET_SERVER, 2, MemoryUnit.GIGABYTE);
Map<String, String> site = new HashMap<>();
site.put(Property.TSERV_DATACACHE_SIZE.getKey(), "768M");
site.put(Property.TSERV_INDEXCACHE_SIZE.getKey(), "256M");
cfg.setSiteConfig(site);
}
MiniAccumuloCluster cluster = new MiniAccumuloCluster(cfg);
cluster.start();
FluoConfiguration fluoConfig = new FluoConfiguration();
fluoConfig.setMiniStartAccumulo(false);
fluoConfig.setAccumuloInstance(cluster.getInstanceName());
fluoConfig.setAccumuloUser("root");
fluoConfig.setAccumuloPassword("secret");
fluoConfig.setAccumuloZookeepers(cluster.getZooKeepers());
fluoConfig.setInstanceZookeepers(cluster.getZooKeepers() + "/fluo");
fluoConfig.setAccumuloTable("data");
fluoConfig.setWorkerThreads(params.workerThreads);
fluoConfig.setApplicationName("phrasecount");
Application.configure(fluoConfig, new Application.Options(17, 17, cluster.getInstanceName(),
cluster.getZooKeepers(), "root", "secret", "pcExport"));
FluoFactory.newAdmin(fluoConfig).initialize(new InitializationOptions());
MiniFluo miniFluo = FluoFactory.newMiniFluo(fluoConfig);
miniFluo.getClientConfiguration().save(new File(params.args.get(1)));
System.out.println();
System.out.println("Wrote : " + params.args.get(1));
}
}