Java tutorial
/** * Licensed to Ravel, Inc. under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. Ravel, Inc. 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. * */ package org.goldenorb.conf; import java.util.ArrayList; import java.util.List; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.mapreduce.InputFormat; import org.apache.hadoop.mapreduce.OutputFormat; import org.goldenorb.Vertex; import org.goldenorb.io.input.VertexBuilder; import org.goldenorb.io.output.VertexWriter; public class OrbConfiguration extends Configuration { public static final String ORB_CLUSTER_BASEPORT = "goldenOrb.cluster.baseport"; public static final String ORB_CLUSTER_NAME = "goldenOrb.cluster.name"; public static final String ORB_CLASS_PATHS = "goldenOrb.orb.classpaths"; public static final String ORB_TRACKER_PORT = "goldenOrb.orb.tracker.port"; public static final String ORB_JOB_NUMBER = "goldenOrb.job.number"; public static final String ORB_JOB_NAME = "goldenOrb.job.name"; public static final String ORB_JOB_HEARTBEAT_TIMEOUT = "goldenOrb.job.heartbeatTimeout"; public static final String ORB_JOB_MAX_TRIES = "goldenOrb.job.max.tries"; public static final String ORB_ZOOKEEPER_QUORUM = "goldenOrb.zookeeper.quorum"; public static final String ORB_ZOOKEEPER_PORT = "goldenOrb.zookeeper"; public static final String ORB_PARTITIONS_PER_MACHINE = "goldenOrb.orb.partitionsPerMachine"; public static final String ORB_REQUESTED_PARTITIONS = "goldenOrb.orb.requestedPartitions"; public static final String ORB_RESERVED_PARTITIONS = "goldenOrb.orb.reservedPartitions"; public static final String ORB_PARTITION_VERTEX_THREADS = "goldenOrb.orb.partition.vertex.threads"; public static final String ORB_PARTITION_MESSAGEHANDLER_THREADS = "goldenOrb.orb.partition.messagehandlers.threads"; public static final String ORB_PARTITION_JAVAOPTS = "goldenOrb.orb.partition.javaopts"; public static final String ORB_PARTITION_MANAGEMENT_BASEPORT = "goldenOrb.orb.partitionManagement.baseport"; public static final String ORB_LAUNCHER = "goldenOrb.orb.launcher"; public static final String ORB_LAUNCHER_NETWORKDEVICE = "goldenOrb.orb.launcher.networkDevice"; public static final String ORB_VERTEX_CLASS = "goldenOrb.orb.vertexClass"; public static final String ORB_MESSAGE_CLASS = "goldenOrb.orb.messageClass"; public static final String ORB_VERTEX_INPUT_FORMAT_CLASS = "goldenOrb.orb.vertexInputFormatClass"; public static final String ORB_VERTEX_OUTPUT_FORMAT_CLASS = "goldenOrb.orb.vertexOutputFormatClass"; public static final String ORB_NUMBER_VERTICES_BLOCK = "goldenOrb.orb.verticesPerBlock"; public static final String ORB_NUMBER_MESSAGES_BLOCK = "goldenOrb.orb.messagesPerBlock"; public static final String ORB_HANDLERS_PER_RPC_SERVER = "goldenOrb.orb.handlersPerServer"; public static final String ORB_INPUT_SPLIT_HANDLER_THREADS = "goldenOrb.orb.inputSplitHandlerThreads"; public static final String ORB_MESSAGE_HANDLER_THREADS = "goldenOrb.orb.messageHandlerThreads"; public static final String ORB_COMPUTE_THREADS = "goldenOrb.orb.computeThreads"; public static final String ORB_VERTICES_HANDLER_THREADS = "goldenOrb.orb.vertexHandlerThreads"; public static final String ORB_ERROR_OUTPUT_STREAM = "goldenOrb.error.output.stream"; public static final String ORB_SYSTEM_OUTPUT_STREAM = "goldenOrb.system.output.stream"; public static final String ORB_FS_DEFAULT_NAME = "fs.default.name"; public static final String ORB_FILE_INPUT_FORMAT_CLASS = "mapreduce.inputformat.class"; public static final String ORB_FILE_OUTPUT_FORMAT_CLASS = "mapreduce.outputformat.class"; public static final String ORB_FILE_INPUT_DIR = "mapred.input.dir"; public static final String ORB_FILE_OUTPUT_DIR = "mapred.output.dir"; public static final String ORB_LOCAL_FILES_TO_DISTRIBUTE = "goldenOrb.orb.localFilesToDistribute"; public static final String ORB_HDFS_FILES_TO_DISTRIBUTE = "goldenOrb.orb.HDFSfilesToDistribute"; public static final String ORB_PARTITION_DEBUG = "goldenOrb.orb.partition.debug"; public static final String ORB_PARTITION_DEBUG_BASEPORT = "goldenOrb.orb.parition.debug.baseport"; public static final String ORB_PARTITION_DEBUG_IDS = "goldenOrb.orb.partition.debug.ids"; /** * Constructor * */ public OrbConfiguration() { } /** * Constructor * * @param boolean loadDefaults */ public OrbConfiguration(boolean loadDefaults) { super(loadDefaults); if (loadDefaults) this.addOrbResources((Configuration) this); else { // need the file to load if not defaults } } /** * * @param Configuration conf * @returns Configuration */ private static Configuration addOrbResources(Configuration conf) { conf.addDefaultResource("orb-default.xml"); conf.addDefaultResource("orb-site.xml"); return conf; } /** * * @param Object rhs * @returns boolean */ @Override public boolean equals(Object rhs) { return this.getJobNumber().equals(((OrbConfiguration) rhs).getJobNumber()); } /** * Return the messageClass */ public Class<?> getMessageClass() throws ClassNotFoundException { return Class.forName(this.get(this.ORB_MESSAGE_CLASS)); } /** * Set the messageClass * @param Class<?> messageClass */ public void setMessageClass(Class<?> messageClass) { this.set(this.ORB_MESSAGE_CLASS, messageClass.getCanonicalName()); } /** * Return the vertexOutputFormatClass */ public Class<? extends VertexWriter> getVertexOutputFormatClass() { return (Class<? extends VertexWriter>) this.getClass(this.ORB_VERTEX_OUTPUT_FORMAT_CLASS, VertexWriter.class); } /** * Set the vertexOutputFormatClass * @param Class<?> vertexOutputFormatClass */ public void setVertexOutputFormatClass(Class<?> vertexOutputFormatClass) { this.set(this.ORB_VERTEX_OUTPUT_FORMAT_CLASS, vertexOutputFormatClass.getCanonicalName()); } /** * Return the fileOutputPath */ public String getFileOutputPath() { return this.get(this.ORB_FILE_OUTPUT_DIR); } /** * Set the fileOutputPath * @param String fileOutputPath */ public void setFileOutputPath(String fileOutputPath) { this.set(this.ORB_FILE_OUTPUT_DIR, fileOutputPath); } /** * Return the fileInputPath */ public String getFileInputPath() { return this.get(this.ORB_FILE_INPUT_DIR); } /** * Set the fileInputPath * @param String fileInputPath */ public void setFileInputPath(String fileInputPath) { this.set(this.ORB_FILE_INPUT_DIR, fileInputPath); } /** * Return the jobNumber */ public String getJobNumber() { return this.get(this.ORB_JOB_NUMBER); } /** * Set the jobNumber * @param String jobNumber */ public void setJobNumber(String jobNumber) { this.set(this.ORB_JOB_NUMBER, jobNumber); } /** * Return the vertexClass */ public Class<? extends Vertex> getVertexClass() { return (Class<? extends Vertex>) this.getClass(this.ORB_VERTEX_CLASS, Vertex.class); } /** * Set the vertexClass * @param Class<?> vertexClass */ public void setVertexClass(Class<?> vertexClass) { this.set(this.ORB_VERTEX_CLASS, vertexClass.getCanonicalName()); } /** * Return the fileInputFormatClass */ public Class<? extends InputFormat> getFileInputFormatClass() { return (Class<? extends InputFormat>) this.getClass(this.ORB_VERTEX_CLASS, InputFormat.class); } /** * Set the fileInputFormatClass * @param Class<?> fileInputFormatClass */ public void setFileInputFormatClass(Class<?> fileInputFormatClass) { this.set(this.ORB_FILE_INPUT_FORMAT_CLASS, fileInputFormatClass.getCanonicalName()); } /** * Return the fileOutputFormatClass */ public Class<? extends OutputFormat> getFileOutputFormatClass() { return (Class<? extends OutputFormat>) this.getClass(this.ORB_FILE_OUTPUT_FORMAT_CLASS, OutputFormat.class); } /** * Set the fileOutputFormatClass * @param Class<?> fileOutputFormatClass */ public void setFileOutputFormatClass(Class<?> fileOutputFormatClass) { this.set(this.ORB_FILE_OUTPUT_FORMAT_CLASS, fileOutputFormatClass.getName()); } /** * Return the vertexInputFormatClass */ public Class<? extends VertexBuilder> getVertexInputFormatClass() { return (Class<? extends VertexBuilder>) this.getClass(this.ORB_VERTEX_INPUT_FORMAT_CLASS, VertexBuilder.class); } /** * Set the vertexInputFormatClass * @param Class<?> vertexInputFormatClass */ public void setVertexInputFormatClass(Class<?> vertexInputFormatClass) { this.set(this.ORB_VERTEX_INPUT_FORMAT_CLASS, vertexInputFormatClass.getName()); } /** * Return the numberOfPartitionsPerMachine */ public int getNumberOfPartitionsPerMachine() { return Integer.parseInt(this.get(this.ORB_PARTITIONS_PER_MACHINE)); } /** * Set the numberOfPartitionsPerMachine * @param int numberOfPartitionsPerMachine */ public void setNumberOfPartitionsPerMachine(int numberOfPartitionsPerMachine) { this.set(this.ORB_PARTITIONS_PER_MACHINE, Integer.toString(numberOfPartitionsPerMachine)); } /** * Return the numberOfVertexThreads */ public int getNumberOfVertexThreads() { return Integer.parseInt(this.get(this.ORB_PARTITION_VERTEX_THREADS)); } /** * Set the numberOfVertexThreads * @param int numberOfVertexThreads */ public void setNumberOfVertexThreads(int numberOfVertexThreads) { this.set(this.ORB_PARTITION_VERTEX_THREADS, Integer.toString(numberOfVertexThreads)); } /** * Return the numberOfMessageHandlers */ public int getNumberOfMessageHandlers() { return Integer.parseInt(this.get(this.ORB_PARTITION_MESSAGEHANDLER_THREADS)); } /** * Set the numberOfMessageHandlers * @param int i */ public void setNumberOfMessageHandlers(int i) { this.set(this.ORB_PARTITION_MESSAGEHANDLER_THREADS, Integer.toString(i)); } /** * Return the orbClusterName */ public String getOrbClusterName() { return new String(this.get(this.ORB_CLUSTER_NAME)); } /** * Set the orbClusterName * @param String orbClusterName */ public void setOrbClusterName(String orbClusterName) { this.set(this.ORB_CLUSTER_NAME, orbClusterName); } /** * Return the orbJobName */ public String getOrbJobName() { return new String(this.get(this.ORB_JOB_NAME)); } /** * Set the orbJobName * @param String orbJobName */ public void setOrbJobName(String orbJobName) { this.set(this.ORB_JOB_NAME, orbJobName); } /** * Return the orbZooKeeperQuorum */ public String getOrbZooKeeperQuorum() { return new String(this.get(this.ORB_ZOOKEEPER_QUORUM)); } /** * Set the orbZooKeeperQuorum * @param String orbZooKeeperQuorum */ public void setOrbZooKeeperQuorum(String orbZooKeeperQuorum) { this.set(this.ORB_ZOOKEEPER_QUORUM, orbZooKeeperQuorum); } /** * Return the orbLauncherNetworkDevice */ public String getOrbLauncherNetworkDevice() { return new String(this.get(this.ORB_LAUNCHER_NETWORKDEVICE)); } /** * Set the orbLauncherNetworkDevice * @param String orbLauncherNetworkDevice */ public void setOrbLauncherNetworkDevice(String orbLauncherNetworkDevice) { this.set(this.ORB_LAUNCHER_NETWORKDEVICE, orbLauncherNetworkDevice); } /** * Return the orbPartitionJavaopts */ public String getOrbPartitionJavaopts() { return this.get(this.ORB_PARTITION_JAVAOPTS); } /** * Set the orbPartitionJavaopts * @param String orbPartitionJavaopts */ public void setOrbPartitionJavaopts(String orbPartitionJavaopts) { this.set(this.ORB_PARTITION_JAVAOPTS, orbPartitionJavaopts); } /** * Return the nameNode */ public String getNameNode() { return new String(this.get(this.ORB_FS_DEFAULT_NAME)); } /** * Set the nameNode * @param String orbFsDefaultName */ public void setNameNode(String orbFsDefaultName) { this.set(this.ORB_FS_DEFAULT_NAME, orbFsDefaultName); } /** * Return the orbBasePort */ public int getOrbBasePort() { return Integer.parseInt(this.get(this.ORB_CLUSTER_BASEPORT)); } /** * Set the orbBasePort * @param int orbBasePort */ public void setOrbBasePort(int orbBasePort) { this.setInt(this.ORB_CLUSTER_BASEPORT, orbBasePort); } /** * Set the orbClassPaths * @param String[] orbClassPaths */ public void setOrbClassPaths(String[] orbClassPaths) { this.setStrings(this.ORB_CLASS_PATHS, orbClassPaths); } /** * Return the orbClassPaths */ public String[] getOrbClassPaths() { return this.getStrings(this.ORB_CLASS_PATHS); } /** * Set the orbClassPaths * @param String string */ public void setOrbClassPaths(String string) { this.set(this.ORB_CLASS_PATHS, string); } /** * Return the networkInterface */ public String getNetworkInterface() { return this.get(ORB_LAUNCHER_NETWORKDEVICE); } /** * Return the orbTrackerPort */ public int getOrbTrackerPort() { return Integer.parseInt(this.get(this.ORB_TRACKER_PORT)); } /** * Set the orbTrackerPort * @param int trackerPort */ public void setOrbTrackerPort(int trackerPort) { this.set(this.ORB_TRACKER_PORT, Integer.toString(trackerPort)); } /** * Return the jobHeartbeatTimeout */ public long getJobHeartbeatTimeout() { return Integer.parseInt(this.get(this.ORB_JOB_HEARTBEAT_TIMEOUT)); } /** * Set the jobHeartbeatTimeout * @param int heartbeatTimeout */ public void setJobHeartbeatTimeout(int heartbeatTimeout) { this.setInt(this.ORB_JOB_HEARTBEAT_TIMEOUT, heartbeatTimeout); } /** * Return the orbPartitionManagementBaseport */ public int getOrbPartitionManagementBaseport() { return Integer.parseInt(this.get(this.ORB_PARTITION_MANAGEMENT_BASEPORT)); } /** * Set the orbPartitionManagementBaseport * @param int port */ public void setOrbPartitionManagementBaseport(int port) { this.setInt(this.ORB_PARTITION_MANAGEMENT_BASEPORT, port); } /** * Return the orbRequestedPartitions */ public int getOrbRequestedPartitions() { return Integer.parseInt(this.get(this.ORB_REQUESTED_PARTITIONS)); } /** * Set the orbRequestedPartitions * @param int requested */ public void setOrbRequestedPartitions(int requested) { this.setInt(this.ORB_REQUESTED_PARTITIONS, requested); } /** * Return the orbReservedPartitions */ public int getOrbReservedPartitions() { return Integer.parseInt(this.get(this.ORB_RESERVED_PARTITIONS)); } /** * Set the orbReservedPartitions * @param int reserved */ public void setOrbReservedPartitions(int reserved) { this.setInt(this.ORB_RESERVED_PARTITIONS, reserved); } /** * Return the maximumJobTries */ public int getMaximumJobTries() { return Integer.parseInt(this.get(this.ORB_JOB_MAX_TRIES)); } /** * Set the maximumJobTries * @param int maxTries */ public void setMaximumJobTries(int maxTries) { this.setInt(this.ORB_JOB_MAX_TRIES, maxTries); } /** * Set the verticesPerBlock * @param int verticesPerBlock */ public void setVerticesPerBlock(int verticesPerBlock) { this.setInt(this.ORB_NUMBER_VERTICES_BLOCK, verticesPerBlock); } /** * Return the verticesPerBlock */ public int getVerticesPerBlock() { return Integer.parseInt(this.get(this.ORB_NUMBER_VERTICES_BLOCK)); } /** * Set the messagesPerBlock * @param int messagesPerBlock */ public void setMessagesPerBlock(int messagesPerBlock) { this.setInt(this.ORB_NUMBER_MESSAGES_BLOCK, messagesPerBlock); } /** * Return the messagesPerBlock */ public int getMessagesPerBlock() { return Integer.parseInt(this.get(this.ORB_NUMBER_MESSAGES_BLOCK)); } /** * Set the handlersPerServer * @param int handlersPerServer */ public void setHandlersPerServer(int handlersPerServer) { this.setInt(this.ORB_HANDLERS_PER_RPC_SERVER, handlersPerServer); } /** * Return the handlersPerServer */ public int getHandlersPerServer() { return Integer.parseInt(this.get(this.ORB_HANDLERS_PER_RPC_SERVER)); } /** * Set the inputSplitHandlerThreads * @param int inputSplitHandlerThreads */ public void setInputSplitHandlerThreads(int inputSplitHandlerThreads) { this.setInt(this.ORB_INPUT_SPLIT_HANDLER_THREADS, inputSplitHandlerThreads); } /** * Return the inputSplitHandlerThreads */ public int getInputSplitHandlerThreads() { return Integer.parseInt(this.get(this.ORB_INPUT_SPLIT_HANDLER_THREADS)); } /** * Set the messageHandlerThreads * @param int messageHandlerThreads */ public void setMessageHandlerThreads(int messageHandlerThreads) { this.setInt(this.ORB_MESSAGE_HANDLER_THREADS, messageHandlerThreads); } /** * Return the messageHandlerThreads */ public int getMessageHandlerThreads() { return Integer.parseInt(this.get(this.ORB_MESSAGE_HANDLER_THREADS)); } /** * Set the computeThreads * @param int computeThreads */ public void setComputeThreads(int computeThreads) { this.setInt(this.ORB_COMPUTE_THREADS, computeThreads); } /** * Return the computeThreads */ public int getComputeThreads() { return Integer.parseInt(this.get(this.ORB_COMPUTE_THREADS)); } /** * Return the verticesLoaderHandlerThreads */ public int getVerticesLoaderHandlerThreads() { return Integer.parseInt(this.get(this.ORB_VERTICES_HANDLER_THREADS)); } /** * Set the verticesLoaderHandlerThreads * @param int vertexThreads */ public void setVerticesLoaderHandlerThreads(int vertexThreads) { this.setInt(this.ORB_VERTICES_HANDLER_THREADS, vertexThreads); } /** * Adds file to be distributed to all machines in the cluster. * @param filePath is the local path to file that will be distributed */ public void addFileToDistribute(String filePath) { String tmp = this.get(this.ORB_LOCAL_FILES_TO_DISTRIBUTE); this.set(this.ORB_LOCAL_FILES_TO_DISTRIBUTE, tmp == null ? filePath : tmp + "," + filePath); } /** * Returns the String that represents the local file paths to the files that will be * distributed. The file paths are comma separated and returns an empty string * if there are no files to distribute. * @return The string of all files to be distributed as a comma separated string */ public String getDistributedFilePaths() { return this.get(this.ORB_LOCAL_FILES_TO_DISTRIBUTE); } public void addHDFSDistributedFile(String filePath) { String tmp = this.get(this.ORB_HDFS_FILES_TO_DISTRIBUTE); this.set(this.ORB_HDFS_FILES_TO_DISTRIBUTE, tmp == null ? filePath : tmp + "," + filePath); } public Path[] getHDFSdistributedFiles() { String tmp = this.get(this.ORB_HDFS_FILES_TO_DISTRIBUTE); Path[] result = null; if (tmp != null) { String[] paths = tmp.split(","); result = new Path[paths.length]; for (int i = 0; i < paths.length; i++) { result[i] = new Path(paths[i]); } } return result; } public void setPartitionDebug(boolean value) { this.setBoolean(this.ORB_PARTITION_DEBUG, value); } public boolean getPartitionDebug() { return Boolean.parseBoolean(this.get(this.ORB_PARTITION_DEBUG)); } public void setPartitionDebugBaseport(int value) { this.setInt(this.ORB_PARTITION_DEBUG_BASEPORT, value); } public int getPartitionDebugBaseport() { return Integer.parseInt(this.get(this.ORB_PARTITION_DEBUG_BASEPORT)); } public void setPartitionDebugIds(String value) { this.set(this.ORB_PARTITION_DEBUG_IDS, value); } public String getPartitionDebugIds() { return this.get(this.ORB_PARTITION_DEBUG_IDS); } }