我需要在hdfs中自动创建AD用户目录

时间:2016-06-06 06:35:02

标签: hadoop cloudera

我已经将CLoudera 5.7安装程序与Active目录集成在一起,使用AD integration上显示的kerberos。但问题是我必须在HDFS @ / user中为每个用户创建一个用户目录,以便为用户提供访问hadoop的权限。 一旦用户登录边缘节点,他们是否会以任何方式自动在hdfs中创建用户目录?由于很难在群集上创建和删除7000+员工的用户目录。

2 个答案:

答案 0 :(得分:0)

您可以创建/etc/profile.d/hadoop.sh脚本来自动化流程。创建hadoop shell时将始终调用此脚本(即执行hadoop命令)。

以下是示例。
第1步。将以下scriptlet添加到/etc/profile.d/hadoop.sh

[root @ mybox tmp]#tail -n 5 /etc/profile.d/hadoop.sh

if [[ "$FROM_HADOOP_PROFILE" != "1" ]] 
then
    /bin/bash -x /etc/profile.d/FromHadoopProf.sh
fi


第2步。创建FromHadoopProf.sh脚本以为用户

创建目录
[root@mybox tmp]# cat  /etc/profile.d/FromHadoopProf.sh
#!/bin/bash

export FROM_HADOOP_PROFILE=1
uname=`whoami`
hdir=""

if [[ "$uname" == "root" ]]
then
        hdir="/root"
else
        hdir="/user/$uname"
fi

hadoop fs -ls -d $hdir
lsout=`echo $?`
echo $lsout
if [[ "$lsout" != "0" ]]
then
      echo file does not exists
      sudo -u hdfs hadoop fs -mkdir $hdir
fi  


注意:

  1. 设置并检查`FROM_HADOOP_PROFILE`是为了避免递归无限调用/执行`FromHadoopProf.sh`
  2. `/ etc / profile.d / hadoop.sh`也将在生成普通shell时调用(例如,当用户登录到计算机时)
  3. 您可能需要为管理员用户权限添加一些黑客,例如在我的集群中,登录用户没有权限在hadoop` / user /`目录中创建目录,因此我不得不用sudo执行`hadoop fs -mkdir $ hdir`

答案 1 :(得分:0)

我编写了以下脚本,用于在新AD用户的hdfs中创建自动目录。

klist >/dev/null 2>&1
if [ $? == 0 ]
then
hadoop fs -test -d /user/$USER >/dev/null 2>&1
if [ $? != 0 ]
then
noOutput=`echo "password" | kinit hdfs`
hdfs dfs -mkdir /user/$USER
hdfs dfs -chmod -R 700 /user/$USER
hdfs dfs -chown -R $USER:$USER /user/$USER
kdestroy
echo "$(tput setaf 1)enter password for creating home directory on hdfs. This is one time activity$(tput sgr 0)"
kinit $USER
fi
fi