Artikel ini mengasumsikan bahwa lingkungan Hadoop ada di mesin jarak jauh (seperti server Linux), dan versi Hadoop adalah 2.5.2
Catatan: Artikel ini Eclipse/IntelliJ Idea Remote Debugging Hadoop 2.6.0 Terutama referensi dan telah disesuaikan berdasarkan itu.
Karena saya suka menginstal perangkat lunak 32-bit di Win7 64-bit, seperti JDK 32-bit dan gerhana 32-bit, meskipun sistem operasi dalam artikel ini adalah Win7 64-bit, semua perangkat lunak 32-bit.
Versi Perangkat Lunak:
Sistem Operasi: Win7 64-bit
Eclipse: Eclipse-jee-mars-2-win32
Java: 1.8.0_77 32-bit
Hadoop: 2.5.2
1. Instal Hadoop
1. Temukan direktori di Win7 untuk mendekompres Hadoop-2.5.2.tar.gz, seperti d: /app/hadoop-2.5.2/
2. Mengkonfigurasi variabel lingkungan
Hadoop_home = d: /app/hadoop-2.5.2/
2. Instal Hadoop Eclipse Plugin
1. Unduh Hadoop-Eclipse-Plugin
Hadoop-Eclipse-Plugin adalah plugin Hadoop yang digunakan khusus untuk Eclipse, yang dapat melihat direktori dan konten file HDF secara langsung di lingkungan IDE. Kode sumbernya di-host di Github, dan alamat situs web resmi adalah https://github.com/winghc/hadoop2x-eclipse-plugin. Unduh Hadoop-Eclipse-Plugin-2.6.0.jar di folder rilis.
2. Unduh paket plug-in Hadoop untuk platform Windows 32-bit (Hadoop.dll, winutils.exe)
Karena lingkungan perangkat lunak kami adalah 32-bit, kami perlu mengunduh 32-bit hadoop.dll dan winutils.exe. Alamat unduhan tersedia untuk Baidu Hadoop.dll 32
Misalnya, unduh ini: http://xiazai.vevb.com/201607/yuanma/eclipse-hadoop(vevb.com).rar
Salin winutils.exe ke direktori $ hadoop_home/bin, dan copy hadoop.dll ke direktori c:/windows/syswow64 (catatan: karena sistem operasi kami 64-bit dan perangkat lunaknya 32-bit, kami menyalinnya ke direktori ini. Selain itu, sistem operasi Anda 32-bit, kemudian menyalinnya ke C:/Wind 2, jika sistem operasi Anda 32-bit, kemudian C:/Wind 2, jika sistem operasi Anda 32-bit/kemudian untuk C:/
3. Konfigurasi plugin Hadoop-Eclipse-Plugin
Mulai Eclipse, Window-> Preferences-> Hadoop Map/Reduksi Tentukan Root Directory of Hadoop on Win7 (yaitu: $ HADOOP_HOME)
Beralih peta/kurangi tampilan
Windows-> Tampilkan tampilan-> Lokasi peta/pengurangan lainnya
Kemudian tambahkan lokasi baru di panel Peta/Kurangi lokasi di bawah ini
Konfigurasikan sebagai berikut
Nama lokasi hanyalah sebuah nama, sebut saja
Host Master Peta/Reduce (V2) di sini adalah alamat IP yang sesuai dengan master Hadoop di mesin virtual. Port di bawah ini sesuai dengan port yang ditentukan oleh atribut dfs.datanode.ipc.address di hdfs-site.xml
Port di sini dari port master DFS sesuai dengan port yang ditentukan oleh fs.defaultfs di core-site.xml
Nama pengguna terakhir harus sama dengan nama pengguna yang menjalankan Hadoop di mesin virtual. Saya menginstal dan menjalankan Hadoop 2.6.0 dengan Hadoop, jadi isi Hadoop di sini. Jika Anda menginstalnya dengan root, ubah menjadi root sesuai.
Setelah parameter ini ditentukan, klik Finish dan Eclipse untuk mengetahui cara terhubung ke Hadoop. Jika semuanya berjalan dengan baik, Anda dapat melihat direktori dan file di HDF di panel Project Explorer.
Anda dapat mengklik kanan pada file dan memilih Hapus untuk dicoba. Biasanya, pertama kali tidak berhasil, dan akan ada banyak hal. Gagasan umum adalah bahwa ada izin yang tidak memadai. Alasannya adalah bahwa pengguna login Win7 saat ini bukan pengguna Hadoop yang sedang berjalan di mesin virtual. Ada banyak solusi. Misalnya, Anda dapat membuat pengguna Administrator Hadoop baru di Win7, kemudian beralih ke Hadoop untuk masuk ke Win7, dan kemudian menggunakan Eclipse untuk dikembangkan. Namun, ini terlalu menjengkelkan, cara termudah:
Ditambahkan dalam hdfs-site.xml
<property> <name> dfs.permissions.
Singkatnya, itu benar -benar mematikan deteksi keamanan Hadoop (tidak perlu untuk ini dalam tahap pembelajaran, jangan lakukan ini ketika diproduksi secara resmi), akhirnya restart Hadoop, lalu pergi ke gerhana, dan ulangi operasi file hapus sekarang, dan seharusnya baik -baik saja.
Catatan: Jika Anda tidak dapat terhubung, silakan coba Telnet 192.168.1.6 9000 terlebih dahulu (harap ganti IP dan port dengan IP dan port Hadoop Server Anda sendiri) untuk memastikan bahwa port dapat diakses.
Jika telnet gagal, mungkin ada masalah dengan nilai fs.defaultfs di core-site.xml. Misalnya, konfigurasi adalah localhost: 9000. Anda dapat mempertimbangkan untuk mengganti localhost dengan nama host
3. Tulis contoh WordCount
1. Buat proyek baru dan pilih Peta/Kurangi Proyek
Hanya yang berikutnya, dan kemudian buat kode kelas baru wodcount.java sebagai berikut:
Impor java.io.ioException; import java.util.stringtokenizer; impor org.apache.hadoop.conf.configuration; impor org.apache.hadoop.fs.path; impor org.apache.hadoop.intwritable; impor org.apache.hadoop.apache.apachepe; org.apache.hadoop.mapreduce.mapper; impor org.apache.hadoop.mapreduce.reducer; impor org.apache.hadoop.mapreduce.lib.input.fileInputFormat; impor org.apache.hadoop.mapreduce.lib.output.fileOfFormat; org.apache.hadoop.util.genericoptionsParser; kelas publik wordcount {public static class TokenizerMapper memperluas mapper <objek, teks, teks, tidak dapat diterapkan> {private final static intrantsitable one = new IntWritable (1); kata teks pribadi = teks baru (); peta public void (kunci objek, nilai teks, konteks konteks) melempar IoException, InterruptedException {StringTokenizer ITR = New StringTokenizer (value.toString ()); while (itr.hasmoretokens ()) {word.set (itr.nextToken ()); context.write (word, satu); }}} public static class intsumreducer memperluas reducer <teks, tidak dapat diterapkan, teks, tidak dapat diterjemahkan> {private tidak dapat berkaitan = new IntWritable (); void public reduksi (kunci teks, nilai -nilai <intwritable>, konteks konteks) melempar ioException, interruptedException {int sum = 0; untuk (val yang tidak dapat dituntun: values) {sum += val.get (); } result.set (sum); context.write (kunci, hasil); }} public static void main (string [] args) melempar Exception {configuration conf = new configuration (); String [] OtherArgs = GenericOptionsParser baru (conf, args) .getRemainingArgs (); if (OtherArgs.length <2) {System.err.println ("Penggunaan: WordCount <in> [<in> ...] <Unt>"); 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 (intrwritable.class); untuk (int i = 0; i <OtherArgs.length - 1; ++ i) {FileInputFormat.AddInputPath (Job, Path baru (OtherArgs [i])); } FileOutPutFormat.SetOutputPath (Job, Path baru (OtherArgs [OtherArgs.Length - 1])); System.exit (job.waitforcompletion (true)? 0: 1); }}Kemudian buat log4j.properties di direktori SRC, kontennya adalah sebagai berikut: (Untuk kenyamanan berjalan, periksa berbagai output)
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.Stdout = org.apache.log4j.consoleAppenderLog4j.Appender.stdout.layout = org.apache.log4j.patternlayoutlog4j.Appender.stdout.layout.conversionpattern =%do.appender {stdout.layout.conversionpattern =%do %-5.5p | %-16.16t | %-32.32c {1} | %-32.32c %4L | %M NStruktur Direktori Akhir adalah sebagai berikut:
2. Konfigurasikan parameter yang berjalan
Karena WordCount adalah memasukkan file untuk menghitung kata dan kemudian output ke folder lain, jadi berikan dua parameter, lihat gambar di atas, masukkan dalam argumen program
HDFS: //192.168.1.6: 9000/user/nub1.txt
HDFS: //192.168.1.6: 9000/pengguna/output
Perhatikan bahwa jika file pengguna/nub1.txt tidak memilikinya, silakan unggah secara manual terlebih dahulu (menggunakan klik kanan alat lokasi DFS di Eclipse), dan kemudian/output/tidak boleh ada. Jika tidak, jika program berjalan hingga akhir dan menemukan bahwa direktori target ada, kesalahan juga akan dilaporkan.
Oke, lari saja
Di atas adalah semua konten artikel ini. Saya harap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.