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

离线数据分析平台实战——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脚本启动namenodedatanodesecondarynamenodejournalnodezkfc
stop-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命令。

主要讲解运行命令,也就是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

    
    
    
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容