Hadoop集群共享给多用户
来源:互联网 发布:mac 文件权限 编辑:程序博客网 时间:2024/06/05 18:18
转载自http://www.aboutyun.com/thread-12604-1-1.html
问题导读
1.集群共享给多用户有什么好处?
2.如何将hadoop集群共享给多用户?
3.客户端向集群提交任务时,需要做哪些工作?
假设我们以名为hadoop的用户,建好了集群,见在CentOS上安装Hadoop 2.x 集群。通常,我们会把这个集群共享给多个用户,而不是让大家都登录为hadoop,这样做有几个好处:
一个用户不能修改另一个用户的的文件
在hadoop web管理页面,可以很方便的看到不同的用户的job
现在集群中有一台机器,上面有一个用户名为 hbase 的用户,他想要使用hadoop集群,怎么配置呢?
1. 安装hadoop客户端
1.1 下载,解压
下载跟hadoop集群一样的hadoop软件包,并解压,
1.2 拷贝Hadoop集群的配置文件
将Hadoop集群的配置文件全部拷贝到客户端,相当与把集群的信息告诉客户端。
修改conf/mapred-site.xml中的mapreduce.cluster.local.dir,改为本机上的某个目录,确保这个目录存在且有写权限。因为这个目录是本地目录,每台机器都可以不同。例如我的是:
确保这个目录存在,
还有另一种方法,由于mapreduce.cluster.local.dir默认值是${hadoop.tmp.dir}/mapred/local,也可以通过修改hadoop.tmp.dir达到目的,在core-site.xml中,确保${hadoop.tmp.dir}/mapred/local存在且有写权限。
2. 在master上配置权限
以下操作均在hadoop集群的 namenode 这台机器上进行,且登录为hadoop,因为hadoop这个用户是整个hadoop集群权限最高的用户(但对于Linux系统本身,这个用户其实没有sudo权限)。
Hadoop关于用户权限方面,有很多高级的配置,这里我们简单的利用HDFS本身的文件权限检查机制,来配置多用户。
HDFS本身没有提供用户名、用户组的创建,在客户端调用hadoop 的文件操作命令时,hadoop 识别出执行命令所在进程的linux系统的用户名和用户组,然后使用这个用户名和组来检查文件权限。 用户名=linux命令中的whoami,而组名等于groups。
启动hadoop hdfs系统的用户即为超级用户(在这里就是名为hadoop的这个用户),可以进行任意的操作。
在客户端机器上,用groups命令看一下hbase所在的组,假设客户端的名字为hbase,组也为hbase,具体情况具体定
说明hbase这个用户所在的组为hbase。
2.1 为客户端用户创建home文件夹
$ hdfs dfs -mkdir /user/hbase
$ hdfs dfs -chown hbase /user/hbase
$ hdfs dfs -chgrp hbase /user/hbase
2.2 设置HDFS上的/tmp目录的权限
客户端提交job的时候,需要往/tmp里写入文件,因此最好把/tmp设置为所有用户都有可读、可写和可执行的权限。
$ hdfs dfs -chmod -R 777 /tmp
2.3 设置mapreduce.jobtracker.staging.root.dir
客户端向集群提交任务时,需要把该job需要的文件打包,拷贝到HDFS上。在拷贝之前,得先确定这些资源文件存放在HDFS的什么地方。JobTracker设置有一个工作目录(Staging area, 也称数据中转站),用来存储与每个job相关的数据。这个目录的前缀由mapreduce.jobtracker.staging.root.dir 参数来指定,默认是${hadoop.tmp.dir}/mapred/staging,每个client user可以提交多个job,在这个目录后就得附加user name的信息。所以这个工作目录(Staging area)默认是${hadoop.tmp.dir}/mapred/staging/denny/.staging/。
一般把前缀设置为/user,这是官方推荐的,见 mapred-default.xml 里的mapreduce.jobtracker.staging.root.dir处:
The root of the staging area for users’ job files In practice, this should be the directory where users’ home directories are located (usually /user)
#以hadoop用户登录jobtracker机器
2.4 重启hadoop集群
将配置文件scp到所有机器,然后重启集群,
3. 测试一下
回到客户端机器。
将输入数据拷贝到分布式文件系统中:
运行 Hadoop 自带的例子:
查看输出文件:
如果能看到结果,说明这个例子运行成功。
4 (可选)将bin目录加入PATH
这样就不用每次都cd到Hadoop目录,执行命令了。
在 ~/.bashrc中添加如下4行:
source使之立刻生效,
阅读全文
0 0
- Hadoop集群共享给多用户
- Hadoop集群多用户部署
- Hadoop集群上搭建多用户模式hive
- hadoop集群搭建多用户模式的hive
- 多用户共享VitualBox虚拟机
- SAMBA多用户共享
- hadoop如何创建多用户
- Hadoop多用户配置
- 用Openfiler 给Oracle RAC集群配置共享存储
- 设置Windows2008远程桌面多用户共享
- hadoop+hive多用户访问支持
- hadoop streaming多用户权限问题
- 【Hadoop】集群之外的机器如何连接到集群并与HDFS交互,提交作业给Hadoop集群
- Hadoop多用户的配置(Hadoop 1.x)
- Hadoop多用户的配置(Hadoop 2.x)
- Hadoop集群
- hadoop集群
- hadoop 集群
- Keyboard 软键盘阻挡输入框爬坑指南
- php opencart config
- Spark之 DataFrame
- 问题及解决:uWSGI listen queue 队列溢出
- sqlserver存储过程学习(通俗易懂)
- Hadoop集群共享给多用户
- Redis异常分析-输出缓冲区过大
- R语言计算频数和频率
- 【kubernetes/k8s源码分析】kubelet源码分析-statusManager与probeManager
- Apache Common-pool2对象池分析和应用
- Android 加载 自己的H5,跳到内部浏览器
- python实现杨辉三角
- zigbee单播、组播、广播
- React Native报错unddefined is not an object(evaluating ‘_reactnative.propTypes’)解决办法