hadoop常用命令總結

hadoop常用命令

  • 集羣節點服務啓停
  • hdfs文件系統管理
  • yarn資源集羣管理
  • hadoop啓動過程

  • 集羣節點服務啓停
    如圖所示腳本所在路徑:主要分類類命令:管理hdfs和管理yarn資源
    服務啓動方式:分別啓動各節點服務、集羣腳本啓動整個服務。
    hadoop常用命令總結

    • 單獨啓停nn、dn服務

      hadoop-daemon.sh <start | stop> namenode | datanode | journalnode |zkfc
      hadoop-daemons.sh <start | stop> namenode | datanode |z kfc#表示啓動集羣內所有dn/nn服務

    • 啓動yarn服務

      yarn-daemon.sh start |stop resourcemanager | nodemanager | proxyserver
      yarn-daemons.sh start |stop resourcemanager | nodemanager | proxyserver #表示啓動yarn集羣內所有rm/nm等服務

    • 啓動MapReduce任務歷史服務

      mr-jobhistory-daemon.sh start | stop historyserver

    [root@hadoop1 ~]# hadoop-daemons.sh start journalnode
    hadoop1: starting journalnode, logging to /hadoop/soft/hadoop-2.7.7/logs/hadoop-root-journalnode-hadoop1.out
    hadoop2: starting journalnode, logging to /hadoop/soft/hadoop-2.7.7/logs/hadoop-root-journalnode-hadoop2.out
    hadoop3: starting journalnode, logging to /hadoop/soft/hadoop-2.7.7/logs/hadoop-root-journalnode-hadoop3.out
    [root@hadoop1 ~]# jps
    1628 JournalNode
    1663 Jps
    [root@hadoop1 ~]# ssh hadoop2 jps
    1513 Jps
    1452 JournalNode
    [root@hadoop1 ~]# ssh hadoop3 jps
    1473 Jps
    1412 JournalNode
    • 腳本管理所有服務:需要配置ssh互信以及配置slaves文件

      start-dfs.sh | stop-dfs.sh #啓停所有hdfs服務
      start-yarn.sh | stop-yarn.sh #啓停所有yarn服務
      start-all.sh | stop-all.sh #可以啓停所有hdfs、yarn服務,這兩個腳本即將廢棄,建議使用上面兩個腳本管理服務。
      hadoop常用命令總結


  • hdfs文件系統管理
    • hadoop命令使用
      Usage: hadoop [--config confdir] [COMMAND | CLASSNAME]
      fs                   run a generic filesystem user client#運行一個文件系統客戶端
      version              print the version #查看版本信息
      jar <jar>            run a jar file #運行jar文件,注使用**yarn jar**運行yarn應用
      distcp <srcurl> <desturl>  #遞歸複製文件或目錄;DistCp(分佈式拷貝)是用於大規模集羣內部和集羣之間拷貝的工具。 它使用Map/Reduce實現文件分發,錯誤處理和恢復,以及報告生成
      archive -archiveName NAME -p <parent path> <src>* <dest> #創建hadoop歸檔文件
      classpath            #列出所需要的類庫  

      bash$ hadoop distcp hdfs://nn1:8020/foo/bar hdfs://nn2:8020/bar/foo

    • 用戶文件系統管理相關命令:操作基本類似Linux
      [root@hadoop2 ~]# hadoop/hdfs  fs
      Usage: hadoop fs [generic options]
      [-cat [-ignoreCrc] <src> ...]  #查看文件內容
      [-checksum <src> ...] #查看文件校驗碼
      [-chgrp [-R] GROUP PATH...]  #修改文件屬組
      [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...] #修改文件權限
      [-chown [-R] [OWNER][:[GROUP]] PATH...] #修改文件屬主或屬組
      [-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>] #複製本地文件到hdfs文件系統,類似put命令
      [-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>] #複製hdfs文件到本地,類似get命令
      [-cp [-f] [-p | -p[topax]] <src> ... <dst>] #允許多源複製操作 ,目標路徑必須是目錄
      [-createSnapshot <snapshotDir> [<snapshotName>]] #創建快照
      [-deleteSnapshot <snapshotDir> <snapshotName>] #刪除快照
      [-df [-h] [<path> ...]] #顯示文件系統使用空間
      [-du [-s] [-h] <path> ...] #顯示某個目錄內包含的文件的大小,目錄佔用空間大小,與Linux命令一樣
      [-find <path> ... <expression> ...] #查找文件
      [-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
      [-getfacl [-R] <path>]
      [-getfattr [-R] {-n name | -d} [-e en] <path>]
      [-help [cmd ...]] #查看幫助
      [-ls [-d] [-h] [-R] [<path> ...]]  #替代“hadoop fs -ls -R”
      [-mkdir [-p] <path> ...] #創建目錄
      [-moveFromLocal <localsrc> ... <dst>]
      [-moveToLocal <src> <localdst>]
      [-mv <src> ... <dst>]
      [-put [-f] [-p] [-l] <localsrc> ... <dst>]
      [-renameSnapshot <snapshotDir> <oldName> <newName>]
      [-rm [-f] [-r|-R] [-skipTrash] <src> ...]
      [-rmdir [--ignore-fail-on-non-empty] <dir> ...]
      [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]]
      [-setfattr {-n name [-v value] | -x name} <path>]
      [-stat [format] <path> ...] 
      [-tail [-f] <file>]
      [-test -[defsz] <path>] #測試命令 ,-d是否爲目錄,-e文件是否存在,-z是否爲空文件,用法一樣
      [-text [-ignoreCrc] <src> ...]
      [-touchz <path> ...] #創建 0字節空文件
      [-truncate [-w] <length> <path> ...]
      [-usage [cmd ...]] #查看命令的用法

      hadoop常用命令總結

    • hdfs管理命令
      [root@hadoop2 ~]# hdfs haadmin  # dfs管理客戶端,查看hdfs狀態集羣
      Usage: haadmin 
      [-transitionToActive [--forceactive] <serviceId>] 
      [-transitionToStandby <serviceId>]
      [-failover [--forcefence] [--forceactive] <serviceId> <serviceId>] #以上3條關於手動故障轉移命令
      [-getServiceState <serviceId>] #查看nn節點處active還是standby狀態
      [-checkHealth <serviceId>] #檢查nn節點是否健康
      [-help <command>] #查看命令幫助

      hadoop常用命令總結

      Usage: hdfs dfsadmin :Note: hdfs超級管理員才能夠運行該命令
      [-report [-live] [-dead] [-decommissioning]] #報告文件系統的基本信息和統計信息
      [-safemode <enter | leave | get | wait>]  #安全模式維護命令。安全模式是Namenode的一個狀態, 不接受對名字空間的更改(只讀)、 不復制或刪除塊
      [-saveNamespace] #保存當前名稱空間到存儲目錄,開始新edit-log,需要安全模式
      [-rollEdits] 
      [-restoreFailedStorage true|false|check]
      [-refreshNodes]  #重新讀取hosts和exclude文件,更新允許連到NN的那些需要退出或新加入的Datanode。
      [-setQuota <quota> <dirname>...<dirname>] #限制一個目錄包含最多子目錄和文件 
      #hdfs dfsadmin -setQuota 1t  /user/dirname
      [-clrQuota <dirname>...<dirname>]
      [-setSpaceQuota <quota> [-storageType <storagetype>] <dirname>...<dirname>] #設置一個目錄最多使用空間
      [-clrSpaceQuota [-storageType <storagetype>] <dirname>...<dirname>]
      [-refreshServiceAcl] 
      [-refreshUserToGroupsMappings]
      [-refreshSuperUserGroupsConfiguration]
      [-refreshCallQueue] #刷新請求隊列
      [-refresh <host:ipc_port> <key> [arg1..argn]
      [-reconfig <datanode|...> <host:ipc_port> <start|status>]  #將datanode節點重新加入集羣
      [-refreshNamenodes datanode_host:ipc_port]
      [-deleteBlockPool datanode_host:ipc_port blockpoolId [force]]
      [-setBalancerBandwidth <bandwidth in bytes per second>]
      [-fetchImage <local directory>]
      [-allowSnapshot <snapshotDir>] #某目錄允許快照纔可以進行快照
      [-disallowSnapshot <snapshotDir>]
      [-shutdownDatanode <datanode_host:ipc_port> [upgrade]]
      [-getDatanodeInfo <datanode_host:ipc_port>]
      [-metasave filename]    
    • 數據塊重新分佈,Ctrl-C來停止平衡過程

      hadoop balancer [-threshold <threshold>] # 磁盤容量的百分比
      hdfs達到平衡狀態達到磁盤使用率偏差值,值越低越平衡,但消耗時間也越長。


  • yarn資源集羣管理
    [root@hadoop2 ~]# yarn rmadmin #resourcemanager 客戶端
    Usage: yarn rmadmin
    -refreshQueues  #重載隊列的acl、狀態及調度器隊列
    -refreshNodes #爲RM刷新主機信息
    -refreshSuperUserGroupsConfiguration 
    -refreshUserToGroupsMappings 
    -refreshAdminAcls 
    -refreshServiceAcl 
    -addToClusterNodeLabels [label1,label2,label3] (label splitted by ",")
    -removeFromClusterNodeLabels [label1,label2,label3] (label splitted by ",")
    -replaceLabelsOnNode [node1[:port]=label1,label2 node2[:port]=label1,label2]
    -directlyAccessNodeLabelStore 
    -transitionToActive [--forceactive] <serviceId>#rm節點故障轉移
    -transitionToStandby <serviceId>
    -failover [--forcefence] [--forceactive] <serviceId> <serviceId>
    -getServiceState <serviceId>#檢查當前rm狀態
    -checkHealth <serviceId> 
    -help [cmd]

  • ha hadoop啓動流程:安裝完第一次啓動。。。
    集羣搭建環境:
    步驟1:啓動zookeeper服務。由於ha hadoop依賴zookeeper服務。
    hadoop常用命令總結
    步驟2:hadoop啓動
    1. 啓動journalnode日誌服務
      hadoop常用命令總結
    2. 在hadoop1上格式化namenode,僅當第一次啓動時需要格式化。出現該信息表示成功。

      hdfs namenode -format
      hadoop常用命令總結

    3. 在節點1上啓動namenode節點,由於採用主備模式NN節點,hadoop2上nn節點缺少元數據信息還不會啓動,需要手動同步一次元數據。

      hadoop1:hadoop-daemon.sh start namenode
      hadoop2:hdfs namenode -bootstrapStandby,在啓動nn

    4. 在hadoop1上格式化zkfc,無報錯及爲成功(僅在第一次啓動之前需要格式化,後面啓動不需要格式化)。(如果不進行這一步,會出現namenode無法向zookeeper註冊,會出現兩個namenode都爲備的狀態。

      hdfs zkfc -formatZK

    5. 然後可以啓動各節點的hdfs、yarn服務
      hadoop常用命令總結
    6. 查看各節點的服務進程是否正常運行
      hadoop常用命令總結
  • webgui訪問
    hadoop常用命令總結
    hadoop常用命令總結
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章