亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

hadoop權限管理

系統 2612 0
1. 介紹

本文介紹的Hadoop權限管理包括以下幾個模塊:

(1) 用戶分組管理 。用于按組為單位組織管理,某個用戶只能向固定分組中提交作業,只能使用固定分組中配置的資源;同時可以限制每個用戶提交的作業數,使用的資源量等

(2) 作業管理 。包括作業提交權限控制,作業運行狀態查看權限控制等。如:可限定可提交作業的用戶;可限定可查看作業運行狀態的用戶;可限定普通用戶只能修改自己作業的優先級,kill自己的作業;高級用戶可以控制所有作業等。

想要支持權限管理需使用Fair Scheduler或者 Capacity Scheduler(作業管理需用到Hadoop的ACL(Access Control List)功能,啟用該功能需選擇一個支持多隊列管理的調度器)

2. 基本術語

(1) 用戶(User) :Hadoop使用Linux用戶管理,Hadoop中的用戶就是Linux中的用戶

(2) 分組(group) :Hadoop使用Linux分組管理,Hadoop中的分組就是Linux中的分組

(3) 池(pool) :Hadoop Fair Scheduler中的概念,一個pool可以是一個user,一個group,或者一個queue。

(4) 隊列(Queue) :隊列是Hadoop提出的概念,一個Queue可以由任意幾個Group和任意幾個User組成。

3. Hadoop中Fair Scheduler與Capacity Scheduler介紹

3.1 Fair Scheduler

Facebook開發的適合共享環境的調度器,支持多用戶多分組管理,每個分組可以配置資源量,也可限制每個用戶和每個分組中的并發運行作業數量;每個用戶的作業有優先級,優先級越高分配的資源越多。

3.2 Capacity Scheduler

Yahoo開發的適合共享環境的調度器,支持多用戶多隊列管理,每個隊列可以配置資源量,也可限制每個用戶和每個隊列的并發運行作業數量,也可限制每個作業使用的內存量;每個用戶的作業有優先級,在單個隊列中,作業按照先來先服務(實際上是先按照優先級,優先級相同的再按照作業提交時間)的原則進行調度。

3.3 Fair Scheduler vs Capacity Scheduler

(1) 相同點

[1] 均支持多用戶多隊列,即:適用于多用戶共享集群的應用環境

[2] 單個隊列均支持優先級和FIFO調度方式

[3] 均支持資源共享,即某個queue中的資源有剩余時,可共享給其他缺資源的queue

(2) 不同點

[1] 核心調度策略不同。 計算能力調度器的調度策略是,先選擇資源利用率低的queue,然后在queue中同時考慮FIFO和memory constraint因素;而公平調度器僅考慮公平,而公平是通過作業缺額體現的,調度器每次選擇缺額最大的job(queue的資源量,job優先級等僅用于計算作業缺額)。

[2] 內存約束。計算能力調度器調度job時會考慮作業的內存限制,為了滿足某些特殊job的特殊內存需求,可能會為該job分配多個slot;而公平調度器對這種特殊的job無能為力,只能殺掉這種task。

(3) 功能上的不同

Fair Scheduler不允許配置每個user使用的slot數上限,但允許搶占資源 ;而Capacity scheduler允許配置每個user使用的slot數上限,但暫時不支持資源搶占 。

4. 用戶分組管理

以Fair Scheduler(http://hadoop.apache.org/common/docs/r0.20.0/fair_scheduler.html )為例,按以下步驟進行:

(1) 將Fair Scheduler的jar包拷貝到lib中

如:cp ${HADOOP_HOME}/contrib/fairscheduler/hadoop-fairscheduler-0.20.2+320.jar ${HADOOP_HOME}/lib/

(2) 配置Queue相關信息

具體參考:

http://hadoop.apache.org/common/docs/r0.20.2/cluster_setup.html#Configuring+the+Hadoop+Daemons

在mapred-site.xml中添加以下內容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
< property >
< name >mapred.acls.enabled</ name >
< value >true</ value >
</ property >
< property >
< name >mapred.queue.names</ name >
< value >my_group,default</ value >
</ property >
< property >
< name >mapred.queue.my_queue.acl-submit-job</ name >
< value > my_group</ value >
</ property >
< property >
< name >mapred.queue.default.acl-administer-jobs</ name >
< value ></ value >
</ property >
< property >
< name >mapred.queue.my_queue.acl-administer-jobs</ name >
< value ></ value >
</ property >

說明:

【1】 屬性mapred.queue.names是queue的所有名字,在這一名字中,必須有一個叫“default”的queue

【2】 每個queue均有一個屬性mapred.queue.<queue-name>.acl-submit-job,用于指定哪些user或者group可以向該queue中提交作業

【3】每個queue均有一個屬性mapred.queue.<queue-name>.acl-administer-jobs,用于指定哪些user或者group可以管理該queue中的所有作業,即可以kill作業,查看task運行狀態。一般而言,對于每個隊列,該選項為空即可,表示每個user只能管理自己的作業。

【4】 每個queue擁有的資源量和其他信息均在另外一個配置文件中指定(對于公平調度器,可以在fair-scheduler.xml中指定)

【5】 mapred.queue.<queue-name>.acl-submit-job和mapred.queue.<queue-name>.acl-administer-jobs配置方法如下:

用戶和用戶組之間用空格分開,用戶之間用“,”分割,用戶組之間用“,”分割,如果queue的屬性值中只有用戶組,則前面保留一個空格。

(3) 配置fair scheduler相關信息

在mapred-site.xml中添加以下內容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
< property >
< name >mapred.jobtracker.taskScheduler</ name >
< value >org.apache.hadoop.mapred.FairScheduler</ value >
</ property >
< property >
< name >mapred.fairscheduler.poolnameproperty</ name >
< value >mapred.job.queue.name</ value >
</ property >
< property >
< name >mapred.fairscheduler.allocation.file</ name >
< value >/home/XXX/hadoop/conf/fair-scheduler.xml</ value >
</ property >

說明:

mapred.fairscheduler.poolnameproperty有三個可用值:默認情況下是user.name,即每個用戶獨自一個pool;group.name,即一個linux group一個pool,mapred.job.queue.name,即一個queue一個pool,如果要支持“作業管理”,需使用最后一種配置。

(4) 創建文件fair-scheduler.xml,并添加以下內容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<? xml version = "1.0" ?>
< allocations >
< pool name = "my_queue" >
< minMaps >10</ minMaps >
< minReduces >10</ minReduces >
< maxRunningJobs >10</ maxRunningJobs >
< minSharePreemptionTimeout >300</ minSharePreemptionTimeout >
< weight >2.0</ weight >
</ pool >
< user name = "bob" >
< maxRunningJobs >5</ maxRunningJobs >
</ user >
< poolMaxJobsDefault >25</ poolMaxJobsDefault >
< userMaxJobsDefault >2</ userMaxJobsDefault >
< defaultMinSharePreemptionTimeout >600</ defaultMinSharePreemptionTimeout >
< fairSharePreemptionTimeout >600</ fairSharePreemptionTimeout >
</ allocations >

說明:

【1】各個字段的含義

<pool></pool>之間配置的是每個pool的信息,主要如下:

(a) minMaps:該pool可使用的map slot數

(b) minReduces:該pool可使用的reduce slot數

(c) maxRunningJobs:該pool最大運行作業數

(d) minSharePreemptionTimeout:該pool搶占資源的時間間隔,即本屬于自己的資源在改時間內拿不到便會搶占。

(e) Weight:pool的權重,該值越大,能夠從共享區(有一些pool中的資源用不完,會共享給其他pool)中獲取的資源越多。

<user></user>之間配置某個用戶的約束:

maxRunningJobs:該用戶可同時運行的作業數

<poolMaxJobsDefault></poolMaxJobsDefault>之間配置默認情況下每個pool最大運行作業數

<userMaxJobsDefault></userMaxJobsDefault>之間配置默認情況下每個user最大運行作業數

……

【2】 該配置文件中可動態修改無需重啟Hadoop(修改后3s會被重新加載)

5. 作業管理

作業管理模塊由Hadoop的ACL(http://hadoop.apache.org/common/docs/r0.20.2/service_level_auth.html )完成。

(1) 在core-site.xmll中配置以下屬性:

1
2
3
4
5
6
7
< property >
< name >hadoop.security.authorization</ name >
< value >true</ value >
</ property >

(2) 配置${HADOOP_CONF_DIR}/hadoop-policy.xml

Hadoop有9個可配置的ACL屬性,每個屬性可指定擁有相應訪問權限的用戶或者用戶組。這9個ACL屬性如下:

這9個ACL的配置方法相同,具體如下:

每個ACL可配置多個用戶,用戶之間用“,”分割;可配置多個用戶組,分組之間用“,”分割, 用戶和分組之間用空格分割,如果只有分組,前面保留一個空格,如:

1
2
3
4
5
6
7
< property >
< name >security.job.submission.protocol.acl</ name >
< value >alice,bob group1,group2</ value >
</ property >

說明: 用戶alice和bob, 分組group1和group2可提交作業

又如:

1
2
3
4
5
6
7
< property >
< name > security.client.protocol.acl </ name >
< value > group3</ value >
</ property >

說明:只有group3可訪問HDFS

1
2
3
4
5
6
7
< property >
< name >security.client.protocol.acl</ name >
< value >*</ value >
</ property >

說明:所有用戶和分組均可訪問HDFS

注意,默認情況下,這9個屬性不對任何用戶和分組開放。

該配置文件可使用以下命令動態加載:

(1) 更新namenode相關屬性: bin/hadoop dfsadmin –refreshServiceAcl

(2) 更新jobtracker相關屬性:bin/hadoop mradmin -refreshServiceAcl

6. 提交作業

用戶提交作業時,需用mapred.job.queue.name屬性告訴Hadoop你要將作業提交到哪個Queue中,具體如下:

(1) 如果你是用Java編寫Hadoop作業,用-D mapred.job.queue.name指明提交到哪個queue,如:

1
2
3
4
5
6
7
8
9
$HADOOP_HOME / bin / hadoop jar wordcount.jar wordcount \
- D mapred. map .tasks = 1 \
- D mapred. reduce .tasks = 1 \
- D mapred.job.queue.name = infrastructure \
Input ouput

(2) 如果你使用Hadoop Pipes編寫作業,用-D mapred.job.queue.name指明提交到哪個queue,如:

1
2
3
4
5
6
7
8
9
10
11
$HADOOP_HOME / bin / hadoop pipes \
- D hadoop.pipes.executable = / examples / bin / wordcount \
- D hadoop.pipes.java.recordreader = true \
- D hadoop.pipes.java.recordwriter = true \
- D mapred.job.queue.name = my_group \
- input in - dir - output out - dir

(3) 如果你使用Hadoop Streaming編寫作業,用-D mapred.job.queue.name指明提交到哪個queue,如:

1
2
3
4
5
6
7
8
9
10
11
$HADOOP_HOME / bin / hadoop jar $HADOOP_HOME / hadoop - streaming.jar \
- input myInputDirs \
- output myOutputDir \
- mapper myPythonScript.py \
- reducer / bin / wc \
- D mapred.job.queue.name = my_group

7. 參考資料

http://hadoop.apache.org/common/docs/r0.20.2/cluster_setup.html#Configuring+the+Hadoop+Daemons

http://hadoop.apache.org/common/docs/r0.20.2/service_level_auth.html

http://hadoop.apache.org/common/docs/r0.20.0/fair_scheduler.html

hadoop權限管理


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 婷婷激情在线视频 | 色综合天天综合中文网 | www.一区| 久热精品视频在线 | 国产在视频线精品www666 | 免费播放欧美毛片 | 美女一级毛片 | 在线不卡日本 | 超清乱人伦中文视频在线 | 国产高清免费午夜在线视频 | 番茄视频在线观看黄版本免费 | 日本一级成人毛片免费观看 | 色偷偷青青草原在线视频 | 久久精品免费看 | 天天做天天爱天天爽综合网 | 久草在线观看首页 | 国产亚洲午夜精品a一区二区 | 123日本不卡在线观看 | 免费看黄色的视频 | 最近中文字幕无吗免费视频 | 香蕉网久久 | 亚洲国产精品专区 | 久久婷婷久久一区二区三区 | 九九综合 | 日本一区二区三区四区 | 国产日韩欧美亚洲综合在线 | 国产成人精品一区二区免费 | 日本www在线视频 | 天天插天天插天天插 | 看a网站| 午夜欧美性视频在线播放 | 99re免费视频精品全部 | 亚洲精品久久久午夜伊人 | 中文字幕一区二区三区亚洲精品 | 97国产精品国产品国语字幕 | 亚洲涩色 | 四虎精品成人免费视频 | 亚洲两性| 国产精品久久国产精麻豆99网站 | 99爱在线视频 | 99九色|