hadoop常用命令
- 集羣節點服務啓停
- hdfs文件系統管理
- yarn資源集羣管理
- hadoop啓動過程
-
集羣節點服務啓停
如圖所示腳本所在路徑:主要分類類命令:管理hdfs和管理yarn資源
服務啓動方式:分別啓動各節點服務、集羣腳本啓動整個服務。- 單獨啓停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服務,這兩個腳本即將廢棄,建議使用上面兩個腳本管理服務。
- 單獨啓停nn、dn服務
- 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 ...]] #查看命令的用法
- 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>] #查看命令幫助
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達到平衡狀態達到磁盤使用率偏差值,值越低越平衡,但消耗時間也越長。
- hadoop命令使用
- 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服務。
步驟2:hadoop啓動- 啓動journalnode日誌服務
- 在hadoop1上格式化namenode,僅當第一次啓動時需要格式化。出現該信息表示成功。
hdfs namenode -format
- 在節點1上啓動namenode節點,由於採用主備模式NN節點,hadoop2上nn節點缺少元數據信息還不會啓動,需要手動同步一次元數據。
hadoop1:hadoop-daemon.sh start namenode
hadoop2:hdfs namenode -bootstrapStandby,在啓動nn - 在hadoop1上格式化zkfc,無報錯及爲成功(僅在第一次啓動之前需要格式化,後面啓動不需要格式化)。(如果不進行這一步,會出現namenode無法向zookeeper註冊,會出現兩個namenode都爲備的狀態。
hdfs zkfc -formatZK
- 然後可以啓動各節點的hdfs、yarn服務
- 查看各節點的服務進程是否正常運行
- 啓動journalnode日誌服務
- webgui訪問