- 浏览: 151220 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (113)
- Java工具类 (3)
- Hibernate (1)
- Struts>1&2 (0)
- Spring (0)
- Web前端 (1)
- 数据库 (2)
- 中间件 (3)
- 搜索引擎 (11)
- EJB (1)
- Log日志 (1)
- OS操作系统 (7)
- Java文档 (4)
- Security (1)
- Exception&Error (7)
- 日志&心情 (7)
- 开心一下 (3)
- 云计算 (41)
- Cache缓存 (4)
- MongoDB (1)
- OS操作系统 Linux (7)
- jquery (1)
- 机器学习 (2)
- Plugins (2)
- AJAX (1)
- Java工具 (1)
- WebService (1)
最新评论
-
a420144030:
你好,我想计算n篇文章的相似度,用mahout能处理吗,如何做 ...
mahout使用 -
di1984HIT:
OK,真的很牛啊
hadoop常见错误 -
xwl1991:
还真是这个问题 !
quartz报错java.lang.NoSuchMethodError: org.apache.commons.collections.SetUtils.ord
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
发表评论
-
用Sqoop把数据从HDFS导入到MYSQL
2012-10-27 23:30 2318转自:http://www.kaifajie.cn/mySQL ... -
大数据的储存:百度HDFS集群的数据压缩
2012-08-30 17:48 11552012年4月13日,由IT168(ITP ... -
用sqoop进行mysql和hdfs系统间的数据互导
2012-07-31 16:32 1883转自:http://abloz.com/2012/07/19/ ... -
从hive将数据导出到mysql
2012-07-31 16:31 1784转自:http://abloz.com/2012/07/20/ ... -
Hive SQL
2012-07-19 13:49 1400转自:http://www.tbdata.org/ ... -
Hive优化总结
2012-07-09 15:18 4268优化时,把hive sql当做ma ... -
hadoop/mapred 优化方法
2012-06-12 11:47 1371从三个方面着手优化 : 1. hadoop配置 2. ... -
hadoop集群dfs.data.dir目录权限问题导致节点无法启动
2012-06-11 18:32 6190安装使用Hive的时候发现文件无法从本地拷贝到hadoo ... -
hadoop中的balancer
2012-06-11 15:49 1105对于HDFS集群,经常长时间的运行,尤其是大量的delete操 ... -
Hadoop集群上使用Lzo压缩
2012-05-28 11:03 902转自:http://www.tech126.com/hadoo ... -
使用Hive读取Hbase中的数据
2012-05-23 13:12 2242转自:http://www.4ucode.com/Study/ ... -
在XP系统下配置eclipse集成hadoop开发
2012-05-05 11:09 1013一、目的:由于hadoop只能在Linux环境下运行,所以对于 ... -
使用Hive读取Hbase中的数据
2012-04-18 14:24 1055转自:http://www.4ucode.com/Study/ ... -
Web日志分析方法概述 让复杂的数据挖掘变得简单可行
2012-04-13 16:31 837志在计算机系统中是一个非常广泛的概念,任何程序都有可能输出日志 ... -
应用sqoop将MySQL数据库中的数据导入Hbase
2012-04-12 11:31 2036转自:http://www.bwxxkj.com/a/jish ... -
hadoop中的trash机制,恢复删除的文件
2012-03-31 13:46 2156Hadoop回收站trash,默认是关闭的。 1.修改con ... -
Hadoop 和DBMS 的互补性
2012-03-29 12:22 644随着Microsoft 也加入Hadoop 阵营,Hadoop ... -
Hadoop 中的两表join
2012-03-29 12:20 825转自:http://www.gemini52013 ... -
各版本编译hadoop eclipse plugin
2012-03-29 12:19 1352转自:http://www.gemini52013 ... -
hadoop常见错误
2012-03-24 13:04 1620错误1:bin/hadoop dfs 不能正常启动,持续提 ...
相关推荐
Cloudera Hadoop 5&Hadoop高阶管理及调优课程,完整版,提供课件代码资料下载。 内容简介 本教程针对有一定Hadoop基础的学员,深入讲解如下方面的内容: ...4、Hadoop安全认证及授权管理 5、Hadoop各组件性能调优
首先是用root权限关闭所有节点的防火墙,/etc/init.d/iptables stop 然后启动hadoop集群 来到hadoop的安装路径执行: ./start-all.sh 待到集群全部成功启动之后两分钟之后执行关闭hadoop文件系统的安全模式, ./...
7.2 探查任务特定信息 7.3 划分为多个输出文件 7.4 以数据库作为输入输出 7.5 保持输出的顺序 7.6 小结 第8章 管理Hadoop 8.1 为实际应用设置特定参数值 8.2 系统体检 8.3 权限设置 8.4 配额管理 8.5 启用...
3)、用vim /etc/sudoers给hadoop用户分配管理员权限 4)、用su hadoop命令切换到hadoop用户,三个结点都要切换到各自的hadoop用户 5)、用cd ~切换到宿主目录,即/home/Hadoop目录 6)、用ssh-keygen -t rsa生成...
Hadoop官方文档,中文手册,介绍Hadoop快速入门,集群搭建,HDFS架构设计、使用、权限、配额管理等,
ZooKeeper 权限管理机制; ZooKeeper 服务器工作原理和流程; ZooKeeper 实现共享锁; Hadoop 最佳实践; 通过Hadoop 的API 管理Job; Hadoop 集群的配置调优; Hadoop 平台的Java 规范及经验; MapReduce 开发经验...
Apache Ranger提供一个集中式安全管理框架, 并解决授权和审计。它可以对Hadoop生态的组件如HDFS、Yarn、Hive、Hbase等进行细粒度的数据访问控制。通过操作Ranger控制台,管理员可以轻松的通过配置策略来控制用户访问...
Apache Ranger 支持以下HDP组件的验证、授权、审计、数据加密、安全管理: Apache Hadoop HDFS Apache Hive Apache HBase Apache Storm Apache Knox Apache Solr Apache Kafka YARN
Apache Sentry是Cloudera公司发布的一个Hadoop开源组件,截止目前还是Apache的孵化项目,它提供了细粒度级、基于角色的授权以及多租户的管理模式。Sentry当前可以和Hive/Hcatalog、Apache Solr 和Cloudera Impala...
此外,所需权限也不同。后台模块分为用户、部门、角色、网盘、日志、系统监控、接口文档、定时任务模块。在网络磁盘管理模块中,管理员可以上传、删除和修改文档,管理员还可以在线查看多媒体资源,如Word文档、视频...
基于Hadoop的文件存储系统是一个私有的专用网盘系统,具有强大和简单易用的文件管理、协同办公、部门或虚拟团队级文件共享等丰富功能。与免费的个人网盘相比,具有更强的团队协同功能,在组织架构、共享权限上能适应...
6.HDFS权限指南 7.HDFS配额管理指南 8.命令手册 9.FS Shell使用指南 10.DistCp使用指南 11.Map-Reduce教程 12.Hadoop本地库 13.Streaming 14.Hadoop Archives 15.Hadoop On Demand 另附带 Hadoop API
资源名称:Hadoop安全:大数据平台隐私保护内容简介:《Hadoop安全 大数据平台隐私保护》阐述了Hadoop从早期开放的消费互联网时代到现在作为敏感数据可信平台的演变历程,介绍了包括身份验证、加密、密钥管理和商业...
1387.4 以数据库作为输入输出 1437.5 保持输出的顺序 1457.6 小结 146第8章 管理Hadoop 1478.1 为实际应用设置特定参数值 1478.2 系统体检 1498.3 权限设置 1518.4 配额管理 1518.5 启用回收站 ...
Hadoop环境是旨在用于管理和分配以促进大量信息的现有知识的最好一部分。 当前有各种各样的行为来积累和开发大量的信息。 Hadoop被广泛利用,它是大多数流行策略中的孤独者,它积累了大量信息并等效地进行扩展。 在...
基于Greenplum Hadoop- 分布式平台的大数据解决方案08 - 角色权限及客户端认证管理(2).zip 视频和PPT下载
从由 Apache 许可授权的 HCatalog 是面向 Apache Hadoop 框架 的一个数据表管理层。它提供了数据表抽象功能,可支持您在 Apache Hadoop 框架中将数据作为一系列数据表进行处理。借助 HCatalog,用户无需再担忧很多...
在Linux之中最为重要的用户就是root,而且为了简化权限的问题,将直接使用root用户操作,但是默认情况下Ubuntu是隐藏了root用户的。在最早的时候设置的用户为wangke,密码为123。这个时候如果要使用一些跟超级管理员...
可为hadoop用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题 sudo adduser hadoop sudo 最后使用su hadoop 切换到用户hadoop,或者注销当前用户,选择hadoop登录。 切换到hadoop用户后,先更新...