@echo off @rem Licensed to the Apache Software Foundation (ASF) under one or more @rem contributor license agreements. See the NOTICE file distributed with @rem this work for additional information regarding copyright ownership. @rem The ASF licenses this file to You under the Apache License, Version 2.0 @rem (the "License"); you may not use this file except in compliance with @rem the License. You may obtain a copy of the License at @rem @rem http://www.apache.org/licenses/LICENSE-2.0 @rem @rem Unless required by applicable law or agreed to in writing, software @rem distributed under the License is distributed on an "AS IS" BASIS, @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem Runs a Hadoop command as a daemon. @rem @rem Environment Variables @rem @rem HADOOP_CONF_DIR Alternate conf dir. Default is %HADOOP_HOME%/conf. @rem HADOOP_LOG_DIR Where log files are stored. PWD by default. @rem HADOOP_MASTER host:path where hadoop code should be copied from @rem HADOOP_IDENT_STRING A string representing this instance of hadoop. %USERNAME% by default @rem setlocal set usage= "Usage: Pass arguments in the given order : hadoop-daemon.cmd [--config ] [--hosts hostlistfile] (start|stop) " @rem if no args specified, show usage if [%2] == [] ( echo %usage% goto :eof ) if not defined HADOOP_BIN_PATH ( set HADOOP_BIN_PATH=%~dp0 ) if "%HADOOP_BIN_PATH:~-1%" == "\" ( set HADOOP_BIN_PATH=%HADOOP_BIN_PATH:~0,-1% ) call :updatepath %HADOOP_BIN_PATH% set hadoop-config-script=%HADOOP_BIN_PATH%\hadoop-config.cmd call %hadoop-config-script% %* if "%1" == "--config" ( shift shift ) if "%1" == "--hosts" ( shift shift ) @rem get remaining arguments set startStop=%1 shift set command=%1 shift if exist %HADOOP_CONF_DIR%\hadoop-env.cmd ( call %HADOOP_CONF_DIR%\hadoop-env.cmd ) set hdfscommands=namenode secondarynamenode datanode for %%i in ( %hdfscommands% ) do ( if %command% == %%i set hdfscommand=true ) set mapredcommands=jobtracker tasktracker historyserver for %%i in ( %mapredcommands% ) do ( if %command% == %%i set mapredcommand=true ) @rem if an alternate config directory is specified generate new service xml if defined %HADOOP_CONF_DIR% ( move /Y %command%.xml %command%.backup.xml if defined hdfscommand ( %HADOOP_BIN_PATH%\hdfs.cmd --conf %HADOOP_CONF_DIR% makeServiceXml > %command%.xml ) else ( if defined mapredcommand ( %HADOOP_BIN_PATH%\mapred.cmd --conf %HADOOP_CONF_DIR% makeServiceXml > %command%.xml ) else ( @echo %usage% exit /b 1 ) ) if not exist %command%.xml ( @echo Generating new conf failed, copying back old conf move /Y %command%.backup.xml %command%.xml exit /b 2 ) ) if %startStop% == start ( @echo Stopping any existing services before starting sc stop %command% @echo starting %command% set errorlevel= sc start %command% if %errorlevel% NEQ 0 ( @echo Failed to start %command% service exit /b 2 ) goto :end ) else ( if %startStop% == stop ( @echo stopping %command% set errorlevel= sc stop %command% if %errorlevel% NEQ 0 ( @echo Failed to stop %command% service exit /b 2 ) goto :end ) else ( @echo %usage% exit /b 1 ) ) @rem Adds the path sent as argument to path variable :updatepath set path_to_add=%* set current_path_comparable=%path:(x86)=% set current_path_comparable=%current_path_comparable: =_% set path_to_add_comparable=%path_to_add:(x86)=% set path_to_add_comparable=%path_to_add_comparable: =_% for %%i in ( %current_path_comparable% ) do ( if /i "%%i" == "%path_to_add_comparable%" ( set path_to_add_exist=true ) ) set system_path_comparable= set path_to_add_comparable= if not defined path_to_add_exist path=%path_to_add%;%path% set path_to_add= goto :eof :end endlocal