掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
HDFS數(shù)據(jù)管理

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、做網(wǎng)站、洮北網(wǎng)絡(luò)推廣、微信小程序、洮北網(wǎng)絡(luò)營(yíng)銷、洮北企業(yè)策劃、洮北品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供洮北建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
1、設(shè)置元數(shù)據(jù)與數(shù)據(jù)的存儲(chǔ)路徑,通過
dfs.name.dir,dfs.data.dir,fs.checkpoint.dir(hadoop1.x)、
hadoop.tmp.dir,dfs.namenode.name.dir,dfs.namenode.edits.dir,dfs.datanode.data.dir(hadoop2.x)等屬性來設(shè)置;
2、經(jīng)常執(zhí)行HDFS文件系統(tǒng)檢查工具FSCK,eg:hdfs fsck /liguodong -files -blocks;
- [root@slave1 mapreduce]# hdfs fsck /input
- Connecting to namenode via http://slave1:50070
- FSCK started by root (auth:SIMPLE) from /172.23.253.22 for path /input at Tue Jun 16 21:29:21 CST 2015
- .Status: HEALTHY
- Total size: 80 B
- Total dirs: 0
- Total files: 1
- Total symlinks: 0
- Total blocks (validated): 1 (avg. block size 80 B)
- Minimally replicated blocks: 1 (100.0 %)
- Over-replicated blocks: 0 (0.0 %)
- Under-replicated blocks: 0 (0.0 %)
- Mis-replicated blocks: 0 (0.0 %)
- Default replication factor: 1
- Average block replication: 1.0
- Corrupt blocks: 0
- Missing replicas: 0 (0.0 %)
- Number of data-nodes: 1
- Number of racks: 1
- FSCK ended at Tue Jun 16 21:29:21 CST 2015 in 1 milliseconds
- The filesystem under path '/input' is HEALTHY
3、一旦數(shù)據(jù)發(fā)生異常,可以設(shè)置NameNode為安全模式,這時(shí)NameNode為只讀模式;
操作命令:hdfs dfsadmin -safemode enter | leave | get | wait
- [root@slave1 mapreduce]# hdfs dfsadmin -report
- Configured Capacity: 52844687360 (49.22 GB)
- Present Capacity: 45767090176 (42.62 GB)
- DFS Remaining: 45766246400 (42.62 GB)
- DFS Used: 843776 (824 KB)
- DFS Used%: 0.00%
- Under replicated blocks: 0
- Blocks with corrupt replicas: 0
- Missing blocks: 0
- -------------------------------------------------
- Datanodes available: 1 (1 total, 0 dead)
- Live datanodes:
- Name: 172.23.253.22:50010 (slave1)
- Hostname: slave1
- Decommission Status : Normal
- Configured Capacity: 52844687360 (49.22 GB)
- DFS Used: 843776 (824 KB)
- Non DFS Used: 7077597184 (6.59 GB)
- DFS Remaining: 45766246400 (42.62 GB)
- DFS Used%: 0.00%
- DFS Remaining%: 86.61%
- Last contact: Tue Jun 16 21:27:17 CST 2015
- [root@slave1 mapreduce]# hdfs dfsadmin -safemode get
- Safe mode is OFF
4、每一個(gè)DataNode都會(huì)運(yùn)行一個(gè)數(shù)據(jù)掃描線程,它可以檢測(cè)并通過修復(fù)命令來修復(fù)壞塊或丟失的數(shù)據(jù)塊,通過屬性設(shè)置掃描周期;
dfs.datanode.scan.period.hourses, 默認(rèn)是504小時(shí)。
MapReduce作業(yè)管理
查看Job信息:mapred job -list;
殺死Job:mapred job -kill;
查看指定路徑下的歷史日志匯總:mapred job -history output-dir;
打印map和reduce完成的百分比和所有計(jì)數(shù)器:mapred job -status job_id;
- [root@slave1 mapreduce]# mapred job
- Usage: CLI
- [-submit
] - [-status
] - [-counter
] - [-kill
] - [-set-priority
]. Valid values for priorities are: VERY_HIGH HIGH NORMAL LOW VERY_LOW - [-events
<#-of-events>] - [-history
] - [-list [all]]
- [-list-active-trackers]
- [-list-blacklisted-trackers]
- [-list-attempt-ids
]. Valid values for are REDUCE MAP. Valid values for are running, completed - [-kill-task
] - [-fail-task
] - [-logs
] - Generic options supported are
- -conf
specify an application configuration file - -D
use value for given property - -fs
specify a namenode - -jt
specify a job tracker - -files
specify comma separated files to be copied to the map reduce cluster - -libjars
specify comma separated jar files to include in the classpath. - -archives
specify comma separated archives to be unarchived on the compute machines. - [root@slave1 mapreduce]# mapred job -list
- 15/06/16 21:33:25 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
- Total jobs:0
- JobId State StartTime UserName Queue Priority UsedContainers RsvdContainers UsedMem RsvdMem NeededMem AM info
#p#
Hadoop集群安全
Hadoop自帶兩種安全機(jī)制:Simple機(jī)制、Kerberos機(jī)制
1、Simple機(jī)制:
Simple機(jī)制是JAAS協(xié)議與delegation token結(jié)合的一種機(jī)制,JAAS(Java Authentication and Authorization Service)java認(rèn)證與授權(quán)服務(wù);
(1)用戶提交作業(yè)時(shí),JobTracker端要進(jìn)行身份核實(shí),先是驗(yàn)證到底是不是這個(gè)人,即通過檢查執(zhí)行當(dāng)前代碼的人與JobConf中的user.name中的用戶是否一致;
(2)然后檢查ACL(Access Control List)配置文件(由管理員配置)看你是否有提交作業(yè)的權(quán)限。一旦你通過驗(yàn)證,會(huì)獲取HDFS或者mapreduce授予的delegation token(訪問不同模塊有不同的delegation token),之后的任何操作,比如訪問文件,均要檢查該token是否存在,且使用者跟之前注冊(cè)使用該token的人是否一致。
2、Kerberos機(jī)制:
Kerberos機(jī)制是基于認(rèn)證服務(wù)器的一種方式;
Princal(安全個(gè)體):被認(rèn)證的個(gè)體,有一個(gè)名字和口令;
KDC(key distribution center):是一個(gè)網(wǎng)絡(luò)服務(wù),提供ticket和臨時(shí)會(huì)話密鑰;
Ticket:一個(gè)記錄,客戶用它來向服務(wù)器證明自己的身份,包括客戶標(biāo)識(shí)、會(huì)話密鑰、時(shí)間戳;
AS(Authentication Server):認(rèn)證服務(wù)器;
TSG(Ticket Granting Server):許可認(rèn)證服務(wù)器;
[[137086]]
(1)Client將之前獲得TGT和要請(qǐng)求的服務(wù)信息(服務(wù)名等)發(fā)送給KDC,
KDC中的Ticket Granting Service將為Client和Service之間生成一個(gè)Session Key用于Service對(duì)Client的身份鑒別。
然后KDC將這個(gè)Session Key和用戶名,用戶地址(IP),服務(wù)名,有效期, 時(shí)間戳一起包裝成一個(gè)Ticket(這些信息最終用于Service對(duì)Client的身份鑒別)發(fā)送給Service,
不過Kerberos協(xié)議并沒有直接將Ticket發(fā)送給Service,而是通過Client轉(zhuǎn)發(fā)給Service,所以有了第二步。
(2)此時(shí)KDC將剛才的Ticket轉(zhuǎn)發(fā)給Client。
由于這個(gè)Ticket是要給Service的,不能讓Client看到,所以KDC用協(xié)議開始前KDC與Service之間的密鑰將Ticket加密后再發(fā)送給Client。
同時(shí)為了讓Client和Service之間共享那個(gè)密鑰(KDC在***步為它們創(chuàng)建的Session Key),
KDC用Client與它之間的密鑰將Session Key加密隨加密的Ticket一起返回給Client。
(3)為了完成Ticket的傳遞,Client將剛才收到的Ticket轉(zhuǎn)發(fā)到Service。
由于Client不知道KDC與Service之間的密鑰,所以它無(wú)法算改Ticket中的信息。
同時(shí)Client將收到的Session Key解密出來,然后將自己的用戶名,用戶地址(IP)打包成Authenticator用Session Key加密也發(fā)送給Service。
(4)Service 收到Ticket后利用它與KDC之間的密鑰將Ticket中的信息解密出來,從而獲得Session Key和用戶名,用戶地址(IP),服務(wù)名,有效期。
然后再用Session Key將Authenticator解密從而獲得用戶名,用戶地址(IP)將其與之前Ticket中解密出來的用戶名,用戶地址(IP)做比較從而驗(yàn)證Client的身份。
(5)如果Service有返回結(jié)果,將其返回給Client。
#p#
Hadoop集群內(nèi)部使用Kerberos進(jìn)行認(rèn)證
[[137087]]
好處:
可靠:Hadoop本身并沒有認(rèn)證功能和創(chuàng)建用戶組功能,使用依靠外圍的認(rèn)證系統(tǒng);
高效:Kerberos使用對(duì)稱鑰匙操作,比SSL的公共密鑰快;
操作簡(jiǎn)單:用戶可以方便進(jìn)行操作,不需要很復(fù)雜的指令。比如廢除一個(gè)用戶只需要從Kerbores的KDC數(shù)據(jù)庫(kù)中刪除即可。
HDFS安全
1、Client獲取namenode初始訪問認(rèn)證(使用kerberos)后,會(huì)獲取一個(gè)delegation token,這個(gè)token可以作為接下來訪問HDFS或提交作業(yè)的憑證;
2、同樣為了讀取某個(gè)文件,Client首先要與namenode交互,獲取對(duì)應(yīng)block的block access token,
然后到相應(yīng)的datanode上讀取各個(gè)block ,
而datanode在初始啟動(dòng)向namenode注冊(cè)時(shí)候,已經(jīng)提前獲取了這些token,
當(dāng)client要從TaskTracker上讀取block時(shí),首先驗(yàn)證token,通過才允許讀取。
MapReduce安全
1、所有關(guān)于作業(yè)的提交或者作業(yè)運(yùn)行狀態(tài)的追蹤均是采用帶有Kerberos認(rèn)證的RPC實(shí)現(xiàn)的。
授權(quán)用戶提交作業(yè)時(shí),JobTracker會(huì)為之生成一個(gè)delegation token,該token將被作為job的一部分存儲(chǔ)到HDFS上并通過RPC分發(fā)給各個(gè)TaskTracker,一旦job運(yùn)行結(jié)束,該token失效。
2、用戶提交作業(yè)的每個(gè)task均是以用戶身份啟動(dòng)的,這樣一個(gè)用戶的task便不可以向TaskTracker或者其他用戶的task發(fā)送操作系統(tǒng)信號(hào),給其他用戶造成干擾。這要求為每個(gè)用戶在所有的TaskTracker上建一個(gè)賬號(hào);
3、當(dāng)一個(gè)map task運(yùn)行結(jié)束時(shí),它要將計(jì)算結(jié)果告訴管理它的TaskTracker,之后每個(gè)reduce task會(huì)通過HTTP向該TaskTracker請(qǐng)求自己要處理的那塊數(shù)據(jù),Hadoop應(yīng)該確保其他用戶不可以獲取map task的中間結(jié)果,
其執(zhí)行過程是:reduce task對(duì)“請(qǐng)求URL”和“當(dāng)前時(shí)間”計(jì)算HMAC-SHA1值,并將該值作為請(qǐng)求的一部分發(fā)動(dòng)給TaskTracker,TaskTracker收到后會(huì)驗(yàn)證該值的正確性。
博文出處:http://blog.csdn.net/scgaliguodong123_/article/details/46523569

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流