Oozie Hadoop流媒体

Oozie Hadoop流媒体,hadoop,oozie,hadoop-streaming,Hadoop,Oozie,Hadoop Streaming,我正在尝试编写一个简单的map-only hadoop流式作业,从hdfs读取数据并将其推送到vertica 我已经编写了以下几个shell脚本 load.sh hadoop jar hadoop-streaming-2.7.3.2.5.3.0-37.jar -input $INPUT_DIR -mapper /user/oozie/adhoc_data_load/scripts/export.sh -output $OUTPUT_DIR export.sh ./vsql -c "cop

我正在尝试编写一个简单的map-only hadoop流式作业,从hdfs读取数据并将其推送到vertica

我已经编写了以下几个shell脚本

load.sh

  hadoop jar hadoop-streaming-2.7.3.2.5.3.0-37.jar -input $INPUT_DIR -mapper /user/oozie/adhoc_data_load/scripts/export.sh -output $OUTPUT_DIR
export.sh

 ./vsql -c "copy $TABLE from stdin delimiter E'\t' direct null '\\N';" -U $DBUSER -w $DBPWD -h $DBHOST -p $DBPORT
工作流程:

<action name="loadToVertica">
    <shell xmlns="uri:oozie:shell-action:0.1">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <exec>loadVertica.sh</exec>
            <argument>${STREAMING_JAR_PATH}</argument>
            <argument>${nameNode}/user/oozie/optus_adhoc_data/${exportDataDate}</argument>
            <argument>${TABLE_NAME_VERTICA}</argument>
            <argument>${dbHost}</argument>
            <argument>${dbName}</argument>
            <argument>${dbPassword}</argument>
            <argument>${dbPort}</argument>
            <argument>${nameNode}/user/oozie/optus_adhoc_data/output/${exportDataDate}</argument>
            <argument>vsql,export.sh</argument>
            <file>${nameNode}/user/oozie/adhoc_data_load/scripts/loadVertica.sh#loadVertica.sh</file>
            <file>${wfsBasePath}/libs/${STREAMING_JAR_PATH}#${STREAMING_JAR_PATH}</file>
            <file>${wfsBasePath}/config/vsql#vsql</file>
            <file>${wfsBasePath}/scripts/export.sh#export.sh</file>
            <capture-output/>
        </shell>
        <ok to="end"/>
       <error to="end"/>
    </action>
解决方案:

加载项工作流:

HADOOP_USER_NAME=${wf:USER}

Permission denied: user=yarn, access=WRITE, inode="/user/yarn/.staging":hdfs:hdfs:drwxr-xr-x
表示目录/user/warn/.staging由用户hdfs拥有

该目录具有权限rwxr-xr-x,这意味着只有用户hdfs具有写入权限

由于您的工作流正在使用user Thread执行,因此无法写入该目录

您可以更改权限:

hdfs dfs -chmod -R 777 /user/yarn/
或者将其所有权授予纱线,比如:

sudo -u hdfs hdfs dfs -chown yarn:yarn /user/yarn

可以通过在Workflow.xml中添加以下内容来解决此问题


HADOOP_USER_NAME=${wf:USER}

我正在运行作业oozie USER not Thread。我不确定它是如何尝试访问您正在运行的hadoop流作业,可以通过添加hadoop_USER_NAME=${wf:USER}来修复此问题
Permission denied: user=yarn, access=WRITE, inode="/user/yarn/.staging":hdfs:hdfs:drwxr-xr-x