public static void Main(string[] args) { Console.WriteLine("start running client: " + DateTime.Now); bool runOnYarn = false; if (args != null) { if (args.Length > 0) { runOnYarn = bool.Parse(args[0]); } if (args.Length > 1) { _className = args[1]; } if (args.Length > 2) { _clrFolder = args[2]; } if (args.Length > 3) { _reefJar = args[3]; } if (args.Length > 4) { _runCommand = args[4]; } } if (string.IsNullOrWhiteSpace(_reefJar)) { _reefJar = Path.Combine(Environment.GetEnvironmentVariable(ReefHome), DefaultReefJar); } if (string.IsNullOrWhiteSpace(_clrFolder)) { _clrFolder = Path.Combine(Environment.GetEnvironmentVariable(ReefHome), DefaultClrFolder); } // Configurable driver submission settings: // DriverMemory, default to 512 // DriverIdentifer, default to "ReefClrBridge" // Submit, default to True. Setting it to false and Java client will construct the driver.config and write to to FS without submitting the job // ClientWaitTime, default to -1 which means client will wait till Driver is done // SubmissionDirectory, default to a tmp folder on (H)DFS according to the YARN assigned application id, if user sets it, it must be guaranteed to be unique across multiple jobs // RunOnYarn, default to false to run on local runtime. // UpdateJarBeforeSubmission, default to true. Setting it to false can reduce startup time, but only if the jar file already contains all application dlls. // JavaLogLevel, default to INFO. DriverSubmissionSettings driverSubmissionSettings = new DriverSubmissionSettings() { RunOnYarn = runOnYarn, SubmissionDirectory = "reefClrBridgeTmp/job_" + Guid.NewGuid().ToString("N").Substring(0, 8) }; Console.WriteLine("start calling Run: " + DateTime.Now); ClrClientHelper.Run(AppDll, ClrConfigurations, driverSubmissionSettings, _reefJar, _runCommand, _clrFolder, _className); }
public static void Run(HashSet<string> appDlls, IConfiguration driverBridgeConfig, DriverSubmissionSettings driverSubmissionSettings, string reefJar = Constants.JavaBridgeJarFileName, string runCommand = "run.cmd", string clrFolder = ".", string className = Constants.BridgeLaunchClass) { using (LOGGER.LogFunction("ClrHandlerHelper::Run")) { if (driverSubmissionSettings.Submit) { ClrHandlerHelper.CopyDllsToAppDirectory(appDlls); UpdateJarFileWithAssemblies(reefJar); } using (LOGGER.LogScope("ClrHandlerHelper::serialize driverBridgeConfig to clrRuntimeConfigFile")) { var clrRuntimeConfigFile = Path.Combine(clrFolder, Constants.DriverBridgeConfiguration); new AvroConfigurationSerializer().ToFile(driverBridgeConfig, clrRuntimeConfigFile); LOGGER.Log(Level.Info, "CLR driver bridge configurations written to " + clrRuntimeConfigFile); } var startInfo = new ProcessStartInfo(); if (driverSubmissionSettings.RunOnYarn) { startInfo.FileName = runCommand; startInfo.Arguments = className + " " + clrFolder + driverSubmissionSettings.ToComamndLineArguments(); } else { startInfo.FileName = GetJavaBinary(); var loggingPrefix = string.Empty; if (driverSubmissionSettings.JavaLogLevel == JavaLoggingSetting.VERBOSE_TO_CLR) { loggingPrefix = Constants.JavaToCLRLoggingConfig + " "; } else if (driverSubmissionSettings.JavaLogLevel == JavaLoggingSetting.VERBOSE) { loggingPrefix = Constants.JavaVerboseLoggingConfig + " "; } startInfo.Arguments = loggingPrefix + @"-classpath " + reefJar + " " + Constants.BridgeLaunchClass + " " + clrFolder + " " + driverSubmissionSettings.ToComamndLineArguments(); } startInfo.RedirectStandardOutput = true; startInfo.UseShellExecute = false; startInfo.CreateNoWindow = false; LOGGER.Log(Level.Info, "Executing\r\n" + startInfo.FileName + "\r\n" + startInfo.Arguments); using (var process = Process.Start(startInfo)) { process.WaitForExit(); } } }
public static void Run(HashSet <string> appDlls, IConfiguration driverBridgeConfig, DriverSubmissionSettings driverSubmissionSettings, string reefJar = Constants.JavaBridgeJarFileName, string runCommand = "run.cmd", string clrFolder = ".", string className = Constants.BridgeLaunchClass) { using (LOGGER.LogFunction("ClrHandlerHelper::Run")) { if (driverSubmissionSettings.Submit) { ClrHandlerHelper.CopyDllsToAppDirectory(appDlls); UpdateJarFileWithAssemblies(reefJar); } using (LOGGER.LogScope("ClrHandlerHelper::serialize driverBridgeConfig to clrRuntimeConfigFile")) { string clrRuntimeConfigFile = Path.Combine(clrFolder, Constants.DriverBridgeConfiguration); new AvroConfigurationSerializer().ToFile(driverBridgeConfig, clrRuntimeConfigFile); LOGGER.Log(Level.Info, "CLR driver bridge configurations written to " + clrRuntimeConfigFile); } ProcessStartInfo startInfo = new ProcessStartInfo(); if (driverSubmissionSettings.RunOnYarn) { startInfo.FileName = runCommand; startInfo.Arguments = className + " " + clrFolder + driverSubmissionSettings.ToComamndLineArguments(); } else { startInfo.FileName = GetJavaBinary(); string loggingPrefix = string.Empty; if (driverSubmissionSettings.JavaLogLevel == JavaLoggingSetting.VERBOSE_TO_CLR) { loggingPrefix = Constants.JavaToCLRLoggingConfig + " "; } else if (driverSubmissionSettings.JavaLogLevel == JavaLoggingSetting.VERBOSE) { loggingPrefix = Constants.JavaVerboseLoggingConfig + " "; } startInfo.Arguments = loggingPrefix + @"-classpath " + reefJar + " " + Constants.BridgeLaunchClass + " " + clrFolder + " " + driverSubmissionSettings.ToComamndLineArguments(); } startInfo.RedirectStandardOutput = true; startInfo.UseShellExecute = false; startInfo.CreateNoWindow = false; LOGGER.Log(Level.Info, "Executing\r\n" + startInfo.FileName + "\r\n" + startInfo.Arguments); using (Process process = Process.Start(startInfo)) { process.WaitForExit(); } } }