Hadoop實戰-中高階部分 之 Hadoop 管理
sufeizi發表於2013-12-11
Hadoop RestFul
Hadoop HDFS原理1
Hadoop HDFS原理2
Hadoop作業調優引數調整及原理
Hadoop HA
Hadoop MapReduce高階程式設計
Hadoop IO
Hadoop MapReduce工作原理
Hadoop 管理
Hadoop 叢集安裝
Hadoop RPC
第一部分:HDFS管理
命令列工具
?HDFS檔案系統檢查工具FSCK
?用法:hadoop fsck [ GENERIC_OPTIONS] [-move | -delete | -openforwrite] [-files [-blocks [-locations | -racks]]]
?命令選項描述檢查的起始目錄。
?-move移動受損檔案到/lost+found-delete刪除受損檔案。
?-openforwrite列印出寫開啟的檔案。
?-files列印出正被檢查的檔案。
?-blocks列印出塊資訊報告。
?-locations列印出每個塊的位置資訊。
?-racks列印出data-node的網路拓撲結構。
? d fsadmin
命令選項
|
描述
|
-report
|
報告檔案系統的基本資訊和統計資訊。
|
-refreshNodes
|
重新讀取hosts和exclude檔案,更新允許連到Namenode的或那些需要退出或入編的Datanode的集合。
|
-finalizeUpgrade
|
終結HDFS的升級操作。Datanode刪除前一個版本的工作目錄,之後Namenode也這樣做。這個操作完結整個升級過程。
|
命令選項
|
描述
|
-metasave filename
|
儲存Namenode的主要資料結構到hadoop.log.dir屬性指定的目錄下的
1. Namenode收到的Datanode的心跳訊號 2. 等待被複制的塊 3. 正在被複制的塊 4. 等待被刪除的塊 |
-setQuota
|
為每個目錄
命令會在這個目錄上工作良好,以下情況會報錯: 1. N不是一個正整數,或者 2. 使用者不是管理員,或者 3. 這個目錄不存在或是檔案,或者 4. 目錄會馬上超出新設定的配額。 |
-upgradeProgress status | details | force
|
請求當前系統的升級狀態,狀態的細節,或者強制升級操作進行。
|
-clrQuota
|
為每一個目錄
命令會在這個目錄上工作良好,以下情況會報錯: 1. 這個目錄不存在或是檔案,或者 2. 使用者不是管理員。 如果目錄原來沒有配額不會報錯。 |
規劃管理HDFS資料
?無論是做為開發者還是管理員瞭解HDFS目錄結構與規劃都是很重要的一件事情。
?它們可以幫助我們診斷問題
?如何管理HDFS資料也是我們需要研究的課題
?Namenode的目錄結構:
${dfs.name.dir}/current /VERSION
/edits
/fsimage
/fstime
/edits
/fsimage
/fstime
dfs.name.dir是hdfs-site.xml裡配置的若干個目錄組成的列表。
?通過設定Sencondary NameNode解決edits log變大問題
?Sencondary Namenode的目錄結構:
${fs.checkpoint.dir}/current /VERSION
/edits
/fsimage
/fstime
/edits
/fsimage
/fstime
/previous.checkpoint/VERSION
/edits
/fsimage
/fstime
/fsimage
/fstime
?fs.checkpoint.dir 屬性位於core-site.xml
?previous.checkpoint 儲存之前的儲存的後設資料
?Datanode 的目錄結構:
${dfs.data.dir}/current /VERSION
/blk_id
/blk_id
/blk_id.meta
…..
/subdir0
….
?dfs.data.dir 屬性位與hdfs-site.xml
?Subdir0 為子資料夾,防止HDFS一個目錄下的檔案塊太多
?通過dfs.datanode.numblocks可以設定多少個塊會生成一個子資料夾預設是64
安全模式
?安全模式是Namenode的一個狀態,這種狀態下,Namenode
1. 不接受對名字空間的更改(只讀)
2. 不復制或刪除塊
1. 不接受對名字空間的更改(只讀)
2. 不復制或刪除塊
?NameNode會在啟動時自動進入安全模式,當配置的塊最小百分比數滿足最小的副本數條件時,會自動離開安全模式。安全模式可以手動進入,但是這樣的話也必須手動關閉安全模式
? 預設為99.99%
?引數dfs.safemode.threshold.pct 位與hdfs-site.xml
?命令列hadoop dfsadmin -safemode enter | leave | get | wait
訪問操作記錄日誌
?HDFS可以記錄檔案系統的所有訪問請求
?預設情況下該功能是關閉的
?可以通過設定log4j來開啟該屬性
?log4j.logger.org.apache.hadoop.fs.FSNamesystem.audit= WARN設定為info
?該請求記錄檔案會單獨存放
資料掃描塊
?每一個DataNode都會執行一個資料掃描執行緒
?掃描執行緒定期的檢查所有資料塊以確保修復損壞的塊
?週期可以設定
?dfs.datanode.scan.period.hourses 預設是504小時
?在UI部分可以檢視檢查的情況
?http://datanode:50075/blockScannerReport
?通過指定listblocks引數可以報告最新的狀態
?http://datanode:50075/blockScannerReport?Listblocks
第二部分:MapReduce作業管理
命令列工具
? 檢視 Job 資訊
? hadoop job -list
? 殺掉 Job
? hadoop job –kill
?指定路徑下檢視歷史日誌彙總
?hadoop job -history output-dir
?作業的更多細節
?hadoop job -history all output-dir
?列印map和reduce完成百分比和所有計數器
? hadoop job –status job_id
?殺死任務。被殺死的任務不會不利於失敗嘗試。
?hadoop jab -kill-task
?使任務失敗。被失敗的任務會對失敗嘗試不利。
?hadoop job -fail-task
Hadoop mradmin
命令
|
說明
|
-refreshServiceAcl
|
重新裝載ACL認證檔案
|
-refreshQueues
|
重新整理任務佇列的資訊
|
-refreshUserToGroupsMappings
|
重新整理使用者與使用者組對應關係
|
-refreshSuperUserGroupsConfiguration
|
重新整理使用者組的配置
|
-refreshNodes
|
重新整理JobTracker的主機配置資訊
|
UI詳細介紹
?UI 有足夠的資訊,供我們檢視Job執行的資訊與歷史執行記錄
?URL
?http://50030/jobtracker
第三部分:Hadoop安全與許可權的管理
?安全認證
?確保使用者的身份
?授權
?確保使用者的操作只能是在被允許的範圍內
?使用者
?Hadoop使用者
?服務
?NameNode 等
?Hadoop原來的版本安全性比較低。
? Namenode 或者 J obtracker 缺乏安全認證機制
? DataNode 缺乏安全授權機制
?Hadoop提供了兩種安全機制:Simple和Kerberos
Simple機制
?Simple機制(預設情況,Hadoop採用該機制)是JAAS協議與delegation token整合機制
?JAAS是Java 認證和授權服務(Java Authentication and Authorization Service)的縮寫,是PAM框架的Java實現。
Kerberos 機制
?Kerberos 提供了這樣一種機制,可以認證的金鑰放到伺服器上,使用者在進行操作時,要先到認證伺服器上做校驗,只有通過,才可以進行相應的操作。
?Hadoop的安全問題
? 解決伺服器到伺服器的認證
? 解決 client 到伺服器的認證
? 對使用者級別上的認證並沒有實現
Kerberos概念
?Princal:被認證的個體,有一個名字和口令
?KDC: 是一個網路服務,提供ticket 和臨時會話金鑰
?Ticket:一個記錄,客戶用它來向伺服器證明自己的身份,包括客戶標識、會話金鑰、時間戳。
?AS : 認證伺服器
?TSG: 許可證伺服器
Hadoop使用Kerberos好處
?可靠: Hadoop 本身並沒有認證功能和建立使用者組功能,使用依靠外圍的認證系統
?高效 :Kerberos使用對稱鑰匙操作,比SSL的公共金鑰快
?操作簡單: 使用者可以方便進行操作,不需要很複雜的指令。比如廢除一個使用者只需要從Kerbores的KDC資料庫中刪除即可。
HDFS安全機制
?Client去NameNode獲取訪問DataNode的憑證
?獲得憑證後,才可以訪問相應的資料庫
?DataNode在啟動時會在NameNode拿來相應的憑證
?客戶端訪問時,DataNode 會校驗相應的憑證
MapReduce安全機制
?作業提交
?所有關於作業的提交或者作業執行狀態的追蹤均是採用帶有Kerberos認證的RPC實現的
?授權使用者提交作業時,JobTracker會為之生 成一個令牌,該令牌將被作為job的一部分儲存到HDFS上並通過RPC分發給各個TaskTracker,一旦job執行結束,該token失 效。
?任務執行
?使用者提交作業的每個task均是以使用者身份啟動的,這樣,一個使用者的task便不可以向TaskTracker或者其他使用者的task傳送作業系統訊號,最其他使用者造成干擾。這要求為每個使用者在所有TaskTracker上建一個賬號。
?Shuffle
?reduce task對“請求URL”和“當前時間”計算HMAC-SHA1值,並將該值作為請求的一部分發動給TaskTracker,TaskTracker收到 後會驗證該值的正確性
RPC 安全機制
?使用者傳送RPC時,會將自己的使用者名稱放在請求資訊裡
?RPCServer 接受到資訊後, RPCServer 會校驗授權,如果通過請傳送給使用者響應
Hadoop許可權管理
?使用者分組管理
?使用者按組為單位組織管理
?可以限制使用者使用的資源等內容
?Hadoop 使用Linux的使用者與使用者組
?作業管理
?作業提交許可權控制
?作業執行狀態檢視許可權控制。
?可限定可提交作業的使用者
?可限定可檢視作業執行狀態的使用者
?可限定普通使用者只能修改自己作業的優先順序,kill自己的作業
?高階使用者可以控制所有作業。
?這一點很重要,如果沒有許可權,會造成資料混亂
?主要是通過系統的使用者組許可權來進行控制
MapReduce許可權管理
?MapReduce支援許可權管理需使用Fair Scheduler或者 Capacity Scheduler
?為MapReduce新增許可權管理一共分3步
?配置Fair Scheduler或者 Capacity Scheduler
?配置使用者管理
?配置作業的ACL
配置許可權
?配置Fair Scheduler
?配置使用者管理
?配置Queue相關資訊
?配置屬性在mapre-site.xml
配置Queue的相關資訊
屬性 mapred.queue.names 是 queue 的所有名字,在這一名字中,必須有一個叫 “ default” 的 queue
?mapred.queue.names是queue的所有名字
?必須有一個叫“default”的queue
? mapred.queue..acl-submit-job,指定哪些user或者group可以向該queue中提交作業
?mapred.queue..acl-administer-jobs,指定哪些user或者group可以管理該queue中的所有作業。
? 每個queue擁有的資源量和其他資訊,在其他配置檔案裡指定
? mapred.queue..acl-submit-job和mapred.queue..acl-administer-jobs配置方法如下:
使用者和使用者組之間用空格分開,使用者之間用“,”分割,使用者組之間用“,”分割,如果queue的屬性值中只有使用者組,則前面保留一個空格。
配置fair-scheduler.xml
作業管理
?在core-site.xmll中配置以下屬性:
?配置${HADOOP_CONF_DIR}/hadoop-policy.xml
?引數格式
?使用者名稱與使用者組之間用空格分開
?使用者使用者之間用“,”
?Tom,cat super,no
屬性
|
說明
|
security.clinet.protocol.acl
|
控制訪問HDFS的許可權
|
security.datanode.protocol.acl
|
控制datanode到namenode的通訊許可權
|
security.clinet.datanode.protocol.acl
|
使用者block恢復
|
security.namenode.protocol.acl
|
控制sencondary namenode與datanode許可權
|
security.inter.datanode.protocol.acl
|
DataNode之前更新時間戳
|
security.task.umbilical.protocol.acl
|
控制task與tasktracker通訊
|
security.refresh.policy.protocol.acl
|
控制更新作業管理配置檔案
|
security.jobsubmission.protocol.acl
|
控制作業提交等許可權
|
?作業提交時指定Pool來進行提交
?示例
hadoop jar wordcount.jar wordcount -D pool.name= your_name input
output
第四部分:Hadoop叢集的狀態監控與管理工具
我們需要監督Hadoop什麼
?CPU使用率
?硬碟使用情況
?網路負載
?程式服務是否正常執行
?。。。。
手動每項去檢視,非常痛苦的事情,我們需要工具
Ganglia
?Ganglia 是什麼
?Ganglia是一個跨平臺可擴充套件的,高 效能計算系統下的分散式監控系統,如叢集和網格。
?可以進行自動的進行資訊的收集
?Ganglia 元件
?Gmond
?Gmetad
?Web前端
?Gmetad -服務端
?負責週期性的到各個datasource收集各個cluster的資料,並更新到rrd資料庫中
?Gmond –客戶端
?收集本機的監控資料,傳送到其他機器上
?web 瀏覽介面
?一個基於PHP的監控介面,通常和Gmetad安裝在同一個節點上
Ganglia優點
?自動收集資料
?圖形介面
? 資料庫rrdtool儲存了歷史資料
?Gmond 資料儲存在記憶體中,使用開銷比較小。
截圖
日誌監控
?設定日誌級別
?在除錯過程中非常的有用
?設定方式
?頁面
?命令列
?hadoop daemonlog –setlevel jobtrackerhost-50030 packege level
?持久改變
?log.logger.org.apache.hadoop.mapred.JobTracker= level
?獲得執行棧的資訊
?http://namenode:50070/stacks
轉載請註明出處http://sishuok.com/forum/blogPost/list/0/5966.html
轉載請註明出處http://sishuok.com/forum/blogPost/list/0/5966.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29361362/viewspace-1062958/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Hadoop實戰-中高階部分 之 Hadoop RPC2013-12-09HadoopRPC
- Hadoop實戰-初級部分 之 開啟雲端計算之旅2013-12-05Hadoop
- Hadoop實戰2012-08-06Hadoop
- Hadoop大資料實戰系列文章之安裝Hadoop2020-11-05Hadoop大資料
- hadoop實戰1--部署2019-02-17Hadoop
- Hadoop實戰:Hive操作使用2019-01-14HadoopHive
- 《Hadoop實戰》封面解讀2011-09-20Hadoop
- Hadoop大資料探勘從入門到進階實戰2018-06-22Hadoop大資料
- Hadoop大資料實戰系列文章之Hive2020-11-16Hadoop大資料Hive
- Hadoop大資料實戰系列文章之HBase2020-11-11Hadoop大資料
- Hadoop大資料實戰系列文章之Zookeeper2020-11-10Hadoop大資料
- Hadoop2.7實戰v1.0之YARN HA2016-03-06HadoopYarn
- Hadoop2.7實戰v1.0之HDFS HA2016-03-06Hadoop
- hadoop之 hadoop用途方向2017-08-28Hadoop
- 高可用Hadoop平臺-實戰2015-04-01Hadoop
- hadoop之 hadoop 機架感知2017-10-13Hadoop
- hadoop 之Hadoop生態系統2017-09-06Hadoop
- hadoop之 HDFS-Hadoop存檔2017-09-07Hadoop
- Hadoop實踐之Python(一)2018-09-14HadoopPython
- hadoop之 hadoop日誌存放路徑2017-10-16Hadoop
- hadoop之 Hadoop 2.x HA 、Federation2017-10-16Hadoop
- Hadoop大資料實戰系列文章之Mapreduce 計算框架2020-11-10Hadoop大資料框架
- Hadoop2.7實戰v1.0之JVM引數調優2016-05-17HadoopJVM
- hadoop實戰3(web管理介面介紹及NN,DN,SNN介紹)2019-02-20HadoopWeb
- Hadoop專案實戰-使用者行為分析之編碼實踐2015-06-24Hadoop
- Hadoop自由實現伸縮節點詳細說明-Hadoop商業環境實戰2018-12-19Hadoop
- Hadoop源生實用工具之distcp2019-05-29HadoopTCP
- hadoop之 Hadoop2.2.0中HDFS的高可用性實現原理2017-09-06Hadoop
- 寫給後端的Hadoop初級入門教程:Hadoop組成部分。2019-12-12後端Hadoop
- Hadoop大資料實戰系列文章之HDFS檔案系統2020-11-06Hadoop大資料
- Hadoop2.7實戰v1.0之Linux引數調優2016-04-30HadoopLinux
- hadoop之 Hadoop1.x和Hadoop2.x構成對比2017-10-16Hadoop
- 高可用Hadoop平臺-實戰尾聲篇2016-04-19Hadoop
- 大資料時代之hadoop(一):hadoop安裝2014-10-13大資料Hadoop
- 小丸子學Hadoop系列之——部署Hadoop叢集2015-12-22Hadoop
- Hadoop進階命令使用介紹2020-07-13Hadoop
- 小白學習大資料測試之hadoop hdfs和MapReduce小實戰2018-09-03大資料Hadoop
- Hadoop專案實戰-使用者行為分析之應用概述(一)2015-06-09Hadoop