1樓:匿名使用者
讀取檔案 map生成對, reduce接受到相同 key的 value的iterator,進行處理,輸出
請簡要描述hadoop計算框架mapreduce的工作原理
2樓:大資料小庫
分為2個步驟,map和reduce,map專門負責對每個資料獨立地同時地打標籤,框架會對相同標籤的資料分成一組,reduce對分好的那些組資料做累計計算。我們只要分別實現map和reduce就可以了
hadoop是分散式檔案系統嗎
kerberos在hadoop安全中擔任什麼角色以及存在什麼問題
3樓:
1. hadoop安全問題:
hadoop設計之初,預設叢集內所有的節點都是可靠的。由於使用者與hdfs或m/r進行互動時不需要驗證,惡意使用者可以偽裝成真正的使用者或者伺服器入侵到hadoop叢集上,導致:惡意的提交作業,修改jobtracker狀態,篡改hdfs上的資料,偽裝成namenode 或者tasktracker接受任務等。
儘管在版本之後, hdfs增加了檔案和目錄的許可權,但並沒有強認證的保障,這些許可權只能對偶然的資料丟失起保護作用。惡意的使用者可以輕易的偽裝成其他使用者來篡改許可權,致使許可權設定形同虛設。不能夠對hadoop叢集起到安全保障。
(1) 使用者到伺服器的認證問題:
namenode,jobtracker上沒有使用者認證
使用者可以偽裝成其他使用者入侵到一個hdfs 或者mapreduce叢集上。
datanode上沒有認證
datanode對讀入輸出並沒有認證。導致如果一些客戶端如果知道block的id,就可以任意的訪問datanode上block的資料
jobtracker上沒有認證
可以任意的殺死或更改使用者的jobs,可以更改jobtracker的工作狀態
(2) 伺服器到伺服器的認證問題:
沒有datanode, tasktracker的認證
使用者可以偽裝成datanode ,tasktracker,去接受jobtracker, namenode的任務指派。
2、kerberos解決的安全問題:
加入kerberos認證機制使得叢集中的節點就是它們所宣稱的,是信賴的。kerberos可以將認證的金鑰在叢集部署時事先放到可靠的節點上。叢集執行時,叢集內的節點使用金鑰得到認證。
只有被認證過節點才能正常使用。企圖冒充的節點由於沒有事先得到的金鑰資訊,無法與叢集內部的節點通訊。
kerberos實現的是機器級別的安全認證,也就是前面提到的服務到服務的認證問題。事先對叢集中確定的機器由管理員手動新增到kerberos資料庫中,在kdc上分別產生主機與各個節點的keytab(包含了host和對應節點的名字,還有他們之間的金鑰),並將這些keytab分發到對應的節點上。通過這些keytab檔案,節點可以從kdc上獲得與目標節點通訊的金鑰,進而被目標節點所認證,提供相應的服務,防止了被冒充的可能性。
解決伺服器到伺服器的認證
由於kerberos對叢集裡的所有機器都分發了keytab,相互之間使用金鑰進行通訊,確保不會冒充伺服器的情況。叢集中的機器就是它們所宣稱的,是可靠的。
防止了使用者偽裝成datanode,tasktracker,去接受jobtracker,namenode的任務指派。
解決client到伺服器的認證
kerberos對可信任的客戶端提供認證,確保他們可以執行作業的相關操作。防止使用者惡意冒充client提交作業的情況。
使用者無法偽裝成其他使用者入侵到一個hdfs 或者mapreduce叢集上
使用者即使知道datanode的相關資訊,也無法讀取hdfs上的資料
使用者無法傳送對於作業的操作到jobtracker上
對使用者級別上的認證並沒有實現
無法控制使用者提交作業的操作。不能夠實現限制使用者提交作業的許可權。不能控制哪些使用者可以提交該型別的作業,哪些使用者不能提交該型別的作業。這些由acl模組控制(參考)
3、kerberos在hadoop安全中擔任什麼角色以及存在什麼問題:
通俗來說kerberos在hadoop安全中起到是一個單因素(只有一種如賬號、密碼的驗證方式)身份驗證的作用,kerberos就如一個房間的門鎖,進門的人需要提供正確的密碼,而對於進門後的人做了什麼樣的操作kerberos就無法控制了。
存在的問題:
kerberos驗證方式單
一、安全性低的問題,首先其只提供類似linux檔案系統的帳戶許可權驗證,而且可以通過簡單的手段冒充使用者名稱,如果有惡意使用者,直接冒充為hadoop的super使用者,那整個叢集是很危險的。其次不能對認證過的使用者做任何許可權控制;
部署複雜,生成證書和配置的步驟相當繁瑣,首次配置還可以接受,但是對於使用者許可權的修改,機器的減容擴容,會造成證書重新生成,再分發證書,重啟hadoop。且還存在kerberos的宕機導致整個叢集無法服務的風險,加上kerberos本身也比較複雜。
影響效率,網上搜羅一個真實案例,支付寶曾用了kerberos,導致其效率極低運維困難。原因是因為請求次數過多,具體看下面關於kerberos的工作原理就知道了。
4、 kerberos工作原理介紹
4.1基本概念
princal(安全個體):被認證的個體,有一個名字和口令
kdc(key distribution center ) : 是一個網路服務,提供ticket 和臨時會話金鑰
ticket:一個記錄,客戶用它來向伺服器證明自己的身份,包括客戶標識、會話金鑰、時間戳。
as (authentication server): 認證伺服器
tsg(ticket granting server): 許可證伺服器
4.2 kerberos 工作原理
4.2.1 kerberos協議
kerberos可以分為兩個部分:
client向kdc傳送自己的身份資訊,kdc從ticket granting service得到tgt(ticket-granting ticket), 並用協議開始前client與kdc之間的金鑰將tgt加密回覆給client。此時只有真正的client才能利用它與kdc之間的金鑰將加密後的tgt解密,從而獲得tgt。(此過程避免了client直接向kdc傳送密碼,以求通過驗證的不安全方式)
client利用之前獲得的tgt向kdc請求其他service的ticket,從而通過其他service的身份鑑別
4.3 kerberos認證過程
kerberos協議的重點在於第二部分(即認證過程):
(1)client將之前獲得tgt和要請求的服務資訊(服務名等)傳送給kdc,kdc中的ticket granting service將為client和service之間生成一個session key用於service對client的身份鑑別。然後kdc將這個session key和使用者名稱,使用者地址(ip),服務名,有效期, 時間戳一起包裝成一個ticket(這些資訊最終用於service對client的身份鑑別)傳送給service,不過kerberos協議並沒有直接將ticket傳送給service,而是通過client**給service,所以有了第二步。
(2)此時kdc將剛才的ticket**給client。由於這個ticket是要給service的,不能讓client看到,所以kdc用協議開始前kdc與service之間的金鑰將ticket加密後再傳送給client。同時為了讓client和service之間共享那個金鑰(kdc在第一步為它們建立的session key),kdc用client與它之間的金鑰將session key加密隨加密的ticket一起返回給client。
(3)為了完成ticket的傳遞,client將剛才收到的ticket**到service. 由於client不知道kdc與service之間的金鑰,所以它無法算改ticket中的資訊。同時client將收到的session key解密出來,然後將自己的使用者名稱,使用者地址(ip)打包成authenticator用session key加密也傳送給service。
(4)service 收到ticket後利用它與kdc之間的金鑰將ticket中的資訊解密出來,從而獲得session key和使用者名稱,使用者地址(ip),服務名,有效期。然後再用session key將authenticator解密從而獲得使用者名稱,使用者地址(ip)將其與之前ticket中解密出來的使用者名稱,使用者地址(ip)做比較從而驗證client的身份。
(5)如果service有返回結果,將其返回給client。
4.4 kerberos在hadoop上的應用
hadoop叢集內部使用kerberos進行認證
具體的執行過程可以舉例如下:
請簡要描述一下hadoop,spark,mpi三種計算框架的
hadoop包括hdfs mapreduce yarn 核心元件。hdfs用於儲存,mapreduce用於計算,yarn用於資源管理。spark包括spark sql saprk mllib spark streaming spark 圖計算。saprk的這些元件都是進行計算的。spark sql離...
關於交換機與路由器的工作原理,簡要概述交換機和路由器的工作原理
計算機網路往往由許多種不同型別的網路互連連線而成。如果幾個計算機網路只是在物理上連線在一起,它們之間並不能進行通訊,那麼這種 互連 並沒有什麼實際意義。因此通常在談到 互連 時,就已經暗示這些相互連線的計算機是可以進行通訊的,也就是說,從功能上和邏輯上看,這些計算機網路已經組成了一個大型的計算機網路...
請介紹一下斷氣剎車的工作原理
斷氣剎的方式大多用在中大型車的手剎系統 這種車的手剎系統平時是用大力的彈簧處於常剎車狀態,車輛要行駛的時候,駕駛員鬆手剎就是一個放氣的動作,必須要達到一定的氣壓才能頂開彈簧,也就是把手剎鬆掉,才能行駛 常規剎車是手剎鎖住傳動軸,腳剎時由壓縮空氣進入制動氣室鎖住車輪。在手剎或傳動軸機械故障時,手剎失靈...