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

wnavrhmk  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(405)

我已经将cloudera5.7安装程序与activedirectory集成,使用kerberos,如广告集成所示。但问题是,我必须在hdfs@/user中为每个用户创建一个用户目录,以向用户提供访问hadoop的权限。当用户通过边缘节点登录时,他们有没有任何方法可以自动在hdfs中创建用户目录?由于在集群上创建和删除7000+员工的用户目录非常困难。

xzlaal3s

xzlaal3s1#

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

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
idfiyjo8

idfiyjo82#

你可以创造 /etc/profile.d/hadoop.sh 编写脚本以自动化流程。在创建hadoop shell时(即执行hadoop命令),将始终调用此脚本。
下面是一个例子。
第一步。将下面的scriptlet添加到/etc/profile.d/hadoop.sh
[root@mybox tmp]#tail-n5/etc/profile.d/hadoop.sh

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

第二步。创建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

笔记:
设置并检查“from\u hadoop\u profile”是为了避免递归无限调用/执行“fromhadoopprof.sh”
/etc/profile.d/hadoop.sh也将在生成普通shell时调用(例如,当用户登录到计算机时)
您可能需要添加一些对manager用户权限的攻击,例如在我的群集中,登录的用户没有在hadoop/user/目录中创建目录的权限,因此我必须用sudo执行'hadoop fs-mkdir$hdir'

相关问题