前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop数据分析平台实战——020Hadoop Shell命令(初学跳过)离线数据分析平台实战——020Hadoop Shell命令(可跳过)

Hadoop数据分析平台实战——020Hadoop Shell命令(初学跳过)离线数据分析平台实战——020Hadoop Shell命令(可跳过)

作者头像
Albert陈凯
发布2018-04-08 10:57:19
1.1K0
发布2018-04-08 10:57:19
举报
文章被收录于专栏:Albert陈凯Albert陈凯

离线数据分析平台实战——020Hadoop Shell命令(可跳过)

Hadoop Shell命令简单描述

Hadoop的Shell命令主要分为两类:

  • 一类是启动命令
  • 一类是控制/操作命令(hdfs+mapred+yarn) 其中启动命令位于sbin目录下面, 控制/操作命令主要位于bin目录下面 其实最终的启动命令也是调用控制命令来进行集群服务的启动,区别在于启动命令中需要使用ssh的相关命令来控制其他机器启动服务, 而控制/操作命令主要是直接调用hadoop提供的服务类接口。

Hadoop配置信息

Hadoop命令的执行先需要设置配置信息, 然后再进行命令的执行; 了解命令必须先了解hadoop的配置信息。 Hadoop的配置信息主要在三个地方,分别是 ${HADOOP_HOME}/libexec, 主要储存hadoop的默认环境变量信息, ${HADOOP_HOME}/etc/hadoop, 主要是我们搭建环境的时候配置的环境变量信息 ${HADOOP_HOME}/share/hadoop。 主要是hadoop的相关依赖包信息,包括各个模块依赖的其他第三方jar等信息。

Hadoop环境信息配置脚本

  1. libexec/hadoop-config.sh:最基本的、公用的环境变量配置脚本,会调用etc/hadoop/hadoop-env.sh脚本。主要是配置java启动项相关参数,比如java执行环境的classpath等。
  2. libexec/hdfs-config.sh: hdfs对应的配置信息,里面会调用hadoop-config.sh
  3. libexec/mapred-config.sh: mapred对应的配置信息,里面会调用hadoop-config.sh
  4. libexec/yarn-config.sh:yarn对应的配置信息,里面会调用hadoop-config.sh
  5. libexec/httpfs-config.sh&kms-config.sh: 分别对应webhdfs和kms(Key Management Service)的配置信息。
  6. etc/hadoop/hadoop-env.sh: 用户自定义的公用的相关环境变量信息,比如JAVA_HOMEHADOOP_PID_DIR, HADOOP_CLASSPATH等(基本上除httpfs和kms外其他服务均就会调用该脚本)。
  7. etc/hadoop/mapred-env.sh:mapred相关的环境变量信息,比如配置mapred相关的pid存储路径(historyserver)等。
  8. etc/hadoop/yarn-env.sh: yarn相关环境变量信息(yarn相关服务执行的时候会调用该脚本)。
  9. etc/hadoop/httpfs-env.sh&kms-env.sh:具体的webhdfs和kms相关的环境变量信息,比如日志存储路径,pid存储路径等。

distribute-exclude.sh

作用:

将需要排除的datanode节点主机文件发布到所有NN机器上去。

参数:

前置条件:

集群必须启动;需要在hdfs-site.xml文件中指定dfs.hosts.exclude,默认为空,如果需要的话,可以指定一个文件的绝对路径。

httpfs.sh

作用:

启动/停止webhdfs,主要是提供一个基于HTTP的RESTful操作接口,基本包括hdfs文件系统的所有命令。

参数:

debug, start(启动), stop(停止)等。

前置条件:

hdfs相关服务必须启动;需要在core-site.xml文件中指定hadoop.proxyuser.#user#.hostshadoop.proxyuser.#user#.groups,前一个参数中指定代理用户可代理的用户ip,后一个参数指定代理用户所属组,参数均可以为数组信息的value,如果给定*表示不进行限制。#user#指启动httpfs服务的用户名,也是访问api时候携带的用户名。并指定dfs.webhdfs.enabled是否启动webhdfs,默认为true启动。

image.png

这个是最简单的一个配置信息,如果需要自定义其他信息,比如监听端口号,pid存储路径等一些列信息,那么需要在etc/hadoop/httpfs-env.sh中进行配置。比如端口号配置信息为HTTPFS_HTTP_PORT默认为14000,pid存储文件为CATALINA_PID默认/tmp/httpfs.pid

httpfs.sh命令简单介绍

启动/停止服务: httpfs.sh start/stop RESTful API:

  1. 获取指定路径的liststatus信息,命令为LISTSTATUS,请求方式为GET。
  2. 创建一个文件夹, 命令为MKDIRS,请求方式为PUT。
  3. 删除一个文件,命令为DELETE,请求方式为DELETE。
  4. 新增一个文件并打开,命令CREATE,请求方式PUT。
  5. 打开一个文件,命令为OPEN,请求方式GET。

hadoop-daemon.sh

作用:

启动/停止当前节点的hdfs相关的服务或者执行相对应的脚本命令。

命令格式:

hadoop-daemon.sh [--config <conf-dir>] [--hosts hostlistfile] [--script script] (start|stop) (namenode|secondarynamenode|datanode|journalnode|dfs|dfsadmin|fsck|balancer|zkfc|其他)

注意:

hadoop-daemons.sh其实就是在hadoop-daemon.sh的基础上,通知其他机器执行命令,也就是说hadoop-daemon.sh只对一台机器起作用,但是hadoop-daemons.sh会对多台机器起作用。

yarn-daemon.sh

作用:

启动/停止当前节点的yarn相关的服务。

命令格式:

yarn-daemon.sh [--config <conf-dir>] [--hosts hostlistfile] (start|stop) (resourcemanager|nodemanager)

注意:

yarn-daemons.sh其实就是在yarn-daemon.sh的基础上,通知其他机器执行命令,也就是说yarn-daemon.sh只对一台机器起作用,但是yarn-daemons.sh会对多台机器起作用。

start-dfs.sh

作用:

启动所有节点的hdfs相关服务进程。

命令格式:

start-dfs.sh 里面按顺序分别调用hadoop-daemons.sh脚本启动namenodedatanodesecondarynamenodejournalnodezkfcstop-dfs.shstart-dfs.sh恰恰相反,按照启动的调用hadoop-daemons.sh来关闭服务进程。

start-yarn.sh

作用:

启动所有节点的yarn相关服务进程。

命令格式:

start-yarn.sh 里面按顺序分别调用yarn-daemons.sh脚本启动resourcemanagernodemanager服务。 stop-yarn.shstart-yarn.sh恰恰相反,按照启动的调用yarn-daemons.sh来关闭服务进程。

mr-jobhistory-daemon.sh

作用:

启动/停止当前节点的mapred相关服务。

参数:

start(启动), stop(停止)等。 比如说我们经常会启动job history server,默认情况下,这个服务是没有启动的,我们可以通过命令mr-jobhistory-daemon.sh start historyserver

其他命令

kms.sh: 启动/停止kms(Hadoop Key Management Service)。 refresh-namenodes.sh:刷新所有NN节点内容。 slaves.sh: 通知其他slave节点执行命令。 start/stop-secure-dns.sh: 启用/停用受保护的DN服务。 start/stop-balance.sh: 启用/停用数据平衡服务。 start/stop-all.sh: 启动/停止hdfs和yarn服务进程,底层调用start/stop-dfs.shstart/stop-yarn.sh命令。

代码语言:javascript
复制
主要讲解运行命令,也就是sbin目录下面的启动shell文件。

distribute-exclude.sh
    作用:将exclude文件分布到各个namenode上。
        exclude文件主要作用不允许这个文件中host对应的主机连接NN,配置在hdfs-site.xml中配置key为dfs.hosts.exclude,默认为空。
        那么对应就有一个允许列表dfs.hosts,默认为空。
        两个属性都是给定文件路径。
        
        也就是说将一个不允许的hosts列表文件,复制到全部namenode机器上去。包括本机(如果本机是NN)。
        执行步骤:
            1、执行hdfs-config.sh
            2、读取NN节点和配置的exclude文件地址
            3、scp copy 覆盖

httpfs.sh
    作用:启动http fs文件系统,也就是使用http来进行文件访问操作。好处是:如果我们的集群处于防火墙内,但是我们又需要进行访问的情况,就可以开启这个服务,使用的是内置的tomcat,一般情况不会使用。
    httpfs.sh start/stop
    需要配置信息为:core-site.xml文件中添加
        <property>
            <name>hadoop.proxyuser.xxx.hosts</name>
            <value>*</value>
        </property>
        <property>
            <name>hadoop.proxyuser.xxx.groups</name>
            <value>*</value>
        </property>
    制定httpfs的用户代理hosts和用户组分别不进行限制(*)
    get 请求:
    http://10.2.3.12:14000/webhdfs/v1</path>?op=LISTSTATUS 查看list status
    open
    put请求:
    curl -i -X PUT "http://hh:14000/webhdfs/v1/tmp/webhdfs?op=MKDIRS&user.name=hadoop"
    curl -i -X DELETE "http://<host>:<port>/webhdfs/v1/<path>?op=DELETE
                              [&recursive=<true|false>]"
    "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETFILESTATUS"

kms.sh
    作用启动kms服务,默认监听端口为16000
    
    
slaves.sh
    作用:通知其他slave节点机器,执行命令
    参数:
    执行步骤:
        1.首先执行libexec/hadoop-config.sh设置环境变量
        2.执行${HADOOP_CONF_DIR}/hadoop-env.sh设置环境变量
        3.获取${HADOOP_CONF_DIR}/slaves文件的内容
        4.通过ssh命令访问其他机器,这里指定端口号HADOOP_SSH_OPTS,并让其他机器执行命令。
    ssh 22 host 命令
        命令有个要求;指定全称,默认路径为用户根目录。不要求本机有这个命令。
    
hadoop-daemon.sh
    作用:启动当前节点的hadoop服务
    Usage: hadoop-daemon.sh [--config conf-dir] [--hosts hostlistfile] [--script script] (start|stop) <hadoop-command> <args...>
    --config 指定运行参数
    --script指定执行的脚本,当hadoop-commend指定的参数不是下面的这些的时候
    hadoop-command: namenode|secondarynamenode|datanode|journalnode|dfs|dfsadmin|fsck|balancer|zkfc
    执行步骤:
        1.执行libexce/hadoop-config.sh
        2.读取参数,这里直接就开始读取--script参数,没有看到读取--config参数和--hosts参数
        3.执行etc/hadoop/hadoop-env.sh: ”需要配置HADOOP_CONF_DIR“
        4.设置一些pid和log日志位置信息
        4.决定是start stop
        5.如果command是hadoop集群的一些命令,那么执行bin/hdfs命令,否则执行--script指定的命令,如果为空,那就不执行

hadoop-daemons.sh
    作用:启动集群的hadoop的服务
    Usage: hadoop-daemons.sh [--config confdir] [--hosts hostlistfile] [start|stop] command args...
    --config 指定参数信息
    执行步骤:
        1.执行libexec/hadoop-config.sh
        2.执行sbin/slaves.sh
        3.使用slaves.sh来通知所有机器执行hadoop-daemon.sh,并将传入的参数同事传递过去。
    
hdfs-config.sh
    作用:执行libexec/hadoop-config.sh,我们从这个代码中可以看出必须将sbin目录添加到PATH路径中去。
        配置环境变量:HADOOP_LIBEXEC_DIR HADOOP_COMMON_HOME HADOOP_HOME 必须有一个配置,当然不配置也是可以的。

mr-jobhistory-daemon.sh
    作用:启动当前节点的jobhistory相关服务
    Usage: mr-jobhistory-daemon.sh [--config <conf-dir>] (start|stop) <mapred-command> 其实--config参数没有进行处理
    执行步骤:
        1. 执行libexec/mapred-config.sh配置mapred相关环境变量
        2. 执行${HADOOP_CONF_DIR}/mapred-env.sh
        3. 设置日志和pid存储路径
        4. 判断是start or stop。如果是stop直接kill pid
        5. 如果是start,调用bin/mapred

refresh-namenodes.sh
    作用:刷新namenode节点数据
        hdfs dfsadmin -fs hdfs://xxx -refreshNodes
        
start-all.sh
    同时启动hdfs和yarn
stop-all.sh
    同时关闭hdfs和yarn

start-balancer.sh
    作用:启动数据平衡器
    执行步骤:
        1.执行libexce/hadoop-config.sh环境变量
        2.调用hadoop-daemon.sh --script bin/hdfs start balancer, 也就是说最终还是调用了hdfs的start balancer命令。
stop-balancer.sh
    停止数据平衡器
    底层调用hadoop-daemon.sh的stop命令

start-dfs.sh
    作用:启动hdfs相关服务
    Usage: start-dfs.sh [-upgrade|-rollback] [other options such as -clusterId]
    upgrade: 升级
    rollback:回滚到上一个版本
    执行步骤:
        1. 获取当前命令的绝对路径,获取libexec的路径
        2. 执行libexce/hdfs-config.sh(其实就是为了hadoop-config.sh来进行环境配置)
        3. 解析参数
        4. 获取namenode列表, 通过hdfs的getconf命令来获取
        5. 启动namenode节点,使用hadoop-daemons.sh来启动,并指定config为etc/hadoop;hostname为获取的nn列表,script为hdfs,start, namenode;并将其他参数传递过去。其实这里可以不指定script的。
        6. 判断是否设置环境变量HADOOP_SECURE_DN_USER, 如果设置那么就不能启动datanode,必须使用start-secure-dns.sh来启动。否则使用hadoop-daemons.sh来启动datanode。
        7. 通过hdfs命令获取列表,启动secondaryNamenodes
        8. 通过hdfs命令获取shared edits路径,如果配置的路径是以qjournal://开头的,那么通过hadoop-daemons.sh来启动journalnode
        9. 获取hdfs-site.xml中的配置参数dfs.ha.automatic-failover-enabled,如果为true, 那么启动zkfc

stop-dfs.sh
    作用:关闭全部的hdfs相关服务,没有参数
    执行步骤:
        1. 获取路径
        2. 执行libexec/hdfs-config.sh<也就是执行hadoop-config.sh>
        3. 使用hdfs的命令获取namenode节点列表,然后执行hadoop-daemons.sh命令停止服务
        4. 停止datanode
        5. 停止secondarynamenode
        6. 停止journalnode
        7. 停止zkfc

start-secure-dns.sh
    作用:启动安全验证的datanode节点服务,要求设置环境变量EUID=0 HADOOP_SECURE_DN_USER指定用户
    底层也是调用hadoop-daemons.sh

stop-secure-dns.sh
    停止datanode


start-yarn.sh
    作用:启动yarn相关所有服务resourcemanager和nodemanager
    参数无
    执行步骤“;
        1. 执行yarn-config.sh,
        2. 启动resourcemanager,调用yarn-daemon.sh(因为只需要启动一次, 而nn可能因为存储ha机制(有多个namenode),所以调用的是hadoop-daemons.sh)
        3. 启动nodemanager
stop-yarn.sh 命令yarn相关停止服务

yarn-daemons.sh
    作用:启动/停止yarn相关服务
    Usage: yarn-daemons.sh [--config confdir] [--hosts hostlistfile] [start
|stop] command args...
    执行步骤:
        1. 执行yarn-config.sh设置环境变量
        2. 执行slaves.sh通知其他机器执行yarn-daemon.sh

yarn-daemon.sh
    作用:启动/停止当前节点的yarn相关服务
    Usage: yarn-daemon.sh [--config <conf-dir>] [--hosts hostlistfile] (start|stop) <yarn-command>
    执行步骤:
        1. 设置hdfs-config.sh相关环境变量
        2. 设置yarn-env.sh相关环境变量
        3. 设置pid log等信息
        4. 如果是start,调用hdfs启动
        5. 如果是stop,直接kill进程。


hadoop-config.sh
    配置一些环境变量信息
hdfs-config.sh
    根据是否环境变量调用hadoop-config.sh文件
httpfs-config.sh
    配置httpfs相关环境变量,比如pid的存储路径,log日志的存储路径等。还有这个其他配置信息。
kms-config.sh
    配置kms相关环境变量,最终会调用/etc/hadoop/kms-env.sh
mapred-config.sh
    配置mapred相关环境变量,主要是historyserver
        先调用hadoop-config.sh
        配置日志信息
yarn-config.sh
    调用hadoop-config.sh
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.08.28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 离线数据分析平台实战——020Hadoop Shell命令(可跳过)
    • Hadoop Shell命令简单描述
      • Hadoop配置信息
        • Hadoop环境信息配置脚本
          • distribute-exclude.sh
            • httpfs.sh
              • httpfs.sh命令简单介绍
                • hadoop-daemon.sh
                  • yarn-daemon.sh
                    • start-dfs.sh
                      • start-yarn.sh
                        • mr-jobhistory-daemon.sh
                          • 其他命令
                          相关产品与服务
                          Serverless HTTP 服务
                          Serverless HTTP 服务基于腾讯云 API 网关 和 Web Cloud Function(以下简称“Web Function”)建站云函数(云函数的一种类型)的产品能力,可以支持各种类型的 HTTP 服务开发,实现了 Serverless 与 Web 服务最优雅的结合。用户可以快速构建 Web 原生框架,把本地的 Express、Koa、Nextjs、Nuxtjs 等框架项目快速迁移到云端,同时也支持 Wordpress、Discuz Q 等现有应用模版一键快速创建。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档