Escreva na frente
Este artigo usa uma pequena instância do HDFS para determinar se existe um arquivo em um ambiente de cluster distribuído do Hadoop 2.7.7 para apresentar como usar a linha de comando para compilar e empacotar programas HDFS na versão do Hadoop 2.x.
Adicione informações do caminho de classe do Hadoop à variável CLASSPATH
Na versão do Hadoop 2.x, os jars não estão mais concentrados em um hadoop-core * .jar, mas são divididos em vários jars. Por exemplo, o uso do Hadoop 2.7.7 para executar instâncias do WordCount requer pelo menos os três seguintes jars:
- $ HADOOP_HOME / share / hadoop / common / hadoop-common-2.7.7.jar
- $ HADOOP_HOME / share / hadoop / mapreduce / hadoop-mapreduce-client-core-2.7.7.jar
- $ HADOOP_HOME / share / hadoop / common / lib / commons-cli-1.2.jar
Na verdade, por ordem hadoop classpath
, podemos obter todas as informações classpath necessária para executar o programa Hadoop.
Adicionamos as informações do caminho de classe do Hadoop à variável CLASSPATH e adicionamos as seguintes linhas ao ~ / .bashrc:
export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
Não se esqueça de executar source ~/.bashrc
as variáveis para efectivarem.
Compilar, empacotar e executar programas HDFS
Escreva o programa HDFS, aqui está uma pequena castanha para determinar se o arquivo especificado existe ou não
vi FileExist.java
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class FileExist {
public static void main(String[] args){
try{
String fileName = "test";
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://Master:9000");
conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
FileSystem fs = FileSystem.get(conf);
if(fs.exists(new Path(fileName))){
System.out.println("文件存在");
}else{
System.out.println("文件不存在");
}
}catch (Exception e){
e.printStackTrace();
}
}
}
javac
Comando para compilar o FileExist.java
javac FileExist.java
Após a compilação, você pode ver que um arquivo .class é gerado
Em seguida, empacote o arquivo .class em um jar para executar no Hadoop
jar -cvf FileExist.jar ./FileExist*.class
Após o empacotamento, você pode descobrir que um pacote FileExist.jar foi gerado
Em seguida, podemos executar o pacote jar
hadoop jar FileExist.jar FileExist
FileExist.jar é o pacote jar que executamos, FileExist é a classe em que o método principal do pacote jar está localizado
Resultado da operação
Use o pacote compilador de linha de comando em execução HDFS programa de amostra pequena para escrever aqui, é claro, você também pode usar o pacote de compilador de linha de comando a execução de programas de MapReduce, com o pacote de compilador para executar um programa semelhante ao HDFS referência específica de execução usando próprios programas MapReduce a linha de comando pacote compilador