1、问题

Hadoop客户端如何配置可远程操作Hadoop;Hadoop多用户情况下,是如何管理权限并分配存储空间和计算能力,保证集群的稳定。

2、Hadoop平台

要理解客户端如何通过指定用户远程操作hadoop集群,这里先理解下hadoop平台的部署架构。Hadoop是大数据分布式处理的软件框架,集成MapReduce分布式编程模型和HDFS分布式文件存储系统。MapReduce将执作业job分割成任务task,运行于各计算节点的。HDFS负责各个节点的数据存储,实现高吞吐率的数据读写。

Hadoop的主/从(Master/Slave)集群架构,主要由NameNode、DataNode、Secondary NameNode、JobTracker、TaskTracker组成。其中NameNode、Secondary  NameNode、JobTracker运行在Master节点上,而在每个Slave节点上,部署一个DataNode和TaskTracker。集群datanode之间并行地复制大文件可通过distcp命令。

从这个体系上看,主要是Client和Master之间通信来实现远程和多用户管理。

2、Hadoop客户端安装和配置

1)Centos操作系统下,客户端Client用户名为A,服务器Master用户名为M,复制服务器的Hadoop安装包到客户端。

2)系统/etc/profile配置hadoop的home路径;

3)Hadoop目录下hadoop-env.sh配置jdk路径;

4)Hadoop目录下core-site.xml配置集群namenode路径;

<property>

<name>fs.default.name</name>

<value>hdfs://Master:8020</value>

</property>

5)Hadoop目录下mapred-site.xml配置集群jobtracker路径;

<property>

<name>mapred.job.tracker</name>

<value> Master:8021</value>

</property>

Hadoop客户端已完成配置,如Master服务器已设置好用户A,则可以运行Hadoop命令,如向hdfs系统上传文件。

现在的关键是Master服务器如何用M管理多用户权限,使客户端Client的用户A具有执行Master命令的权限。有必要先了解Linux的ACL机制。

3、ACL机制

ACL(AccessControl List) 访问控制列表,可置特定用户或用户组对于一个文件/目录的操作权限,包包括owner、group、others的read、write、execute权限。主要两个命令是:getfacl查看文件/目录的ACL设定内容和setfacl设置文件/目录的ACL内容。

1)$getfaclmy.cnf  //查看my.cnf的acl内容

# file: my.cnf

# owner: root

# group: root

user::rw-

group::r--

other::r—

通过执行$ls-l my.cnf比照更清晰理解:

-rw-r--r-- 1 root root 943 3月 13 2015 my.cnf

2)$setfacl-m o:rwx my.cnf //设置my.cnf文件other

# file: my.cnf

# owner: root

# group: root

user::rw-

group::r--

other::rwx

3)语法参考:setfacl[-bkRd] [{-m|-x} acl参数] 文件名

-m :设置后续的acl参数

-x :删除后续的acl参数

-b :删除所有的acl设定参数

-R :递归设置acl参数

-d :设置预设的acl参数(只对目录有效,在该目录新建的文件也会使用此ACL默认值)

-k :删除预设的acl参数

4)开启和关闭:

ACL默认是开启的,开启和关闭可通过mount -o acl实现。

查看当前文件系统的挂载选项:

# tune2fs -l/dev/sda1 | grep “mount option”

Defaultmount options: user_xattr acl

使用tune2fs开启和关闭acl的命令:

tune2fs -oacl /dev/sda1

tune2fs -o^acl /dev/sda1

4、Hadoop访问控制

Hadoop访问控制分为两级,其中Service Level Authorization为系统级,用于控制是否可以访问指定的服务,例如用户/组是否可以向集群提交Job,它是最基础的访问控制,优先于文件权限和mapred队列权限验证。Access Control on Job Queues在job调度策略层之上,控制mapred队列的权限。DFS Permmision用户控制文件权限。

Hadoop文件和目录权限管理集成ACL,基于POSIX(Portable Operating System Interface,可移植操作系统接口)模型,支持按用户、用户组、其他用户的读写执行控制权限。

Hadoop修改文件的权限、所有者及其所属组的基本命令如下:

hadoop fs –chmod //修改文件所有者、所属组、其他用户的读、写、执行权限;

haddop fs –chown  //修改文件所有者

hadoop fs –chgrp   //修改文件所属组

用户组和用户名都是Linux本身管理,Hadoop只是管理特定Linux用户对hdfs文件系统的权限,实现不同客户端通过不同linux帐户远程Hadoop。客户端调用hadoop 的文件操作命令时,hadoop 识别出客户端执行命令所在进程的用户名和用户组(通过linux命令whoami识别用户名、通过groups 识别用户组,也有Kerberos、LDAP等身份识别方式),然后Master服务器检查赋予的该用户名和组的文件权限。

客户端Client启动hadoop进程远程Namenode时识别用户为A;Master服务器系统已有分配好hdfs文件权限的用户A,收到客户端请求后,检查A所执行命令的文件权限。

那么Hadoop具体如何分配用户权限及其所拥有的存储空间和计算能力。

5、Hadoop多用户管理

Master服务器的hadoop超级用户M(不是Linux操作系统的root),具有启动集群和执行所有命令的权限。那么M超级用户是如何管理hadoop普通用户的权限。

1)新建Master服务器Linux系统用户A、用户组A;

2)Hadoop创建用户A的目录

$hadoop fs –mkdir/user/A

$hadoop fs –ls  /user/A  //查看该文件夹权限

3)赋予用户A拥有目录的权限

$hadoop fs –chownA:A /user/A

4)设定用户A目录的空间容量

$hadoopdfsadmin –setSpaceQuota 1t /user/A  //如设置为1T

此时客户端A用户启动hadoop远程Master即可执行相关hadoop命令,提交任务数据到HDFS的/user/A目录。实际上,简单的多用户权限管理并不需要ACL功能,只需要hadoop本身文件操作命令即可,将hadoop多用户权限配置转移成单纯的hdfs文件的用户权限配置。

那如何进一步管理多用户的文件权限和资源能力呢?

对于复杂的文件权限访问控制,如要用户组里的所有用户都具备用户组相应的权限,需要使用ACL权限管理机制。

1)Hadoop启用ACL

hdfs-site.xml设置:

<property>

<name>dfs.permissions.enabled</name>

<value>true</value>

</property>

<property>

<name>dfs.namenode.acls.enabled</name>

<value>true</value>

</property>

core-site.xml设置用户组默认权限:

<property>

<name>fs.permissions.umask-mode</name>

<value>022</value>

</property>

2)HadoopACL命令

$hdfs dfs -getfacl [-R] path

显示文件和目录的访问控制列表。如果一个目录有默认的ACL,getfacl也可以显示默认的ACL设置。

$hdfs dfs -setfacl [-R] [-b|-k -m|-x acl_spec path]|[--set acl_spec path]

设置文件和目录的ACL

-R: Use thisoption to recursively list ACLs for all files and directories.

-b: Revokeall permissions except the base ACLs for user, groups and others.

-k: Removethe default ACL.

-m: Add newpermissions to the ACL with this option. Does not affect existing permissions.

-x: Removeonly the ACL specified.

参考:

http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsPermissionsGuide.html

对于多用户的资源分配,Hadoop通过Fair Scheduler或者 Capacity Scheduler支持,而作业管理则通过ACL来满足。

1)资源管理:以用户组和用户为主体配置可用资源。Fair Scheduler将整个Yarn的可用资源划分成多个资源池,支持按照用户名配置所属的资源池。每个资源池中可以配置最小和最大的可用资源(内存和CPU)、最大可同时运行Application数量、权重、以及可以提交和管理Application的用户等。

2)作业管理:主要是作业提交权限控制、作业运行状态查看权限控制等。如限定可提交作业的用户、限定可查看作业运行状态的用户、限定普通用户只能修改自己作业的优先级、kill自己的作业、高级用户可以控制所有作业等。

6、总结

对于Hadoop多用户管理的机制,从用户创建、到文件管理、资源和作业管理,通过两天时间的学习,大致梳理了下。对于进一步深入掌握Hadoop相关机制,还有很漫长的路,需要通过实践不断总结。

Hadoop多用户管理最主要是基于linux的用户分组和用户基础,并应用ACL管理文件和作业访问权限。在具体作业和资源管理上,还未进一步试验练习。

关于Hadoop多用户管理支持客户端远程操作的理论总结相关推荐

  1. 如何使用SSH客户端远程操作linux系统,并启动、关闭tomcat和查看后台日志

    cd - 表示回退到上一级目录 ls 表示查看当前目录下的所有文件 我们的tomcat安装路径在usr\local\yzmis\下面找 例如你要关闭信誉质量考核系统所在的tomcat,你要进入test ...

  2. w7虚拟机服务器管理器,Hyper - V (五) 在Win7中安装Hyper - V 管理工具远程操作虚拟机...

    在Win7中安装Hyper - V 管理工具远程操作虚拟机 由于在Hyper - V 中安装的虚拟机运行时鼠标会出现延迟现象,所以我们可以在客户机Win 7 上安装虚拟机. 首先从microsoft ...

  3. 邮件客户端远程管理邮箱

    远程管理 通过 远程管理 可直接对邮件远程服务器上的邮件进行管理 如何打开远程管理? 点选邮箱并右击 选择 远程管理 如何进行远程管理? 界面如下,可参照如下流程进行首次操作: 1.在 远程管理 界面 ...

  4. 微软鼠标支持linux吗,微软发布终端管理应用Windows Terminal新测试版终于支持鼠标进行操作...

    Windows Terminal是微软此前推出的终端管理软件 , 支持多种不同的连接协议并且可以调用 Linux 子系统操作. 在此前更新中该软件其实已经获得许多非常实用的新功能,但是微软始终没有支持 ...

  5. Powershell远程管理服务器客户端

    目录 域中计算机远程管理 1.管理员权限运行Powershell,输入Enable-PsRemoting开启Powershell远程管理 2.S12-1Powershell远程管理S12-2

  6. HDFS多用户管理ACL机制other权限访问控制的理解

    非Master服务器用户也能通过客户端远程访问Hadoop 现象:在Hadoop集群多用户管理实践中发现,客户端用非Master服务器配置的用户连接Master,也通用具备对指定目录的操作权限.比如M ...

  7. Hadoop入门(五)IO操作

    一.HadoopIO操作意义 Hadoop自带一套用于I/O的原子性的操作 (不会被线程调度机制打断,一直到结束,中间不会有任何context switch) 特点 基于保障海量数据集的完整性和压缩性 ...

  8. 远程计算机 函数不支持,win7远程桌面连接提示要求的函数不受支持怎么办

    摘要 腾兴网为您分享:win7远程桌面连接提示要求的函数不受支持怎么办,作业大师,智学网,虚拟助手,喜马拉雅等软件知识,以及winrar纯净,powerdesigner中文,云协同,smc选型软件,苹 ...

  9. 5.WEB及远程操作

    WEB及远程操作 1.Spring MVC总结 1.1 Spring MVC 框架请求处理流程 1.2 Spring MVC框架包含内容 1.3 Spring MVC 核心 1.3.1 Dispatc ...

最新文章

  1. RocketMQ-Spring 毕业两周年,为什么能成为 Spring 生态中最受欢迎的 messaging 实现?
  2. 全球及中国婴儿痤疮药行业消费需求调研与竞争策略展望报告2022版
  3. EDITOR-CALL语句的使用:修改abap内表的内容(代码摘抄)
  4. android实现后台静默安装,Android 静默安装实现方法
  5. 后台原理_电气控制原理动图22张,超赞!
  6. letecode [204] - Count Primes
  7. 实例分割模型Mask R-CNN详解——从R-CNN,Fast R-CNN,Faster R-CNN再到Mask R-CNN
  8. 【Linux】awk指令
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的考勤管理系统
  10. Office 365 Pro Plus 离线安装包及自定义部署工具下载地址
  11. 7-28 求矩阵的局部极大值 (15 分)
  12. mysql中regexp用法_mysql 中查询语句表达式REGEXP用法
  13. 数字 显示为LED 字体
  14. tinymce 实现 粘贴图片自动上传
  15. eWebEditor编辑器的使用
  16. 地铁与日本移动互联网
  17. 【Web安全从入门到放弃】06_文件包含漏洞
  18. idea 有时提示找不到类或者符号
  19. 超详细——手把手教你用threejs实现一个酷炫的模型发光扫描效果(一)
  20. 教学|3D建模之,游戏场景创建大致流程

热门文章

  1. 阐述计算机历程以及未来发展方向,计算机程序的发展史
  2. 这是Nginx的负载均衡配置方法
  3. Sql Server XML
  4. [HEOI2016/TJOI2016]排序
  5. redis的入门篇----启动和关闭
  6. Web测试要点 做移动端的测试,也做web端的测试,甚至后面桌面端的测试和后台的测试也做了,基本上把我们产品各个端都玩了一轮...
  7. 负数赋值给无符号数的陷阱【转】
  8. [caffe]深度学习之图像分类模型VGG解读
  9. 在64位Windows7上安装64位Oracle11g
  10. Linq TO SQL 虽好,但不要滥用