prefácio
Azkaban completar um caso de utilização complexa, como a estrutura da FIG.
tarefa Descrição
- job1: quadro az usando a participação em massa, o trabalho de impressão está pronto para começar!
- job2: dependente job1, criar um nome do diretório é inputwc localmente!
- job3: dependente job2, use os resultados da consulta colmeia e saída para o arquivo especificado no diretório especificado
- job4: dependente job2, programa java costume chamada gera um nome de arquivo e conteúdo profissional é separado por abas!
- job5: dependente job3, job4, os resultados de saída do programa java é anexado ao ramo no resultado da consulta!
- job6: dependente job5, gerado inputwc enviados para os hdfs diretório!
- job7: chamada wordcount para contar o número de profissionais aparecer!
resultados esperados
código de exibição
código java
package com.zhengkw.azkaban;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
/**
* @ClassName:AzkabanTest
* @author: zhengkw
* @description: 输出用制表符隔开的字符串
* @date: 20/03/19下午 3:45
* @version:1.0
* @since: jdk 1.8
*/
public class AzkabanTest {
public static void main(String[] args) {
FileOutputStream fos = null;
try {
fos = new FileOutputStream("/home/zhengkw/inputwc/hi.txt");
String words = "teachter" + "\t" + "doctor" + "\t" + "driver"
+ "\t" + "doctor" + "\t" + "driver" + "\t" + "doctor" + "\t" + "driver";
fos.write(words.getBytes());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fos != null) {
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
códigos de trabalho
Jobl
#first.job
type=command
command=echo ${param}
job2
type=command
dependencies=job1
command= mkdir -p /home/zhengkw/inputwc
job3
type=command
dependencies=job1,job2
command=bash -c "hive -e 'select job from zhengkw.emp' > /home/zhengkw/inputwc/emp.txt"
Job4
type=javaprocess
denpendencies=job2
java.class=com.zhengkw.azkaban.AzkabanTest
classpath=/home/zhengkw/jar/*
java.class Para usar o nome completo da classe! ! !
job5
type=command
dependencies=job4,job3
command= bash -c 'cat /home/zhengkw/inputwc/hi.txt >> /home/zhengkw/inputwc/emp.txt'
job6
type=command
dependencies=job5
command= bash -c 'hadoop fs -put /home/zhengkw/inputwc /'
job7
type=command
dependencies=job6
command= bash -c 'hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /inputwc /azout'
precauções
- Depois java programa empacotado para o local especificado, trabalho que deve ser especificado! parâmetro classpath é o caminho atrás do frasco! ! parâmetro java.class deve ser o nome completo da classe! ! !
- Tipo de arquivo de trabalho é *. *! E no final deve ser .job !!!
- Selecione o formato do pacote zip, outros formatos não são suportados! Mas o formato rar sufixo ainda não é reconhecido como um zip!
Outras características de exibição
tarefas regulares
-
Selecione o Eastern District 8
-
Primeiro, selecione a data e hora!
-
Representante requerem verificação regular a caixa de seleção realizado, selectList escolher quais as unidades, a caixa de entrada dentro da entrada digital!
-
O ponto chave! ! ! Se você executar tarefas regulares precisa passar parâmetros, por favor, re-introduzir as opções de programação regulares após parâmetros de entrada, opções, cronograma, no canto inferior direito!
Você deve primeiro entrar parâmetros! ! ! Você deve primeiro entrar parâmetros! ! ! Você deve primeiro entrar parâmetros! ! !
alarme e-mail!
BATIDA!
Existem essas opções no momento de tarefas onde você pode definir um trabalho para ser bem sucedido ou completou mais de HH: MM este limiar, foram mortos no trabalho ou enviar um alerta de e-mail!
alarme agenda e-mail normal
lista de empregos
Você pode consultar cada desempenho no trabalho!
Escolha da história para o fluxo de trabalho dentro!
resumo
- Nota citações aninhadas quando usando bash -c! aspas simples apenas a camada exterior entre aspas caso contrário ele iria resolver o problema!
- Quando o upload falhou! Há definitivamente código de trabalho é bug!
pit deu um passo!
Embora seja ZZ, mas ainda há a necessidade postou, afinal ele está olhando por um longo tempo apenas para encontrar o errado!
- estouro de pilha!
Se você carregar um estouro de pilha ocorre quando, em geral, apenas uma possibilidade, é o surgimento de chamadas recursivas, chamada recursiva ocorre ao analisar único possível, e que é uma dependência! Quando eu escrevo job5 aparecem job5 confiar job5! Verifique se há um longo tempo apenas para descobrir! !
- trabalho deve ser baseada em .job final de arquivo. Digite *. * !!!
- trabalho devem ser embalados em formato zip!
- java tipo personalizado deve ser javaprocess , java.class deve ser o nome completo da classe , classpath deve ser um caminho absoluto!
- máquinas de Azkaban sendo executados em cima de onde o serviço deve ser configurado ambiente HADOOP_HOME ambiente HIVE, a fim de usar uma forma abreviada de chamar o autor, você pode usar o nome completo da classe para fazer a chamada! ! ! !
- O script deve ser executado no mesmo nível conf executor diretório ou web-servidor, caso contrário não iria encontrar os arquivos de configuração global de erro no azkaban arranque! !
- As aspas simples não podem ser aninhados, a camada externa deve ser alterado para '' aspas duplas para ser causado!