問題タブ [oozie-coordinator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hadoop - パラメータを coordinator.xml から workflow.xml oozie に渡します
コーディネーターから oozie のワークフローに日付を取得する必要があるという要件があります。
そのために、サンプルコーディネーターとワークフローを次のように開発しました。しかし、コーディネーター ジョブを起動した後、すべてのワークフロー ジョブがエラー コード E0701 で失敗します。xml 解析エラーを意味します。私はどこが間違っているのですか?私は問題を見つけることができませんでしたか?助けてください。
ワークフロー.xml
コーディネーター.xml
ジョブのプロパティ
使用するコマンド
hadoop - Oozie ワークフロー EL でワークフロー ID を取得できません
私は oozie ワークフロー EL でワークフロー ID を取得しようとしています。
${wf:id()}
実行時に、oozie は同じ関数にマップされていないことを訴えます。同じことが起こっていますwf:username()
しかし、私は得ることができますwf:actionData
。
サンプル ワークフローで oozie-3.3.2-cdh4.5.0 を次のように使用します。
ありがとう。
oozie - Oozie コーディネーター ジョブを強制終了または一時停止できません
キルまたはサスペンドしようとすると、ユーザー「runner」の下で oozie コーディネーター ジョブを送信しました。次のエラー メッセージが表示されます。
Oozie サーバーのログから、次のメッセージが表示されます。
コマンドを発行したユーザーでさえ、正しくログに記録されないことがあります。
CentOS 6.3 と Oozie Oozie クライアント ビルド バージョン: 4.0.0.2.0.6.0-101、Oozie サーバー ビルド バージョン: 4.0.0.2.0.6.0-101 を使用しています。
サーバーを実行しているユーザー oozie の下で停止することさえできません。ジョブを送信したユーザーの下では、サスペンド、キルなどを実行できません。フローまたは情報を渡すサブミット実行のみを実行できます。
ヒント/トリックはありますか、それとも明らかな設定を間違えていますか?
更新:私が使用しているインスタンスのセキュリティ設定。
私の conf/adminusers.txt には以下が含まれています:
Hadoop core-site.xml
runner は users グループのメンバーです。Oozie のドキュメントによると、Oozie には基本的な承認モデルがあります。
- ユーザーにはすべてのジョブへの読み取りアクセス権があります
- ユーザーは自分のジョブへの書き込みアクセス権を持っています
- ユーザーは、アクセス制御リスト (ユーザーとグループのリスト) に基づいてジョブへの書き込みアクセス権を持っています
- ユーザーには、管理操作管理者への読み取りアクセス権があります
- ユーザーにはすべてのジョブへの書き込みアクセス権があります 管理者ユーザーには管理操作への書き込みアクセス権があります
設定で何かを見落としましたか?次のようなものを指定/構成する必要がありますか?
hadoop - エラー: E0902: 例外が発生しました: [ユーザー: ルートはルートの偽装を許可されていません
http://www.rohitmenon.com/index.php/apache-oozie-installation/に記載されている手順に従おうとしてい ます 注: Hadoop の Cloudera ディストリビューションは使用していません
上記のリンクはhttp://oozie.apache.org/docs/4.0.1/DG_QuickStart.htmlに似て いますが、より説明的なように思えますが、ルートユーザーとして以下のコマンドを実行しているときに例外が発生します./bin/ oozie-setup.sh sharelib create -fs
注: dfshealth.jsp に 2 つのライブ ノードが表示されています。そして、以下のようにプロパティを使用して、3 つすべて (namenode を含む) の core-site.xml を更新しました。
私はこれが私が間違いを犯している点であることを理解しています
注: E0902 の取得: 例外が発生しました: [ユーザー: oozie は oozie の偽装を許可されていません] このリンクもたどりましたが、問題を解決できませんでした
スーパーユーザー: hadoop の Unauthorized connection として例外が発生します。
hadoop - Oozie ワークフロー、mapreduce アクションを構成して、一連のファイルに対してレデューサー/コンバイナーのみを実行する
レデューサー/コンバイナーのみが入力ファイルで実行されるように、既存の mapreduce jar (マッパー、レデューサー、場合によってはコンバイナーも含む) ファイルの oozie ワークフローで mapreduce アクションを構成したいと考えています。
hadoop - Pig でパラメーターを変換するにはどうすればよいですか?
Pig でデータセットを処理する必要があります。このデータセットは、1 日 1 回深夜に利用できます。そのため、スケジュールを管理し、毎日 00:00 にワークフローを生成する Oozie コーディネーターがいます。ファイル名は URI スキームに従います
${HOUR} は常に「00」です。
データセットの各エントリには UNIX タイムスタンプが含まれており、タイムスタンプが午後 11 時 45 分 (23 時 45 分) より前のエントリを除外したいと考えています。過去のデータセットで実行する必要があるため、現在処理されている日に従って、しきい値を定義するタイムスタンプの値を動的に設定する必要があります。たとえば、2013 年 12 月 12 日のデータセットを処理するには、しきい値 1418337900 が必要です。このため、しきい値の設定はコーディネーターが行う必要があります。
私の知る限りでは、フォーマットされた日付を EL の UNIX タイムスタンプに変換することはできません。私は非常にハックな解決策を思いつきました: コーディネーターは、Pig スクリプトのパラメーター化されたインスタンスを開始するそれぞれのワークフローにしきい値の日付と時刻を渡します。
coordinator.xml の抜粋:
workflow.xml の抜粋:
Pig スクリプトは、このフォーマットされた日時を UNIX タイムスタンプに変換する必要があります。そのため、UDF を作成しました。
Pig スクリプトでは、マクロが作成され、コーディネーター/ワークフローの入力で UDF が初期化されます。次に、タイムスタンプをフィルタリングできます。
私が抱えている問題は、Pig で入力パラメーターを変換し、それをある種の定数として再度使用できるかどうかという、より一般的な質問につながります。この問題を解決するためのより良い方法はありますか、それとも私のアプローチは不必要に複雑ですか?
編集:TL;DR
さらに検索した後、同じ問題を抱えている人を見つけました: http://grokbase.com/t/pig/user/125gszzxnx/survey-where-are-all-the-udfs-and-macros
Piggybank の UDF を推奨してくれた Gaurav に感謝します。宣言とシェルスクリプトを使用しないと、パフォーマンスの高いソリューションはないようです。
hadoop - コーディネーターを介してジョブを送信するときに、oozie が偽装するのはどのユーザーですか
ユーザーのなりすまし/伝播は、oozie でどのように機能しますか?