/ / Błąd: E0708: E0708: Nieprawidłowe przejście - hadoop, oozie, hadoop2

Błąd: E0708: E0708: Nieprawidłowe przejście - hadoop, oozie, hadoop2

Korzystanie z tego seminarium utworzyłem przepływ pracy dla skryptu gałęzi, ale daje mi błąd, gdy uruchamiam poniżej polecenia:

 oozie job -oozie http://xxx.xx.xx.xx:11000/oozie -config  /home/ec2-user/ankit/oozie_job1/job.properties -submit

Błąd, który otrzymuję to:

Błąd: E0708: E0708: Nieprawidłowe przejście, przejście w węźle [Oozie_test] [Tester]

Mój kod przepływu pracy jest poniżej:

<workflow-app name="Tester" xmlns="uri:oozie:workflow:0.1">
<start to="Oozie_test"/>
<action name="Oozie_test">
<hive xmlns="uri:oozie:hive-action:0.2">
<job-tracker>xxx.xx.xx.xx:8021</job-tracker>
<name-node>xxx.xx.11.xx:8020</name-node>
<configuration>
<property>
<name>oozie.hive.defaults</name>
<value>/home/ec2-user/ankit/oozie_job1/hive-default.xml</value>
</property>
</configuration>
<script>hive_job1.hql</script>
</hive>
<ok to="Tester"/>
<error to="fail"/>
</action>
<end name="end"/>
</workflow-app>

Ponieważ jest to mój pierwszy przepływ pracy, nie jestem w stanie dotrzeć tam, gdzie dokładnie idę źle lub co przeoczyłem.

Próbowałem szukać rozwiązania w Internecie, ale nie mogłem znaleźć szczęścia.

Proszę dać mi znać, jak rozwiązać ten błąd i jakie inne informacje są wymagane z mojej strony.

Odpowiedzi:

5 dla odpowiedzi № 1

W przypadku pomyślnego wykonania akcji (ula) przejście (ok) jest do węzła Tester, ale nie masz żadnego węzła o nazwie Tester. To jest błąd.

Najlepiej, jeśli masz tylko jedną akcję w przepływie pracy, a następnie udane wykonanie akcji powinno przejść do end, które już zdefiniowałeś w swoim obiegu pracy, ale go nie wykorzystałeś. W przypadku awarii chcesz przejść do kill węzeł, którego brakuje w przepływie pracy. Musisz dodać kill Węzeł i tranzyt do niego działają, w przypadku awarii / błędu.

@charantej zapewnił prawidłowy przepływ pracy.


1 dla odpowiedzi nr 2

jako @ YoungHobbit wyjaśnił

W przypadku pomyślnego wykonania akcji (ula) przejście (ok) do węzła Tester, ale nie masz żadnego węzła o nazwie Tester. To jest błąd.

Idealnie, jeśli masz tylko jedną akcję w swojejprzepływ pracy, a następnie pomyślne wykonanie akcji powinno kończyć się, co już zdefiniowałeś w swoim przepływie pracy, ale go nie użyłeś. W przypadku niepowodzenia chcesz przejść do zabicia węzła, którego brakuje w twoim obiegu pracy. Musisz dodać węzeł zabijania i przetransportować do niego akcję, na wypadek awarii / błędu. Spróbuj tego:

<workflow-app name="Tester" xmlns="uri:oozie:workflow:0.1">
<start to="Oozie_test"/>
<action name="Oozie_test">
<hive xmlns="uri:oozie:hive-action:0.2">
<job-tracker>xxx.xx.xx.xx:8021</job-tracker>
<name-node>xxx.xx.11.xx:8020</name-node>
<configuration>
<property>
<name>oozie.hive.defaults</name>
<value>/home/ec2-user/ankit/oozie_job1/hive-default.xml</value>
</property>
</configuration>
<script>hive_job1.hql</script>
</hive>
<ok to="end"/>
<error to="kill"/>
</action>
<kill name="kill">
<message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end" />
</workflow-app>

1 dla odpowiedzi nr 3

W ok przejście, odwołujesz się do węzła "Tester", który nie istnieje w obiegu pracy.

<ok to="Tester"/>

Gdy dowolne działanie zakończy się pomyślnie, szuka węzła podanego w dobrze przejście.

Zdefiniuj nową akcję o nazwie "Próbnik" lub daj <ok to="end"/> to trafi do end węzeł.


0 dla odpowiedzi nr 4

Potwierdź, czy skopiowałeś plik workflow.xml do pliku hdfs. Nie musisz kopiować pliku job.properties do pliku hdfs, ale musisz skopiować wszystkie pozostałe pliki i biblioteki do pliku hdfs