この記事では、Hadoop環境はリモートマシン(Linuxサーバーなど)にあり、Hadoopバージョンは2.5.2であると想定しています。
注:この記事Eclipse/Intellij Idea Remote Debugging Hadoop 2.6.0は主に参照であり、それに基づいて調整されています。
私は32ビットJDKや32ビットEclipseなどのWin7 64ビットに32ビットソフトウェアをインストールするのが好きなので、この記事のオペレーティングシステムはWin7 64ビットですが、すべてのソフトウェアは32ビットです。
ソフトウェアバージョン:
オペレーティングシステム: Win7 64ビット
Eclipse:Eclipse-Jee-Mars-2-Win32
Java:1.8.0_77 32ビット
Hadoop:2.5.2
1. Hadoopをインストールします
1.d:/app/hadoop-2.5.2/など、hadoop-2.5.2.tar.gzを減圧するためのwin7でディレクトリを見つける
2。環境変数を構成します
hadoop_home = d:/app/hadoop-2.5.2/
2. Hadoop Eclipseプラグインをインストールします
1. Hadoop-Eclipse-Pluginをダウンロードします
Hadoop-Eclipse-Pluginは、Eclipseに特別に使用されるHadoopプラグインであり、IDE環境でHDFのディレクトリとファイルコンテンツを直接表示できます。そのソースコードはGitHubでホストされており、公式のWebサイトアドレスはhttps://github.com/winghc/hadoop2x-eclipse-pluginです。リリースフォルダーにHadoop-Eclipse-Plugin-2.6.0.jarをダウンロードします。
2。Windows 32ビットプラットフォーム用のHadoopプラグインパッケージ(hadoop.dll、winutils.exe)をダウンロードする
ソフトウェア環境は32ビットなので、32ビットhadoop.dllとwinutils.exeをダウンロードする必要があります。ダウンロードアドレスは、baidu hadoop.dll 32で利用できます
たとえば、これをダウンロード:http://xiazai.vevb.com/201607/yuanma/eclipse-hadoop(vevb.com).rar
winutils.exeを$ hadoop_home/binディレクトリにコピーし、hadoop.dllをc:/windows/syswow64ディレクトリにコピーします(注:オペレーティングシステムは64ビットであり、ソフトウェアはこのディレクトリにコピーします。さらに、オペレーティングシステムが32ビットの場合は、C:/windwos/system32ディレクトリにコピーしてください)
3. Hadoop-Eclipse-Pluginプラグインを構成します
Eclipse、Window-> feermings-> hadoopマップ/redying winopのルートディレクトリを指定します。
マップ/削減ビューを切り替えます
Windows-> show View->その他のマップ/削減場所
次に、マップに新しい場所を追加し、下の場所を削減します
次のように構成します
ロケーション名は単なる名前です、それを呼ぶだけです
Map/Reduce(V2)マスターホストは、仮想マシンのHadoopマスターに対応するIPアドレスです。以下のポートは、dfs.datanode.ipc.address属性によって指定されたポートに対応しています。
DFSマスターポートのポートは、core-site.xmlのfs.defaultfsで指定されたポートに対応しています。
最後のユーザー名は、仮想マシンでHadoopを実行するユーザー名と同じでなければなりません。 Hadoop 2.6.0をHadoopでインストールして実行したので、Hadoopをここに記入してください。ルートでインストールした場合は、それに応じてルートに変更します。
これらのパラメーターが指定されたら、[完了とEclipse]をクリックして、Hadoopに接続する方法を知ります。すべてがうまくいけば、Project ExplorerパネルのHDFのディレクトリとファイルを見ることができます。
ファイルを右クリックして、削除を選択して試してみることができます。通常、初めては失敗し、多くのことがあります。一般的な考え方は、許可が不十分であるということです。その理由は、現在のWin7ログインユーザーが仮想マシンのHadoopの実行中のユーザーではないためです。多くの解決策があります。たとえば、Win7で新しいHadoop管理者ユーザーを作成し、Hadoopに切り替えてWin7にログインし、Eclipseを使用して開発できます。しかし、これはあまりにも迷惑で、最も簡単な方法です。
hdfs-site.xmlに追加されました
<property> <name> dfs.permissions.enabled </name> <balut> false </value> </property>
要するに、Hadoopのセキュリティ検出を完全にオフにすること(学習段階でこれらを必要としない、公式に作成されたときにこれを行わないでください)、最終的にHadoopを再起動してから、Eclipseに移動し、削除ファイル操作を今すぐ繰り返します。
注:接続できない場合は、最初にTelnet 192.168.1.6 9000を試してください(IPとポートを独自のHadoopサーバーIPとポートに置き換えてください)。ポートにアクセスできることを確認してください。
Telnetが失敗した場合、core-site.xmlのfs.defaultfsの値に問題がある可能性があります。たとえば、構成はlocalhost:9000です。 LocalHostをホスト名に置き換えることを検討できます
3。ワードカウントの例を書きます
1.新しいプロジェクトを作成し、Map/Reduceプロジェクトを選択します
次のものだけで、次のように新しいクラスwodcount.javaコードを作成します。
java.io.ioexception; import java.util.stlingtokenizer; Import org.apache.hadoop.conf.configuration; import org.apache.hadoop.fs.path; import org.apach.hadoop.io.intwrita; import org.apache.hadoop.io.io.text; import.apach.hap.jab; org.apache.hadoop.mapreduce.mapper; Import org.apache.hadoop.mapreduce.ducer; Import org.apache.hadoop.mapreduce.lib.input.fileinputformat; Import org.apache.hadoop.mapreduce.lib.outtupt.fileoutputpontat; org.apache.hadoop.util.genericoptionsparser; public class wordcount {public static class tokenizermapperはmapper <オブジェクト、テキスト、テキスト、intwritable> {private final static intwritable = new intwritable(1);プライベートテキストword = new Text(); public void Map(オブジェクトキー、テキスト値、コンテキストコンテキスト)IoException、arturtedexception {stringtokenizer itr = new StringTokenizer(value.toString()); while(itr.hasmoretokens()){word.set(itr.nexttoken()); context.write(word、one); }}}} public static class intsumreducerはreducer <text、intwritable、text、intwritable> {private intwritable result = new intwritable(); public void reduce(テキストキー、iterable <intwrita>値、コンテキストコンテキスト)がioexception、arturtedexception {int sum = 0; for(intwritable val:values){sum += val.get(); } result.set(sum); context.write(key、result); }} public static void main(string [] args)throws exception {configuration conf = new Configuration(); string [] otherargs = new genericoptionsparser(conf、args).getRemaingargs(); if(otherargs.length <2){system.err.println( "usage:wordcount <in> [<in>] <out>"); System.Exit(2); } job job = job.getInstance(conf、 "word count"); job.setjarbyclass(wordcount.class); job.setmapperclass(tokenizermapper.class); job.setcombinerclass(intsumreducer.class); job.setReducerclass(intsumreducer.class); job.setOutputKeyclass(text.class); job.setOutputValueClass(intwritable.class); for(int i = 0; i <otherargs.length -1; ++ i){fileinputformat.addinputpath(job、new Path(otherArgs [i])); } fileoutputformat.setOutputPath(job、new Path(otherArgs [otherargs.length -1])); system.exit(job.waitforcompletion(true)?0:1); }}次に、srcディレクトリにlog4j.propertiesを作成すると、コンテンツは次のとおりです。(実行の便利さについては、さまざまな出力を確認してください)
log4j.rootlogger = info、 stdout#log4j.logger.org.springframework = info#log4j.logger.org.apache.activemq = info#log4j.logger.org.apache。 Activemq.spring = warn#log4j.logger.org.apache.activemq.store.journal = info#log4j.logger.org.apache.activemq.or g.activeio.journal = infolog4j.appender.stdout = org.apache.log4j.consoleappenderlog4j.appender.stdout.layout = org.apache.log4j.patternlayoutlog4j.appender.stdout.layout.conversionionionionionionionionionionionion %-5.5p | %-16.16T | %-32.32C {1} | %-32.32C%4L | %m%n最終的なディレクトリ構造は次のとおりです。
2。実行中のパラメーターを構成します
WordCountはファイルを入力して単語をカウントしてから別のフォルダーに出力するため、2つのパラメーターを指定し、上記の図を参照して、プログラムの引数に入力することです。
hdfs://192.168.1.6:9000/user/nub1.txt
hdfs://192.168.1.6:9000/user/output
ユーザー/nub1.txtファイルにそれがない場合は、最初に手動でアップロードしてください(EclipseのDFSロケーションツールの右クリックを使用)、そして/出力/は存在してはなりません。それ以外の場合、プログラムが最後まで実行され、ターゲットディレクトリが存在することがわかった場合、エラーも報告されます。
OK、実行するだけです
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。