大数据学习笔记:windows下hadoop的启动脚本分析,start-all.cmd
2017-08-04 22:29
1396 查看
以start-all.cmd为起点分析hadoop启动过程。
若无定义则设置HADOOP_BIN_PATH变量,取start-all.cmd所在目录(C:\DevProgram\hadoop-2.7.3\sbin)进行赋值,因为start-all.cmd就处于sbin目录下。
调用另一个批处理文件C:\DevProgram\hadoop-2.7.3\libexec\hadoop-config.cmd
转到hadoop-config.cmd代码。
转到hadoop-env.cmd代码。
安全相关变量。
回到hadoop-config.cmd代码。
往CLASSPATH变量中追加所需类的路径。
回到start-all.cmd代码。
调用C:\DevProgram\hadoop-2.7.3\sbin\start-dfs.cmd与C:\DevProgram\hadoop-2.7.3\sbin\start-yarn.cmd
echo This script is Deprecated. Instead use start-dfs.cmd and start-yarn.cmd此句输出提示信息,建议使用start-dfs.cmd与start-yarn.cmd批处理命令。
if not defined HADOOP_BIN_PATH ( set HADOOP_BIN_PATH=%~dp0 )
若无定义则设置HADOOP_BIN_PATH变量,取start-all.cmd所在目录(C:\DevProgram\hadoop-2.7.3\sbin)进行赋值,因为start-all.cmd就处于sbin目录下。
if "%HADOOP_BIN_PATH:~-1%" == "\" ( set HADOOP_BIN_PATH=%HADOOP_BIN_PATH:~0,-1% )":~":对字符串的切片操作。此句意为若HADOOP_BIN_PATH以"\"结尾,则滤掉这个反斜杠。
set DEFAULT_LIBEXEC_DIR=%HADOOP_BIN_PATH%\..\libexec设置DEFAULT_LIBEXEC_DIR变量,观察文件目录结构即可理解此句。HADOOP_BIN_PATH已被赋为"C:\DevProgram\hadoop-2.7.3\sbin",取其父目录下的libexec目录赋给DEFAULT_LIBEXEC_DIR:
if not defined HADOOP_LIBEXEC_DIR ( set HADOOP_LIBEXEC_DIR=%DEFAULT_LIBEXEC_DIR% )若未定义则定义HADOOP_LIBEXEC_DIR。
call %HADOOP_LIBEXEC_DIR%\hadoop-config.cmd %*
调用另一个批处理文件C:\DevProgram\hadoop-2.7.3\libexec\hadoop-config.cmd
转到hadoop-config.cmd代码。
if not defined HADOOP_COMMON_DIR ( set HADOOP_COMMON_DIR=share\hadoop\common ) if not defined HADOOP_COMMON_LIB_JARS_DIR ( set HADOOP_COMMON_LIB_JARS_DIR=share\hadoop\common\lib ) if not defined HADOOP_COMMON_LIB_NATIVE_DIR ( set HADOOP_COMMON_LIB_NATIVE_DIR=lib\native ) if not defined HDFS_DIR ( set HDFS_DIR=share\hadoop\hdfs ) if not defined HDFS_LIB_JARS_DIR ( set HDFS_LIB_JARS_DIR=share\hadoop\hdfs\lib ) if not defined YARN_DIR ( set YARN_DIR=share\hadoop\yarn ) if not defined YARN_LIB_JARS_DIR ( set YARN_LIB_JARS_DIR=share\hadoop\yarn\lib ) if not defined MAPRED_DIR ( set MAPRED_DIR=share\hadoop\mapreduce ) if not defined MAPRED_LIB_JARS_DIR ( set MAPRED_LIB_JARS_DIR=share\hadoop\mapreduce\lib )设置一系列路径变量,目的是为了提取不同路径下的Java包。
set HADOOP_HOME=%~dp0将hdfs-config.cmd所在目录的父目录路径赋给HADOOP_HOME
for %%i in (%HADOOP_HOME%.) do ( set HADOOP_HOME=%%~dpi ) if "%HADOOP_HOME:~-1%" == "\" ( set HADOOP_HOME=%HADOOP_HOME:~0,-1% )此句同样为设置HADOOP_HOME变量,并过滤掉其结尾的反斜杠(如果有的话)。
if not exist %HADOOP_HOME%\share\hadoop\common\hadoop-common-*.jar ( @echo +================================================================+ @echo ^| Error: HADOOP_HOME is not set correctly ^| @echo +----------------------------------------------------------------+ @echo ^| Please set your HADOOP_HOME variable to the absolute path of ^| @echo ^| the directory that contains the hadoop distribution ^| @echo +================================================================+ exit /b 1 )若缺失包则报错并退出。
if not defined HADOOP_CONF_DIR ( set HADOOP_CONF_DIR=%HADOOP_HOME%\etc\hadoop )将C:\DevProgram\hadoop-2.7.3\etc\hadoop赋给HADOOP_CONF_DIR,start-all.cmd中将会用到这一变量
if "%1" == "--config" ( set HADOOP_CONF_DIR=%2 shift shift )判断用户键入的命令中是否指定了自定义配置目录(通过参数--config),如果有的话则将用户指定的目录赋给HADOOP_CONF_DIR
if "%1" == "--loglevel" ( set HADOOP_LOGLEVEL=%2 shift shift )
if "%1" == "--hosts" ( set HADOOP_SLAVES=%HADOOP_CONF_DIR%\%2 shift shift )同理,这两局用于检测用户命令中是否指定了相关的自定义参数。
if exist %HADOOP_CONF_DIR%\hadoop-env.cmd ( call %HADOOP_CONF_DIR%\hadoop-env.cmd )调用%HADOOP_CONF_DIR%\hadoop-env.cmd。
转到hadoop-env.cmd代码。
set JAVA_HOME=%JAVA_HOME%设置Java主目录。
if exist %HADOOP_HOME%\contrib\capacity-scheduler ( if not defined HADOOP_CLASSPATH ( set HADOOP_CLASSPATH=%HADOOP_HOME%\contrib\capacity-scheduler\*.jar ) else ( set HADOOP_CLASSPATH=%HADOOP_CLASSPATH%;%HADOOP_HOME%\contrib\capacity-scheduler\*.jar ) )将容量调度器相关包追加到hadoop的类路径下。(此版本hadoop目录下没找到相关文件)
if not defined HADOOP_SECURITY_LOGGER ( set HADOOP_SECURITY_LOGGER=INFO,RFAS ) if not defined HDFS_AUDIT_LOGGER ( set HDFS_AUDIT_LOGGER=INFO,NullAppender )
安全相关变量。
set HADOOP_NAMENODE_OPTS=-Dhadoop.security.logger=%HADOOP_SECURITY_LOGGER% -Dhdfs.audit.logger=%HDFS_AUDIT_LOGGER% %HADOOP_NAMENODE_OPTS% set HADOOP_DATANODE_OPTS=-Dhadoop.security.logger=ERROR,RFAS %HADOOP_DATANODE_OPTS% set HADOOP_SECONDARYNAMENODE_OPTS=-Dhadoop.security.logger=%HADOOP_SECURITY_LOGGER% -Dhdfs.audit.logger=%HDFS_AUDIT_LOGGER% %HADOOP_SECONDARYNAMENODE_OPTS% set HADOOP_CLIENT_OPTS=-Xmx512m %HADOOP_CLIENT_OPTS%名称节点、数据节点、辅助节点以及客户端的一些选项。
set HADOOP_SECURE_DN_USER=%HADOOP_SECURE_DN_USER% set HADOOP_SECURE_DN_LOG_DIR=%HADOOP_LOG_DIR%\%HADOOP_HDFS_USER% set HADOOP_PID_DIR=%HADOOP_PID_DIR% set HADOOP_SECURE_DN_PID_DIR=%HADOOP_PID_DIR% set HADOOP_IDENT_STRING=%USERNAME%待分析。
回到hadoop-config.cmd代码。
if not defined JAVA_HOME ( echo Error: JAVA_HOME is not set. goto :eof )
if not exist %JAVA_HOME%\bin\java.exe ( echo Error: JAVA_HOME is incorrectly set. echo Please update %HADOOP_HOME%\conf\hadoop-env.cmd goto :eof )若不存在Java环境及其相关文件则报错。
set JAVA=%JAVA_HOME%\bin\java设置JAVA变量。
set JAVA_HEAP_MAX=-Xmx1000m设置Java最大堆内存。
if defined HADOOP_HEAPSIZE ( set JAVA_HEAP_MAX=-Xmx%HADOOP_HEAPSIZE%m )若设置了hadoop的堆大小,则用其覆盖掉Java堆大小。
set CLASSPATH=%HADOOP_CONF_DIR%设置CLASSPATH变量。
if not defined HADOOP_COMMON_HOME ( if exist %HADOOP_HOME%\share\hadoop\common ( set HADOOP_COMMON_HOME=%HADOOP_HOME% ) )设置HADOOP_COMMON_HOME变量。
if exist %HADOOP_COMMON_HOME%\%HADOOP_COMMON_DIR%\webapps ( set CLASSPATH=!CLASSPATH!;%HADOOP_COMMON_HOME%\%HADOOP_COMMON_DIR% )
if exist %HADOOP_COMMON_HOME%\%HADOOP_COMMON_LIB_JARS_DIR% ( set CLASSPATH=!CLASSPATH!;%HADOOP_COMMON_HOME%\%HADOOP_COMMON_LIB_JARS_DIR%\* )
set CLASSPATH=!CLASSPATH!;%HADOOP_COMMON_HOME%\%HADOOP_COMMON_DIR%\*
往CLASSPATH变量中追加所需类的路径。
if not defined HADOOP_LOG_DIR ( set HADOOP_LOG_DIR=%HADOOP_HOME%\logs )
if not defined HADOOP_LOGFILE ( set HADOOP_LOGFILE=hadoop.log )
if not defined HADOOP_LOGLEVEL ( set HADOOP_LOGLEVEL=INFO )
if not defined HADOOP_ROOT_LOGGER ( set HADOOP_ROOT_LOGGER=%HADOOP_LOGLEVEL%,console )设置日志相关变量。
if not defined HADOOP_POLICYFILE ( set HADOOP_POLICYFILE=hadoop-policy.xml )待分析。
for /f "delims=" %%A in ('%JAVA% -Xmx32m %HADOOP_JAVA_PLATFORM_OPTS% -classpath "%CLASSPATH%" org.apache.hadoop.util.PlatformName') do set JAVA_PLATFORM=%%A
set JAVA_PLATFORM=%JAVA_PLATFORM: =_%待分析。
set JAVA_LIBRARY_PATH= if exist %HADOOP_COMMON_HOME%\target\bin ( set JAVA_LIBRARY_PATH=%HADOOP_COMMON_HOME%\target\bin )
if exist %HADOOP_COMMON_HOME%\bin ( set JAVA_LIBRARY_PATH=%JAVA_LIBRARY_PATH%;%HADOOP_COMMON_HOME%\bin )设置JAVA的库路径。
set TOOL_PATH=%HADOOP_HOME%\share\hadoop\tools\lib\*设置工具路径。
set HADOOP_OPTS=%HADOOP_OPTS% -Dhadoop.log.dir=%HADOOP_LOG_DIR% set HADOOP_OPTS=%HADOOP_OPTS% -Dhadoop.log.file=%HADOOP_LOGFILE% set HADOOP_OPTS=%HADOOP_OPTS% -Dhadoop.home.dir=%HADOOP_HOME% set HADOOP_OPTS=%HADOOP_OPTS% -Dhadoop.id.str=%HADOOP_IDENT_STRING% set HADOOP_OPTS=%HADOOP_OPTS% -Dhadoop.root.logger=%HADOOP_ROOT_LOGGER% if defined JAVA_LIBRARY_PATH ( set HADOOP_OPTS=%HADOOP_OPTS% -Djava.library.path=%JAVA_LIBRARY_PATH% ) set HADOOP_OPTS=%HADOOP_OPTS% -Dhadoop.policy.file=%HADOOP_POLICYFILE%
set HADOOP_OPTS=%HADOOP_OPTS% -Djava.net.preferIPv4Stack=true一些选项。
if not defined HADOOP_HDFS_HOME ( if exist %HADOOP_HOME%\%HDFS_DIR% ( set HADOOP_HDFS_HOME=%HADOOP_HOME% ) )设置HDFS主目录。
if exist %HADOOP_HDFS_HOME%\%HDFS_DIR%\webapps ( set CLASSPATH=!CLASSPATH!;%HADOOP_HDFS_HOME%\%HDFS_DIR% ) if exist %HADOOP_HDFS_HOME%\%HDFS_LIB_JARS_DIR% ( set CLASSPATH=!CLASSPATH!;%HADOOP_HDFS_HOME%\%HDFS_LIB_JARS_DIR%\* ) set CLASSPATH=!CLASSPATH!;%HADOOP_HDFS_HOME%\%HDFS_DIR%\*往类路径中追加内容。
if not defined HADOOP_YARN_HOME ( if exist %HADOOP_HOME%\%YARN_DIR% ( set HADOOP_YARN_HOME=%HADOOP_HOME% ) )设置yarn主目录。
if exist %HADOOP_YARN_HOME%\%YARN_DIR%\webapps ( set CLASSPATH=!CLASSPATH!;%HADOOP_YARN_HOME%\%YARN_DIR% ) if exist %HADOOP_YARN_HOME%\%YARN_LIB_JARS_DIR% ( set CLASSPATH=!CLASSPATH!;%HADOOP_YARN_HOME%\%YARN_LIB_JARS_DIR%\* ) set CLASSPATH=!CLASSPATH!;%HADOOP_YARN_HOME%\%YARN_DIR%\*追加到类路径中。
if not defined HADOOP_MAPRED_HOME ( if exist %HADOOP_HOME%\%MAPRED_DIR% ( set HADOOP_MAPRED_HOME=%HADOOP_HOME% ) )设置mapreduce主目录。
if not "%HADOOP_MAPRED_HOME%\%MAPRED_DIR%" == "%HADOOP_YARN_HOME%\%YARN_DIR%" ( if exist %HADOOP_MAPRED_HOME%\%MAPRED_DIR%\webapps ( set CLASSPATH=!CLASSPATH!;%HADOOP_MAPRED_HOME%\%MAPRED_DIR% ) if exist %HADOOP_MAPRED_HOME%\%MAPRED_LIB_JARS_DIR% ( set CLASSPATH=!CLASSPATH!;%HADOOP_MAPRED_HOME%\%MAPRED_LIB_JARS_DIR%\* ) set CLASSPATH=!CLASSPATH!;%HADOOP_MAPRED_HOME%\%MAPRED_DIR%\* )追加到类路径中。
if defined HADOOP_CLASSPATH ( if not defined HADOOP_USE_CLIENT_CLASSLOADER ( if defined HADOOP_USER_CLASSPATH_FIRST ( set CLASSPATH=%HADOOP_CLASSPATH%;%CLASSPATH%; ) else ( set CLASSPATH=%CLASSPATH%;%HADOOP_CLASSPATH%; ) ) )如果用户指定了类路径,则将其追加到类路径中。
回到start-all.cmd代码。
if exist %HADOOP_HDFS_HOME%\sbin\start-dfs.cmd ( call %HADOOP_HDFS_HOME%\sbin\start-dfs.cmd --config %HADOOP_CONF_DIR% )
if exist %HADOOP_YARN_HOME%\sbin\start-yarn.cmd ( call %HADOOP_YARN_HOME%\sbin\start-yarn.cmd --config %HADOOP_CONF_DIR% )
调用C:\DevProgram\hadoop-2.7.3\sbin\start-dfs.cmd与C:\DevProgram\hadoop-2.7.3\sbin\start-yarn.cmd
相关文章推荐
- 大数据学习笔记:启动脚本分析,hadoop.cmd
- 大数据学习笔记:启动脚本分析,start-dfs.cmd与start-yarn.cmd
- hadoop启动脚本分析:start-all.sh
- Hadoop学习笔记(一)HBase脚本分析(一)start-hbase.sh
- hadoop学习笔记之start-all.sh 无法启动NameNode,DataNode
- Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗
- 大数据学习笔记:修改windows下的hosts文件便于hadoop的web访问
- Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗
- Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗
- Hadoop数据分析平台学习笔记1
- 2. Python脚本学习实战笔记二 分析提取数据成图
- Hadoop学习笔记(六)启动Shell分析
- Hadoop2.6.0学习笔记(八)Hadoop启动脚本介绍
- hadoop相关启动脚本分析 有助于troubleshoot,顺便学习shell
- 大数据学习笔记:配置windows下的hadoop
- hadoop 启动脚本start-all.sh执行序列
- Hadoop学习笔记(一)HBase脚本分析(三)hbase
- Hadoop学习笔记(一)HBase脚本分析(二)hbase-daemon.sh
- Hadoop学习笔记(一)HBase脚本分析(二)hbase-daemon.sh
- Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗