2017-06-12 19 views
0

hdfsからのデータを読み込んで、それをverticaにプッシュする単純なマップのみのハーフストリームストリーミングジョブを作成しようとしています。Oozie Hadoop Streaming

<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> 

はOozieのユーザーとそれを実行している:私は

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 

ワークフロー以下のようにいくつかのシェルスクリプトを書いた

下になる例外:

org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=yarn, access=WRITE, inode="/user/yarn/.staging":hdfs:hdfs:drwxr-xr-x 
     at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:319) 

ソリューション:

ワークフローに追加します。

HADOOP_USER_NAME = $ {WF:ユーザー()}

答えて

1

Workflow.xmlで

HADOOP_USER_NAMEの下に追加することによって、これを修正すること= $ {wf:user()}

0
Permission denied: user=yarn, access=WRITE, inode="/user/yarn/.staging":hdfs:hdfs:drwxr-xr-x 

がディレクトリ/user/yarn/.stagingがユーザーによって所有されていることを意味しますhdfs

ディレクトリにはアクセス許可rwxr-xr-xがあります。つまり、ユーザhdfsのみが書き込み権を持っています。

ワークフローはユーザyarnを使用して実行されているため、そのディレクトリに書き込むことはできません。

することはできいずれかの変更権限:

hdfs dfs -chmod -R 777 /user/yarn/ 

それともようなものでyarnに所有権です与える:

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

私は糸ではなく職人の仕事をしています。 –

+0

ハープトップストリーミングジョブを実行しています – philantrovert

+0

HADOOP_USER_NAME = $ {wf:user()}を追加することでこれを修正することができます –

関連する問題