コマンドラインを使用して、HDFSプログラムの小さな例をコンパイルして実行します。

前に書く

この記事では、HDFSの小さなインスタンスを使用して、Hadoop 2.7.7分散クラスター環境にファイルが存在するかどうかを判断し、コマンドラインを使用してHDFSプログラムをHadoop 2.xバージョンでコンパイルおよびパッケージ化する方法を紹介します。

Hadoop classhpath情報をCLASSPATH変数に追加します

Hadoop 2.xバージョンでは、jarは1つのhadoop-core * .jarに集中しなくなりましたが、複数のjarに分割されています。たとえば、Hadoop 2.7.7を使用してWordCountインスタンスを実行するには、少なくとも次の3つのjarが必要です。

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

実際には、コマンドによって、hadoop classpath我々は、Hadoopのプログラムを実行するために必要なすべてのクラスパス情報を取得することができます。

ここに画像の説明を挿入
Hadoop classhpath情報をCLASSPATH変数に追加し、次の行を〜/ .bashrcに追加します。

export HADOOP_HOME=/usr/local/hadoop
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH

実行することを忘れないでくださいsource ~/.bashrc有効にするには、変数を。

HDFSプログラムのコンパイル、パッケージ化、実行

HDFSプログラムを作成します。ここに、指定したファイルが存在するかどうかを判別するための小さな栗があります。

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 FileExist.javaをコンパイルするコマンド

javac FileExist.java 

コンパイル後、.classファイルが生成されていることがわかります

ここに画像の説明を挿入

次に、.classファイルをjarにパッケージ化して、Hadoopで実行します

jar -cvf FileExist.jar ./FileExist*.class

パッケージ化後、FileExist.jarパッケージが生成されていることがわかります
ここに画像の説明を挿入

次に、jarパッケージを実行できます

hadoop jar FileExist.jar FileExist

FileExist.jarは、実行するjarパッケージです。FileExistは、jarパッケージのメインメソッドが配置されているクラスです。

運用実績

ここに画像の説明を挿入
もちろん、あなたはまた、HDFS特定の参照と同様のプログラムを実行するためにコンパイラパッケージで、MapReduceのプログラムを実行するコマンドラインコンパイラパッケージを使用することができ、ここに書くためにHDFSの小さなサンプルプログラムを実行するコマンドラインコンパイラパッケージを使用してコマンドラインコンパイラパッケージ独自のMapReduceプログラムを使用して実行します

元の記事を23件公開 16 件を獲得 9515件を表示

おすすめ

転載: blog.csdn.net/atuo200/article/details/105629703