创建普通用户登录并使用Hadoop集群遇到的若干问题

原创 2016年08月31日 15:08:13

创建普通用户登录并使用Hadoop集群遇到的若干问题

在Hadoop与Spark集群(包括Hive、Hbase)搭建好以后,需要创建一批普通用户供其他人使用,在创建普通用户与普通用户登录后运行某个模块(如Hive),以及在Hadoop集群上执行命令时遇到若干问题,在这里予以说明,便于自己记忆,也希望对遇到同样问题的朋友有所帮助。

说明:在安装好Centos系统后,用root创建一般用户hadoop,在hadoop用户下搭建Hadoop集群,故很多文件的路径均为/home/hadoop…下面介绍一般步骤:

1.创建一批普通用户,如test01、test02…并为其设置密码,命令如下:

useradd test01      创建用户
passwd  test01      为test01设置密码

2.把该批普通用户加入hadoop用户组

gpasswd -a test01 hadoop    把用户test01加入hadoop用户组

注:在文件/etc/passwd中记录着系统所有的用户;在文件/etc/shadow中记录着所有用户的密码,并一一对应;在文件/etc/group中记录着所有的用户组。

3.由于在/home/hadoop/.bashrc中配置了相关的环境变量,在启动spark-shell、hive、hbase时不需要加入相关路径,为了便于普通用户test01等的操作,在test01等用户的.bashrc文件中配置相关环境变量,并用source ~./bashrc使其生效。

4.按照上述步骤设置后,可以正常启动spark-shell与hbase shell,但启动hive时出现报错:

Permission denied:user=test01,access=EXECUTE,inode="/tmp/hive":hadoop:supergroup:drwxrwx---

出现这个问题的原因是在hdfs上目录/tmp/hive的所有者为hadoop,所属用户组为supergroup,而相对于该目录用户test01属于其他用户,不具有任何权限,这里报错是不具有EXECUTE权限,要想解决这个问题,需要修改/tmp/hive的权限,命令如下:

hdfs dfs -chmod 777 /tmp    修改/tmp的权限

再次启动hive便不会再报该错误。

5.在hadoop用户上可以正常运行如下程序,但是在test01用户登录运行时抛出异常

hadoop jar hadoop jar /home/hadoop/hadoop2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /test/input /test/output

注:这里运行的是wordcount示例,/test/input为数据所在路径;/test/output为输出结果目录,运行时自动创建。
在test01用户上执行该程序时抛出如下异常:
这里写图片描述
出现这个异常的原因是:

原来mapreduce.jobhistory.address 和mapreduce.jobhistory.webapp.addres 这两个address的地址使用的是CDH默认的配置值,这里需要改成hostname,这样可能就是原来的位置不对造成的。
这里参考了(http://blog.csdn.net/wjcquking/article/details/41242625)

发现需要在hadoop的配置文件mapred.site.xml中添加如下内容:

</property>  
<property>  
   <name>mapreduce.jobhistory.address</name>  
   <value>master:10020</value>        #master为hostname  
</property>  
<property>  
   <name>mapreduce.jobhistory.webapp.address</name>  
   <value>master:19888</value>  
</property>  
<property>  
   <name>yarn.app.mapreduce.am.staging-dir</name>  
   <value>/user</value>               #/user为hdfs上的一个目录
</property> 

在mapred.site.xml中添加如下内容后,把该文件发送到集群其余的机器;在hdfs上创建/user并修改其权限,使得用户test01对其有写权限。由于程序运行时要在hdfs上自动创建/test/output结果目录,则用户test01要对hdfs有写权限,这里为了便于操作,修改hdfs权限为777.
至此,wordcount示例可以正常运行。

PS:这里创建了一批用户可以供其他人使用,但这里问题考虑的并不充分,每一个用户权限的问题,如把hdfs的权限设置为777,则任何人都可以操作hdfs,安全性没有保障,后续会继续关注这个问题,也希望广大朋友给出宝贵建议。虽说解决了一些问题,但毕竟是初学,有些地方不是很准确,有不妥的地方,望指出,谢谢!

hadoop 创建用户及hdfs权限,hdfs操作等常用shell命令

sudo addgroup hadoop#添加一个hadoop组 sudo usermod -a -G hadoop larry#将当前用户加入到hadoop组 sudo gedit etc/su...
  • larrylgq
  • larrylgq
  • 2012年05月18日 17:16
  • 29019

Hadoop多用户配置

0.Hadoop多用户配置的背景。 Hadoop多用户配置的目的就是多个hadoop用户可以共同使用HDFS,但是只能操作属于自己的空间,不能跨用户空间操作(当然/tmp是属...
  • BlockheadLS
  • BlockheadLS
  • 2016年10月14日 15:05
  • 1579

在Ubuntu下创建hadoop组和hadoop用户

一、在Ubuntu下创建hadoop组和hadoop用户     增加hadoop用户组,同时在该组里增加hadoop用户,后续在涉及到hadoop操作时,我们使用该用户。   1、创建hado...
  • hanghangaidoudou
  • hanghangaidoudou
  • 2015年10月07日 15:57
  • 4948

linux(ubuntu) 创建一个名为hadoop的用户和用户组

写在前面:无论怎么确认,还是泪奔了,同一个账号以前的东西消失了,虽然不多,如同丢失了心爱的东西。 步骤: 1. 创建名为hadoop用户组 sudo addgroup hadoop 2. 创建...
  • u011244794
  • u011244794
  • 2016年02月25日 22:56
  • 2145

修改hdfs上的文件所属用户、所属组等读写执行控制权限

HDFS支持权限控制,但支持较弱。HDFS的设计是基于POSIX模型的,支持按用户、用户组、其他用户的读写执行控制权限。在linux命令行下,可以使用下面的命令修改文件的权限、文件所有者,文件所属组:...
  • xianjie0318
  • xianjie0318
  • 2017年07月20日 09:00
  • 4806

HDFS用户权限管理

客户端需要向HDFS写入文件,这时往往会遇到权限问题。 解决办法:[hadoop@DEV21 cron]$ hdfs dfs -chown hadoop:hadoop /result#先将目录改为属...
  • Dr_Guo
  • Dr_Guo
  • 2016年06月27日 14:35
  • 2986

hadoop 创建用户及hdfs权限,hdfs操作等常用shell命令

原文:http://blog.csdn.net/larrylgq/article/details/7580488 sudo addgroup hadoop#添加一个hadoop组 sudo userm...
  • swuteresa
  • swuteresa
  • 2013年10月31日 10:07
  • 16947

新建hadoop用户以及用户组

搭建hadoop集群环境不仅master和slaves安装的hadoop路径要完全一样,也要求用户和组也要完全一致。因此第一步就是新建用户以及用户组。对于新手来言,新建用户用户组,并赋予适当的权限无疑...
  • ws379374000
  • ws379374000
  • 2017年12月07日 16:13
  • 124

大数据之Hadoop平台(五)Hadoop多用户管理

前言 最近有一些需求,就是需要在hadoop集群中实现多用户管理,因此在网上搜了很多的资料。其中有一种方法感觉还是比较可行,链接:http://cn.soulmachine.me/blog/2014...
  • PicassoLoveCoding
  • PicassoLoveCoding
  • 2014年10月20日 14:43
  • 1824

hadoop如何创建多用户

HDFS本身没有提供用户名、用户组的创建,在客户端调用hadoop 的文件操作命令时,hadoop 识别出执行命令所在进程的linux系统的用户名和用户组,然后使用这个用户名和组来检查文件权限。 用户...
  • a999wt
  • a999wt
  • 2013年03月25日 20:27
  • 6250
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:创建普通用户登录并使用Hadoop集群遇到的若干问题
举报原因:
原因补充:

(最多只允许输入30个字)