设为首页 收藏本站
查看: 1787|回复: 0

[经验分享] hadoop常用服务管理命令

[复制链接]

尚未签到

发表于 2018-10-30 12:26:51 | 显示全部楼层 |阅读模式
  这几天正好在做cdh4.6.0到cdh5.2.0的升级测试,经常需要启动/关闭各种服务,简单看了下各个服务管理脚本,这里简单记录下:
  主要的服务管理脚本如下
  hdfs相关
  1)hadoop-daemon.sh,可用于启动单一的服务
  依次调用hadoop-config.sh和hadoop-env.sh
  加载相关的配置和环境变量,比如nn的jvm配置等(hadoop-env.sh)
  在这里可以设置
export HADOOP_ROOT_LOGGER=DEBUG,console  来控制观察hadoop启动时的debug日志
  以start为例,最终通过nohup的方式来启动服务
case $command in  
      namenode|secondarynamenode|datanode|journalnode|dfs|dfsadmin|fsck|balancer|zkfc)
  
        if [ -z "$HADOOP_HDFS_HOME" ]; then
  
          hdfsScript="$HADOOP_PREFIX"/bin/hdfs
  
        else
  
          hdfsScript="$HADOOP_HDFS_HOME"/bin/hdfs
  
        fi
  
        nohup nice -n $HADOOP_NICENESS $hdfsScript --config $HADOOP_CONF_DIR $command "$@" > "$log" 2>&1 < /dev/null &
  
      ;;
  

  
(*)
  
        nohup nice -n $HADOOP_NICENESS $hadoopScript --config $HADOOP_CONF_DIR $command "$@" > "$log" 2>&1 < /dev/null &
  
      ;;
  比如以rollback的形式启动dn,最终为hdfs --config /home/vipshop/conf datanode -rollback
  所以,如果要单独启动服务,可以使用hadoop-daemon.sh start  xxxx这种形式。
  hdfs脚本会调用具体的类,比如namenode会调用org.apache.hadoop.hdfs.server.namenode.NameNode类,最终的命令java  xxxx org.apache.hadoop.hdfs.server.namenode.NameNode   xxxx
  2)hadoop-daemons.sh,hadoop-daemon.sh的复数类型,可用于启动多个服务器的服务,比如dn,nm
  调用slaves.sh和
hadoop-daemon.sh --config /home/vipshop/conf --script hdfs start namenode  等命令
  3)refresh-namenodes.sh
  #refreshes all namenodes(hdfs dfsadmin -fs hdfs://xxxx -refreshNodes)
  4)slaves.sh 解析slaves文件,并循环ssh调用命令,比如循环start datanode
if [ "$HADOOP_SLAVE_NAMES" != '' ] ; then  
  SLAVE_NAMES=$HADOOP_SLAVE_NAMES
  
else
  
  SLAVE_FILE=${HADOOP_SLAVES:-${HADOOP_CONF_DIR}/slaves}
  
  SLAVE_NAMES=$(cat "$SLAVE_FILE" | sed  's/#.*$//;/^$/d')
  
fi
  
# start the daemons
  
for slave in $SLAVE_NAMES ; do
  
ssh $HADOOP_SSH_OPTS $slave $"${@// /\\ }" \
  
   2>&1 | sed "s/^/$slave: /" &
  
if [ "$HADOOP_SLAVE_SLEEP" != "" ]; then
  
   sleep $HADOOP_SLAVE_SLEEP
  
fi
  
done
  5)start-dfs.sh  #启动nn,dn,jn,snn (相反关闭为stop-dfs.sh)
  启动时调用的命令分布如下
#hadoop-daemons.sh --config xxx --script  hdfs start namenode xxx  
#hadoop-daemons.sh --config xxx --script  hdfs start datanode  xxx
  
#hadoop-daemons.sh --config xxx --script  hdfs start journalnode
  
#hadoop-daemons.sh --config xxx --script  hdfs start secondarynamenode
  其中nn,dn的启动时,可以带入-upgrade或者-rollback参数,控制升级和回滚操作
  (snn和jn在升级或者回滚时不需要做特殊操作)
  nn,jn,snn的启动都需要带入hostname
  比如nn:
NAMENODES=$($HADOOP_PREFIX/bin/hdfs getconf -namenodes)  
echo "Starting namenodes on [$NAMENODES]"
  
"$HADOOP_PREFIX/sbin/hadoop-daemons.sh" \
  
  --config "$HADOOP_CONF_DIR" \
  
  --hostnames "$NAMENODES" \
  
  --script "$bin/hdfs" start namenode $nameStartOpt
  jn:
SHARED_EDITS_DIR=$($HADOOP_PREFIX/bin/hdfs getconf -confKey dfs.namenode.shared.edits.dir 2>&-)  #通过获取dfs.namenode.shared.edits.dir的设置
case "$SHARED_EDITS_DIR" in  
qjournal://*)
  
  JOURNAL_NODES=$(echo "$SHARED_EDITS_DIR" | sed 's,qjournal://\([^/]*\)/.*,\1,g; s/;/ /g; s/:[0-9]*//g')
  
  echo "Starting journal nodes [$JOURNAL_NODES]"
  
  "$HADOOP_PREFIX/sbin/hadoop-daemons.sh" \
  
      --config "$HADOOP_CONF_DIR" \
  

  
--hostnames "$JOURNAL_NODES" \
  
      --script "$bin/hdfs" start journalnode ;;
  
esac
  hdfs解析传入的参数,并最终调用对应的java实现类的main方法。比如
  hdfs getconf -namenodes调用java  xxx org.apache.hadoop.hdfs.tools.GetConf -namenodes
  hdfs getconf -confKey dfs.namenode.shared.edits.dir调用java xxx  org.apache.hadoop.hdfs.tools.GetConf -confKey dfs.namenode.shared.edits.dir
  6)start-secure-dns.sh #kerberos环境下启动dn的脚本
  7)start-balancer.sh #启动balance服务(相反关闭为stop-balancer.sh)
  #调用hdfs start balancer (org.apache.hadoop.hdfs.server.balancer.Balancer类)
  8)start-all.sh  ##start-dfs.sh + start-yarn.sh (相反关闭为stop-all.sh)
  yarn相关
  1)yarn-daemon.sh
  最终调用yarn xxx,比如yarn start nodemanager
  2)yarn-daemons.sh
  会调用slaves.sh和yarn-daemon.sh
  3)start-yarn.sh,(相反关闭为stop-yarn.sh)
  #yarn-daemon.sh   start resourcemanager
  yarn-daemons.sh   start nodemanager
  综上:
  以要启动dn为例
hadoop-daemons.sh-->hadoop-daemon.sh-->hdfs namenode start---->org.apache.hadoop.hdfs.server.namenode.NameNode类的main方法


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-628495-1-1.html 上篇帖子: [译]下一代的Hadoop Mapreduce – 如何编写YARN应用程序 下篇帖子: Hadoop源码解读之(一)>>>>>>>>>>NameNode
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表