Ini adalah program Java untuk membuat indeks kata terbalik yang terjadi dalam satu set dokumen besar yang diekstraksi dari halaman web menggunakan Hadoop MapReduce dan Google Dataproc.
Sebagai dataset kami, kami menggunakan subset dari 74 file dari total 408 file (teks yang diekstraksi dari tag HTML) yang berasal dari proyek Webbase Stanford yang tersedia di sini. Itu diperoleh dari perayapan web yang dilakukan pada Februari 2007. Ini adalah salah satu koleksi terbesar yang berjumlah lebih dari 100 juta halaman Web dari lebih dari 50.000 situs web. Versi ini sudah dibersihkan.
Dalam proyek ini kami pertama-tama mengatur cluster sampel Hadoop menggunakan mode lokal (mandiri) dan kemudian mengimplementasikan proyek aktual dalam mode yang didistribusikan sepenuhnya di Google Dataproc pada set data aktual.
Kita perlu mengatur proyek di GNU/Linux karena merupakan platform pengembangan dan produksi yang didukung untuk Hadoop. Untuk mendapatkan distribusi Hadoop, unduh rilis stabil baru -baru ini dari salah satu cermin unduhan Apache. Harap dicatat bahwa proyek ini digunakan dan diuji menggunakan hadoop-3.1.1 . Buka paket distribusi Hadoop yang diunduh. Di folder distribusi, edit file etc/hadoop/hadoop-env.sh untuk mendefinisikan parameter variabel lingkungan sebagai berikut:
# add these line to the hadoop-env.sh or set them in terminal
export JAVA_HOME=/usr/java/latest
export PATH= ${JAVA_HOME} /bin: ${PATH}
export HADOOP_CLASSPATH= ${JAVA_HOME} /lib/tools.jarKemudian coba perintah berikut:
$ bin/hadoopIni harus menampilkan dokumentasi penggunaan untuk skrip Hadoop. Sekarang Anda siap untuk memulai kluster hadoop Anda dalam mode mandiri.
Pekerjaan Hadoop sederhana ini, mendapat dua file teks dari folder "input" sebagai argumen mapper.
# file01
5722018411 Hello World Bye World # file02
6722018415 Hello Hadoop Goodbye HadoopDan dengan mengirimkan pekerjaan Hadoop dan menerapkan Langkah Pengurangan, itu menghasilkan indeks terbalik seperti di bawah ini:
bye 5722018411:1
goodbye 6722018415:1
hadoop 6722018415:2
hello 5722018411:1 6722018415:1
world 5722018411:2 Untuk mengirimkan pekerjaan Hadoop, implementasi MadReduce harus dikemas sebagai file jar . Untuk melakukannya, salin file InvertedIndex.java dari proyek ini ke folder root distribusi Hadoop dan saat Anda masih di sana menjalankan perintah berikut untuk mengkompilasi InvertedIndex.java dan membuat file jar .
$ bin/hadoop com.sun.tools.javac.Main InvertedIndex.java
$ jar cf invertedindex.jar InvertedIndex * .class Salin input/file01 dan input/file02 dari proyek ini dan letakkan di dalam folder input dari folder distrubusi Hadoop. Saat Anda masih di sana, jalankan perintah berikut untuk mengirimkan pekerjaan, dapatkan file input dari folder input , hasilkan indeks terbalik dan simpan outputnya di folder output :
$ bin/hadoop jar invertedindex.jar InvertedIndex input outputDan akhirnya untuk melihat output, jalankan perintah di bawah ini:
$ bin/hadoop dfs -cat output/part-r-00000 Di bagian ini kami membuat cluster dengan 3 node pekerja di Google Dataproc dan menjalankan pekerjaan invertedindex.jar pada set data aktual.
Pertama, kami membutuhkan akun di Google Cloud Platform. Anda dapat mendaftar untuk uji coba dengan kredit gratis $ 300 jika Anda belum memilikinya.
Di Google Cloud Console baik membuat proyek baru atau pilih yang sudah ada. Untuk latihan ini kami akan menggunakan Dataproc. Menggunakan Dataproc, kami dapat dengan cepat membuat sekelompok instance komputasi yang menjalankan Hadoop. Alternatif untuk Dataproc adalah mengatur setiap node komputasi secara individual, menginstal Hadoop di atasnya, mengatur HDF, mengatur master node, dll. Dataproc mengotomatiskan proses melelahkan ini bagi kami.
Di Google Cloud Consol, pilih Dataproc dari daftar navigasi di sebelah kiri. Jika ini adalah pertama kalinya Anda menggunakan Dataproc maka Anda mungkin perlu mengaktifkan API Dataproc terlebih dahulu. Mengklik 'Buat Cluster' akan membawa Anda ke bagian konfigurasi cluster. Berikan nama unik apa pun untuk cluster Anda dan pilih zona yang diinginkan. Anda perlu membuat master dan 3 node pekerja. Pilih prosesor konfigurasi default (N1-Standard-4 4VCPU 15 GB memori) untuk master dan setiap anggota dan mengurangi penyimpanan hingga penyimpanan HDD 32 GB. Ubah jumlah node pekerja menjadi 3. Biarkan semuanya default dan klik 'Buat'.
Sekarang setelah cluster diatur, kita harus mengkonfigurasinya sedikit sebelum kita dapat menjalankan pekerjaan di atasnya. Pilih cluster yang baru saja Anda buat dari daftar cluster di bawah bagian Cloud Dataproc di konsol Anda. Buka tab VM VM dan klik tombol SSH di sebelah instance dengan peran master.
Mengklik tombol SSH akan membawa Anda ke antarmuka baris perintah (CLI) seperti xterm atau terminal. Semua perintah dalam langkah -langkah berikut harus dimasukkan dalam CLI. Tidak ada direktori rumahan di HDFS untuk pengguna saat ini, kami harus mengatur ini sebelum melanjutkan lebih lanjut. (Untuk mengetahui nama pengguna Anda, jalankan whoami )
$ hadoop fs -mkdir -p /user/ < your username here > JAVA_HOME telah diatur dan kami tidak perlu mengaturnya lagi.
Harap dicatat bahwa langkah ini harus dilakukan setiap kali Anda membuka terminal SSH baru. Untuk menghilangkan langkah ini, Anda juga dapat mengatur JAVA_HOME , PATH , dan HADOOP_CLASSPATH ini di etc/hadoop/hadoop-env.sh .
$ export PATH= ${JAVA_HOME} /bin: ${PATH}
$ export HADOOP_CLASSPATH= ${JAVA_HOME} /lib/tools.jarSekarang jalankan:
$ hadoop fs -lsJika tidak ada kesalahan, ini menyiratkan bahwa cluster Anda berhasil diatur. Jika Anda menemukan kesalahan, kemungkinan besar karena variabel lingkungan yang hilang atau direktori rumah pengguna tidak diatur dengan benar.
Untuk memastikan bahwa variabel lingkungan ditetapkan, jalankan Command env .
Catatan : Harap nonaktifkan penagihan untuk cluster saat Anda tidak menggunakannya. Meninggalkannya akan dikenakan biaya tambahan.
Unduh dataset dari tautan ini dan unzip isinya. Anda akan menemukan dua folder di dalam bernama 'pengembangan' dan 'data lengkap'. Data 'pengembangan' dapat digunakan untuk tujuan pengembangan dan pengujian.
Klik 'Dataproc' di menu navigasi kiri. Selanjutnya, cari alamat ember pementasan Google Cloud Stage default untuk cluster Anda.
Buka bagian penyimpanan di bilah navigasi kiri dan pilih ember default cluster Anda dari daftar ember. Klik tombol Upload Folder dan unggah folder devdata dan fulldata secara individual.
Sekarang kami siap mengirimkan pekerjaan Hadoop untuk menjalankan implementasi MapReduce kami pada data yang sebenarnya. Baik menggunakan perintah ssh atau nano / vi untuk menyalin atau membuat InvertedIndex.java pada cluster master.
Jalankan perintah berikut untuk membuat file jar :
$ hadoop com.sun.tools.javac.Main InvertedIndex.java
$ jar cf invertedindex.jar InvertedIndex * .classSekarang Anda memiliki file jar untuk pekerjaan Anda. Anda perlu menempatkan file jar ini di ember cloud default cluster Anda. Cukup buat folder yang disebut toples di ember Anda dan unggah ke folder itu. Jika Anda membuat file jar Anda di node master cluster itu sendiri, gunakan perintah berikut untuk menyalinnya ke folder JAR.
$ hadoop fs -copyFromLocal ./invertedindex.jar
$ hadoop fs -cp ./invertedindex.jar gs://dataproc-69070.../JAR gs://dataproc-69070... Bagian adalah ember default dari cluster Anda. Perlu diisi oleh GS: // untuk memberi tahu lingkungan Hadoop bahwa itu adalah ember dan bukan lokasi reguler pada sistem file.
Buka bagian 'Jobs' di bilah navigasi kiri halaman Dataproc dan klik 'Kirim Pekerjaan'. Isi parameter pekerjaan sebagai berikut:
gs:///dataproc-69070.../JAR/invertedindex.jar .gs:///dataproc-69070.../fulldata .gs:///dataproc-69070.../fulloutput . Folder dibuat selama eksekusi. Anda akan mendapatkan kesalahan jika Anda memberikan nama folder yang ada.Sekarang kirimkan pekerjaan. Anda dapat melihat log saat sedang berjalan.
CATATAN : Jika Anda menemukan Java.lang.Interrupted Exception Anda dapat mengabaikannya dengan aman. Pekerjaan Anda masih akan dijalankan.
File output akan disimpan di folder output pada ember. Jika Anda membuka folder ini, Anda akan melihat bahwa indeks terbalik ada di beberapa segmen. (Hapus file _success di folder sebelum mergin semua file output). Untuk menggabungkan file dan membuat output teks akhir jalankan perintah berikut:
$ hadoop fs -getmerge gs://dataproc-69070.../fulloutput ./output.txt
$ hadoop fs -copyFromLocal ./output.txt
$ hadoop fs -cp ./output.txt gs://dataproc-69070.../output.txt Sekarang Anda telah berhasil membuat indeks terbalik dari seluruh set data. Anda dapat menggunakan grep untuk melihat entri indeks untuk kata apa pun:
$ grep -w ' ^peace ' output.txt Jika Anda ingin mengkompilasi ulang dan mengirimkan pekerjaan baru lagi, Anda dapat menghapus file .jar , .class , .java dan Hadoop menggunakan perintah di bawah ini.
$ hadoop fs -rm ./wordcount.jar ./output.txt WordCount * .class
$ hadoop fs -rm gs://dataproc-69070.../JAR/wordcount.jar ; gs://dataproc-69070.../output.txt
$ hadoop fs -rm gs://dataproc-69070.../fulloutput/ *
$ hadoop fs -rmdir gs://dataproc-69070.../fulloutput
Karya ini dilisensikan di bawah Lisensi Internasional Creative Commons Attribution 4.0.