我的新浪微博:http://weibo.com/freshairbrucewoo。
欢迎大家相互交流,共同提高技术。
第一章 Hadoop启动Shell启动脚本分析
第一节 start-all.sh脚本
此脚本很简单,就是根据运行此脚本的目录进入安装hadoop目录下的bin目录,然后运行启动hdfs和mapred的启动脚本。
- bin=`dirname "$0"`
- bin=`cd "$bin"; pwd`
- . "$bin"/hadoop-config.sh
- # start dfs daemons
- "$bin"/start-dfs.sh --config $HADOOP_CONF_DIR
- # start mapred daemons
- "$bin"/start-mapred.sh --config $HADOOP_CONF_DIR
第二节 Start-dfs.sh脚本
此脚本首先检查是否带有参数,代码如下:
- if [ $# -ge 1 ]; then
- nameStartOpt=$1
- shift
- case $nameStartOpt in
- (-upgrade)
- ;;
- (-rollback)
- dataStartOpt=$nameStartOpt
- ;;
- (*)
- echo $usage
- exit 1
- ;;
- esac
- fi
从以上代码可以看出此脚本只支持upgrade和rollback两个选项参数,一个参数用于更新文件系统,另一个是回滚文件系统。
然后就开始启动namenode、datanode和secondarynamenode节点,执行的脚本代码如下:
- "$bin"/hadoop-daemon.sh --config $HADOOP_CONF_DIR start namenode $nameStartOpt
- "$bin"/hadoop-daemons.sh --config $HADOOP_CONF_DIR start datanode $dataStartOpt
- "$bin"/hadoop-daemons.sh --config $HADOOP_CONF_DIR --hosts masters start secondarynamenode
代码中的$HADOOP_CONF_DIR是在另一个脚本中设置的,这个脚本是hadoop-config.sh,后面会详细介绍,因为这个脚本在每一个启动脚本执行中都先执行,目的是为了检查和设置一些环境变量,例如JAVA_HOME和HADOOP_HOME等,而这个脚本又会执行hadoop-env.sh脚本来设置用户配置的相关环境变量,后面详细介绍这两个脚本。
从上面的脚本代码可以看出在启动namenode节点是在hadoop-daemon.sh脚本中启动,下面一节将分析这个脚本。而datanode和secondarynamenode节点的启动又会通过hadoop-daemon.sh脚本来执行。后面也将分析这个脚本的运行情况。
第三节 hadoop-daemon.sh脚本
在具体介绍这个脚本以前先介绍几个环境变量的意义(在这个脚本的注释部分有介绍):
- HADOOP_CONF_DIR 选择配置文件目录。默认是${HADOOP_HOME}/conf。
- HADOOP_LOG_DIR 存放日志文件的目录。默认是 PWD 命令产生的目录
- HADOOP_MASTER host:path where hadoop code should be rsync'd from
- HADOOP_PID_DIR The pid files are stored. /tmp by default.
- HADOOP_IDENT_STRING A string representing this instance of hadoop. $USER by default
- HADOOP_NICENESS The scheduling priority for daemons. Defaults to 0.
这个脚本首先判断所带的参数是否小于1,如果小于就打印使用此脚本的使用帮助,shell代码如下:
- usage="Usage: hadoop-daemon.sh [--config <conf-dir>] [--hosts hostlistfile] (start|stop) <had oop-command> <args...>"
- if [ $# -le 1 ]; then
- echo $usage
- exit 1
- fi
然后同其他脚本一样执行hadoop-config.sh脚本检查和设置相关环境变量。对于此脚本,hadoop-config.sh脚本的作用就是把配置文件和主机列表的文件处理好了并设置相应的环境变量保存它们。
接着保存启动还是停止的命令和相关参数,如下(注意:shift的shell脚本的作用就是将shell脚本所带参数向前移动一个):
- startStop=$1
- shift
- command=$1
- shift
继续就是定义一个用于滚动日志的函数了,具体就不详细分析了。后面是一些根据配置文件中的配置选项来设置前面提到的环境变量,这些环境变量会用于具体启动namenode,例如有调度优先级的环境变量等。
最后就是根据命令还是控制namenode的启停(start或stop)了,具体代码如下:
- case $startStop in
- (start)
- mkdir -p "$HADOOP_PID_DIR"
- if [ -f $_HADOOP_DAEMON_PIDFILE ]; then
- if kill -0 `cat $_HADOOP_DAEMON_PIDFILE` > /dev/null 2>&1; then
- echo $command running as process `cat $_HADOOP_DAEMON_PIDFILE`. Stop it first.
- exit 1
- fi
- fi
- if [ "$HADOOP_MASTER" != "" ]; then
- echo rsync from $HADOOP_MASTER
- rsync -a -e ssh --delete --exclude=.svn --exclude='logs/*' --exclude='contrib/hod/logs/ *' $HADOOP_MASTER/ "$HADOOP_HOME"
- fi
- hadoop_rotate_log $_HADOOP_DAEMON_OUT
- echo starting $command, logging to $_HADOOP_DAEMON_OUT
- cd "$HADOOP_HOME"
- nice -n $HADOOP_NICENESS "$HADOOP_HOME"/bin/hadoop --config $HADOOP_CONF_DIR $command "$@ " < /dev/null
- ;;
- (stop)
- if [ -f $_HADOOP_DAEMON_PIDFILE ]; then
- if kill -0 `cat $_HADOOP_DAEMON_PIDFILE` > /dev/null 2>&1; then
- echo stopping $command
- kill `cat $_HADOOP_DAEMON_PIDFILE`
- else
- echo no $command to stop
- fi
- else
- echo no $command to stop
- fi
- ;;
- (*)
- echo $usage
- exit 1
- ;;
- esac
如果是start就是启动namenode的命令,那么首先创建存放pid文件的目录,如果存放pid的文件已经存在说明已经有namenode节点已经在运行了,那么就先停止在启动。然后根据日志滚动函数生成日志文件,最后就用nice根据调度优先级启动namenode,但是最终的启动还在另一个脚本hadoop,这个脚本是启动所有节点的终极脚本,它会选择一个带有main函数的类用java启动,这样才到达真正的启动java守护进程的效果,这个脚本是启动的重点,也是我们分析hadoop源码的入口处,所以后面章节重点分析。
如果是stop命令就执行简单的停止命令,其他都是错误的,打印提示使用此脚本的文档。
第四节 hadoop-daemons.sh和slaves.sh脚本
这个脚本简单,因为他最后也是通过上一节介绍的脚本来启动的,只是在这之前做了一些特殊处理,就是执行另一个脚本slaves.sh,代码如下:
- exec "$bin/slaves.sh" --config $HADOOP_CONF_DIR cd "$HADOOP_HOME" \;"$bin/hadoop-daemon.sh" --config $HADOOP_CONF_DIR "$@"
Slaves.sh脚本的主要功能就是通过ssh在所有的从节点上运行启动从节点的启动脚本,就是上面代码中的最后两条命令,进入hadoop的目录运行bin目录下的hadoop-daemon.sh脚本。执行这个功能的代码如下:
- if [ "$HOSTLIST" = "" ]; then
- if [ "$HADOOP_SLAVES" = "" ]; then
- export HOSTLIST="${HADOOP_CONF_DIR}/slaves"
- else
- export HOSTLIST="${HADOOP_SLAVES}"
- fi
- fi
- for slave in `cat "$HOSTLIST"|sed "s/#.*$//;/^$/d"`; do
- ssh $HADOOP_SSH_OPTS $slave {1}quot;${@// /\\ }" \
- 2>&1 | sed "s/^/$slave: /" &
- if [ "$HADOOP_SLAVE_SLEEP" != "" ]; then
- sleep $HADOOP_SLAVE_SLEEP
- fi
- done
- wait
以上代码首先找到所有从节点的主机名称(在slaves文件中,或者配置文件中配置有),然后通过for循环依次通过ssh远程后台运行启动脚本程序,最后等待程序完成才退出此shell脚本。
因此这个脚本主要完成的功能就是在所有从节点执行启动相应节点的脚本。这个脚本执行datanode是从slaves文件中找到datanode节点,执行secondarynamenode是在master文件找到节点主机(在start-dfs.sh脚本中用-hosts master指定的,不然默认会找到slaves文件,datanode就是按默认找到的)。
第五节 start-mapred.sh脚本
这个脚本就两句重要代码,就是分别启动jobtracker和tasktracker节点,其他的环境变量还是通过相应的脚本照样设置,如下:
- "$bin"/hadoop-daemon.sh --config $HADOOP_CONF_DIR start jobtracker
- "$bin"/hadoop-daemons.sh --config $HADOOP_CONF_DIR start tasktracker
从代码可以看出还是通过上一节相同的方式来启动,具体就不在分析了,请看前一节。
第六节 hadoop脚本
这个脚本才是重点,前面的脚本执行都是为这个脚本执行做铺垫的,这个脚本的功能也是相当强大,不仅仅可以启动各个节点的服务,还能够执行很多命令和工具。它会根据传入的参数来决定执行什么样的功能(包括启动各个节点服务),下面详细介绍这个脚本的执行流程和功能。
第一步:切换到bin目录下运行脚本hadoop-config.sh,代码如下:
- bin=`dirname "$0"`
- bin=`cd "$bin"; pwd`
- . "$bin"/hadoop-config.sh
第二步:得到hadoop运行实例的名称和检测运行hadoop的环境是否是windows下的linux模拟环境cygwin,代码如下:
- HADOOP_IDENT_STRING=${HADOOP_IDENT_STRING:-$USER}
- cygwin=false
- case "`uname`" in
- CYGWIN*) cygwin=true;;
- esac
第三步:判断参数个数是否为0个,是的话打印脚本使用方式并退出,否则就获得具体命令,获得命令的代码如下:
- COMMAND=$1
- shift
第四步:判断配置文件所在的目录下是否有hadoop-env.sh脚本,有就执行,代码如下:
- if [ -f "${HADOOP_CONF_DIR}/hadoop-env.sh" ]; then
- . "${HADOOP_CONF_DIR}/hadoop-env.sh"
- fi
第五步:设置java执行的相关参数,例如JAVA_HOME变量、运行jvm的最大堆空间等,代码如下:
- if [ "$JAVA_HOME" != "" ]; then
- #echo "run java in $JAVA_HOME"
- JAVA_HOME=$JAVA_HOME
- fi
- if [ "$JAVA_HOME" = "" ]; then
- echo "Error: JAVA_HOME is not set."
- exit 1
- fi
- JAVA=$JAVA_HOME/bin/java
- JAVA_HEAP_MAX=-Xmx1000m
- if [ "$HADOOP_HEAPSIZE" != "" ]; then
- JAVA_HEAP_MAX="-Xmx""$HADOOP_HEAPSIZE""m"
- fi
第六步:设置CLASSPATH,这一步很重要,因为不设置的话很多类可能找不到,具体设置了那些路径到CLASSPATH看下面的具体代码:
- CLASSPATH="${HADOOP_CONF_DIR}"
- CLASSPATH=${CLASSPATH}:$JAVA_HOME/lib/tools.jar
- if [ "$HADOOP_USER_CLASSPATH_FIRST" != "" ] && [ "$HADOOP_CLASSPATH" != "" ] ; then
- CLASSPATH=${CLASSPATH}:${HADOOP_CLASSPATH}
- fi
- if [ -d "$HADOOP_HOME/build/classes" ]; then
- CLASSPATH=${CLASSPATH}:$HADOOP_HOME/build/classes
- fi
- if [ -d "$HADOOP_HOME/build/webapps" ]; then
- CLASSPATH=${CLASSPATH}:$HADOOP_HOME/build
- fi
- if [ -d "$HADOOP_HOME/build/test/classes" ]; then
- CLASSPATH=${CLASSPATH}:$HADOOP_HOME/build/test/classes
- fi
- if [ -d "$HADOOP_HOME/build/tools" ]; then
- CLASSPATH=${CLASSPATH}:$HADOOP_HOME/build/tools
- fi
上面代码省略很大一部分,具体还有那些可以看具体的hadoop脚本。
第七步:根据第三步保存的命令选择对应的启动java类,如下:
- if [ "$COMMAND" = "classpath" ] ; then
- if $cygwin; then
- CLASSPATH=`cygpath -p -w "$CLASSPATH"`
- fi
- echo $CLASSPATH
- exit
- elif [ "$COMMAND" = "namenode" ] ; then
- CLASS='org.apache.hadoop.hdfs.server.namenode.NameNode'
- HADOOP_OPTS="$HADOOP_OPTS $HADOOP_NAMENODE_OPTS"
- elif [ "$COMMAND" = "secondarynamenode" ] ; then
- CLASS='org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode'
- HADOOP_OPTS="$HADOOP_OPTS $HADOOP_SECONDARYNAMENODE_OPTS"
- elif [ "$COMMAND" = "datanode" ] ; then
- CLASS='org.apache.hadoop.hdfs.server.datanode.DataNode'
- HADOOP_OPTS="$HADOOP_OPTS $HADOOP_DATANODE_OPTS"
- elif [ "$COMMAND" = "fs" ] ; then
- CLASS=org.apache.hadoop.fs.FsShell
- .....省略很多
- elif [[ "$COMMAND" = -* ]] ; then
- # class and package names cannot begin with a -
- echo "Error: No command named \`$COMMAND' was found. Perhaps you meant \`h adoop ${COMMAND#-}'"
- exit 1
- else
- CLASS=$COMMAND
- fi
具体可以执行那些命令从以上代码完全可以看出来,而且执行哪一个命令具体对应哪一个类都很有清楚的对应,让我们在分析某一个具体功能的代码的时候能够很块找到入口点。从上面代码最后第二行可以看出hadoop脚本也可以直接运行一个java的jar包或类,这样方便开发者测试自己开发的基于hadoop平台的程序,看样子小脚本能够学到大量知识。
第八步:如果是cygwin环境需要转换路径,代码如下:
- if $cygwin; then
- CLASSPATH=`cygpath -p -w "$CLASSPATH"`
- HADOOP_HOME=`cygpath -w "$HADOOP_HOME"`
- HADOOP_LOG_DIR=`cygpath -w "$HADOOP_LOG_DIR"`
- TOOL_PATH=`cygpath -p -w "$TOOL_PATH"`
- JAVA_LIBRARY_PATH=`cygpath -p -w "$JAVA_LIBRARY_PATH"`
- fi
第九步:设置java执行需要的本地库路径JAVA_LIBRARY_PATH,具体代码如下:
- if [ -d "${HADOOP_HOME}/build/native" -o -d "${HADOOP_HOME}/lib/native" -o - d "${HADOOP_HOME}/sbin" ]; then
- JAVA_PLATFORM=`CLASSPATH=${CLASSPATH} ${JAVA} -Xmx32m ${HADOOP_JAVA_PLATFO RM_OPTS} org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"`
- if [ -d "$HADOOP_HOME/build/native" ]; then
- if [ "x$JAVA_LIBRARY_PATH" != "x" ]; then
- JAVA_LIBRARY_PATH=${JAVA_LIBRARY_PATH}:${HADOOP_HOME}/build/native/$ {JAVA_PLATFORM}/lib
- else
- JAVA_LIBRARY_PATH=${HADOOP_HOME}/build/native/${JAVA_PLATFORM}/lib
- fi
- fi
- if [ -d "${HADOOP_HOME}/lib/native" ]; then
- if [ "x$JAVA_LIBRARY_PATH" != "x" ]; then
- JAVA_LIBRARY_PATH=${JAVA_LIBRARY_PATH}:${HADOOP_HOME}/lib/native/${JAV A_PLATFORM}
- else
- JAVA_LIBRARY_PATH=${HADOOP_HOME}/lib/native/${JAVA_PLATFORM}
- fi
- fi
- _JSVC_PATH=${HADOOP_HOME}/sbin/${JAVA_PLATFORM}/jsvc
- fi
- 如果是cygwin环境需要转换路径:
- if $cygwin; then
- JAVA_LIBRARY_PATH=`cygpath -p "$JAVA_LIBRARY_PATH"`
- fi
第十步:设置hadoop可选项变量:HADOOP_OPTS;
第十一步:首先判断是运行节点的启动节点运行命令还是普通的客户端命令,然后根据相关条件设置运行的模式(有三种:jvsc、su和normal),代码如下:
- if [[ "$COMMAND" == *node ]] || [[ "$COMMAND" == *tracker ]]; then
- command_uc=$(echo $COMMAND| tr a-z A-Z) #转换为大写
- user_var="HADOOP_${command_uc}_USER"
- _HADOOP_DAEMON_USER=$(eval "echo \$user_var")
- _HADOOP_DAEMON_USER=${_HADOOP_DAEMON_USER:-$(id -un)}
- if [ -z "$_HADOOP_DAEMON_USER" ]; then
- echo Please specify a user to run the $COMMAND by setting $user_var
- exit 1
- elif [ "$_HADOOP_DAEMON_USER" == "root" ]; then
- echo May not run daemons as root. Please specify $user_var
- exit 1
- fi
- if [ "$EUID" = "0" ] ; then
- if [ "$COMMAND" == "datanode" ] && [ -x "$_JSVC_PATH" ]; then
- _HADOOP_RUN_MODE="jsvc"
- elif [ -x /bin/su ]; then
- _HADOOP_RUN_MODE="su"
- else
- echo "Daemon wants to run as $_HADOOP_DAEMON_USER but script is runnin g as root"
- echo "and su is not available."
- exit 1
- fi
- else
- if [ "$_HADOOP_DAEMON_USER" != "$(whoami)" ]; then
- echo Daemon wants to run as $_HADOOP_DAEMON_USER but not running as th at user or root.
- exit 1
- fi
- _HADOOP_RUN_MODE="normal"
- fi
- else
- _HADOOP_RUN_MODE="normal"
- fi
第十二步:最后一步就是根据上面确定的运行模式具体运行命令,只有datanode节点能够使用jsvc运行,如下代码所示:
- case "$_HADOOP_RUN_MODE" in
- jsvc)
- case "$COMMAND" in
- datanode)
- _JSVC_STARTER_CLASS=org.apache.hadoop.hdfs.server.datanode.SecureDat aNodeStarter
- ;;
- *)
- echo "Cannot start $COMMAND with jsvc"
- exit 1
- ;;
- esac
- if [ "$_HADOOP_DAEMON_DETACHED" = "true" ]; then
- _JSVC_FLAGS="-pidfile $_HADOOP_DAEMON_PIDFILE
- -errfile &1
- -outfile $_HADOOP_DAEMON_OUT"
- ese
- .....省略一些代码,最终执行还是下面这一句代码:
- exec "$_JSVC_PATH" -Dproc_$COMMAND \
- $_JSVC_FLAGS \
- -user "$_HADOOP_DAEMON_USER" \
- -cp "$CLASSPATH" \
- $JAVA_HEAP_MAX $HADOOP_OPTS \
- $_JSVC_STARTER_CLASS "$@"
- ;;
如果是su和normal模式运行,所有的命令都可以正常的使用java来执行,如下代码:
- normal | su)
- # If we need to su, tack the command into a local variable
- if [ $_HADOOP_RUN_MODE = "su" ]; then
- _JAVA_EXEC="su $_HADOOP_DAEMON_USER -s $JAVA --"
- else
- _JAVA_EXEC="$JAVA"
- fi
- if [ "$_HADOOP_DAEMON_DETACHED" = "true" ]; then
- unset _HADOOP_DAEMON_DETACHED
- touch $_HADOOP_DAEMON_OUT
- nohup $_JAVA_EXEC -Dproc_$COMMAND $JAVA_HEAP_MAX $HADOOP_OPTS -classpa th "$CLASSPATH" $CLASS "$@" > "$_HADOOP_DAEMON_OUT" 2>&1 < /dev/null &
- if [ "$EUID" == "0" ]; then
- chown $_HADOOP_DAEMON_USER $_HADOOP_DAEMON_OUT
- fi
- echo $! > "$_HADOOP_DAEMON_PIDFILE"
- sleep 1
- head "$_HADOOP_DAEMON_OUT"
- else
- exec $_JAVA_EXEC -Dproc_$COMMAND $JAVA_HEAP_MAX $HADOOP_OPTS -classpat h "$CLASSPATH" $CLASS "$@"
- fi
- ;;
到此为止所有脚本执行完毕,剩余就是不能识别模式的错误处理和提示。在执行具体命令的时候可能涉及到用户名的检测,例如su可以指定一个用户名来运行,如果不指定就按照linux上的用户名来运行。
第七节 hadoop-config.sh和hadoop-env.sh脚本
这两个脚本基本上在上面分析的所有脚本都涉及到,他们的主要功能就是根据命令行参数来设置一些配置文件的路径已经环境变量的值,都是一些公共设置,所以在执行每个脚本的时候都设置一遍。具体的代码就不详细分析了!
第八节 总结
这个启动脚本还是比较复杂,从这个启动脚本我学习到很多知识,第一就是学到很多有关于shell编程的知识,里面很多shell编程的技巧值得学习和借鉴;第二,通过整个启动过程的了解,知道了运行hadoop需要设置的很多东西,包括我们在配置文件中配置的一些选项是怎么起作用的、设置了哪些classpath路径等,第三,详细了解了所有能够通过hadoop执行的命令。还有其他许多收获竟在不言中。
相关推荐
【Hadoop环境部署自动化Shell脚本】是一种高效的方法,用于快速搭建Hadoop集群,无论是用于学习还是开发。本文档提供了一个详细的脚本,涵盖了从Java环境配置到Hadoop集群的完全分布式安装的所有步骤,旨在降低...
hadoop集群关机重启shell脚本
在Hadoop生态系统中,Shell脚本扮演着至关重要的角色,特别是在大数据处理和集群管理中。这些脚本通常用于自动化任务,如数据迁移、作业调度、集群监控等。下面我们将深入探讨Hadoop Shell脚本的相关知识点。 一、...
在这个"shell脚本配置Hadoop伪分布式.zip"压缩包中,包含了配置Hadoop伪分布式环境所需的所有资源和指南。伪分布式模式是在单个节点上模拟分布式环境,这对于学习和测试Hadoop功能非常有用,无需复杂的多节点集群...
3. **Hadoop Shell脚本**:通过编写bash脚本,可以自动化执行一系列HDFS操作,提高工作效率。 4. **MapReduce编程**:理解MapReduce的工作原理,包括Mapper和Reducer阶段,以及Combiner和Partitioner的角色。学习...
为hive-0.11半自动安装脚本 使用前请先阅读本脚本注释部分 已有hadoop环境可使用本脚本 因为初识shell脚本 望大虾勿喷 如有不吝赐教者 不胜感激
接下来,我们来分析Shell脚本在Hadoop HA安装中的作用。Shell脚本是一种强大的自动化工具,可以用来执行一系列命令,如配置、安装、启动等操作。在Hadoop集群中,一个完善的自动化脚本可以大大简化安装过程,减少...
5. `start.sh`:这通常是一个启动脚本,用于执行一系列的配置操作,如生成密钥对、分发公钥到其他节点等。 6. `download`:可能是一个目录,存放了脚本或工具的下载链接,或者包含了从其他地方获取所需软件的逻辑。...
通过Hadoop的API或命令行工具,Shell脚本可以启动MapReduce作业,进一步处理数据,例如进行聚合、分类、关联分析等。 此外,Shell脚本还可以实现流程控制,如循环、条件判断,使得ETL过程更加灵活。通过编写脚本,...
### 大数据中Hadoop Shell介绍 ...总之,Hadoop Shell及其相关的脚本为Hadoop的部署、管理和日常维护提供了强大的支持。熟练掌握这些工具的使用方法,对于任何从事大数据处理工作的工程师来说都是必不可少的技能。
这个就是拿linux shell写的脚本,用来分析hadoop运行时的错误日志
5. **Hadoop Shell脚本编写** - 如何编写使用Hadoop命令的bash脚本,以实现自动化数据处理任务,如批量处理文件、数据清洗等。 - `for`循环和条件判断在Shell脚本中的应用,以及如何结合其他Unix工具如`awk`、`sed...
本篇将详细介绍如何利用Shell脚本在Hadoop环境中实现ETL过程。 1. **Hadoop基础** Hadoop是Apache软件基金会开发的开源分布式计算框架,基于Java语言。其核心组件包括HDFS(Hadoop Distributed File System)和...
通过编写Shell脚本,我们可以批量查询表结构,导出DDL,甚至执行更复杂的元数据管理任务。这不仅节省了时间,还降低了人为错误的可能性,对于大型Hadoop集群的运维工作尤其重要。同时,理解并熟练运用这些技巧,也能...
感谢我关注的朋友,我亦无他,收集整理的大部分脚本。 群发脚本XSync(xsync) #!/bin/bash #1 获取参数,如果不够直接退出 pcount=$# if ((pcount==0)); then echo 没有输入需要传递的文件或文件夹!!; exit; fi #2 ...
hadoop集群服务开启命令 简单好用 一个命令开启所有服务 炫酷!!!!!!
例如,通过`hadoop jar`命令运行MapReduce作业,或者用`spark-submit`启动Spark应用,这样可以利用shell脚本实现任务的批量执行和调度。 再者,shell脚本也可以与NoSQL数据库如HBase、Cassandra集成。通过shell命令...
安装hadoop时,集群式安装需要来回的切换机器,那么还有每一步都需要配置文件,很繁琐,所以就在这写了一个脚本
#shell脚本完成hadoop的集群安装 #步骤: #1.安装虚拟机,关闭防火墙、selinux #2.ssh免密码,编辑hosts文件 #3.安装JDK #4.安装hadoop #5.修改配置文件 #6.分发hadoop程序到各个节点 #7.启动集群
利用shell脚本 对Hadoop环境进行傻瓜式配置 先解压! 环节包括: 1.修改hostname 2.修改hosts 3.配置免密 4.Hadoop配置文件的更改 !!!!!!!!!!!!!!!!!!!! ps 请特别注意以下几个问题: 1....