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閱讀 227,488評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,034評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,327評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,554評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,337評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,883評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,975評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,114評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,625評論 1 332
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,555評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,737評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,244評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,973評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,615評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,343評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,699評論 2 370

推薦閱讀更多精彩內容