Ilmu data dan model pemrograman MapReduce dari Hadoop


8

Apa saja kelas yang berbeda dari masalah sains data yang dapat diselesaikan dengan menggunakan model pemrograman mapreduce?

Jawaban:


13

Mari kita membaginya menjadi beberapa bagian.

Ilmu Data adalah tentang membuat pengetahuan dari data mentah. Ini menggunakan pembelajaran mesin, statistik dan bidang lain untuk menyederhanakan (atau bahkan mengotomatisasi) pengambilan keputusan. Teknik ilmu data dapat bekerja dengan ukuran data apa pun, tetapi lebih banyak data berarti prediksi yang lebih baik dan dengan demikian keputusan yang lebih tepat.

Hadoop adalah nama umum untuk seperangkat alat yang dimaksudkan untuk bekerja dengan sejumlah besar data. Dua komponen terpenting dalam Hadoop adalah HDFS dan MapReduce.

HDFS , atau Sistem File Terdistribusi Hadoop, adalah penyimpanan terdistribusi khusus yang mampu menampung jumlah data yang sangat besar. File besar pada HDFS yang dibagi menjadi blok, dan untuk setiap blok HDFS API mengekspos nya lokasi .

MapReduce adalah kerangka kerja untuk menjalankan komputasi pada node dengan data. MapReduce banyak menggunakan lokalitas data yang terpapar oleh HDFS: bila memungkinkan, data tidak ditransfer antar node, tetapi kode disalin ke node dengan data.

Jadi pada dasarnya setiap masalah (termasuk tugas ilmu data) yang tidak melanggar prinsip lokalitas data dapat diimplementasikan secara efisien menggunakan MapReduce (dan sejumlah masalah lain dapat diselesaikan tidak dengan efisien, tetapi masih cukup sederhana).


Mari kita ambil beberapa contoh. Sangat sering analis hanya membutuhkan beberapa statistik sederhana atas data tabularnya. Dalam hal ini Hive , yang pada dasarnya adalah mesin SQL di atas MapReduce, bekerja dengan sangat baik (ada juga Impala, Shark dan yang lainnya, tetapi mereka tidak menggunakan Hadoop's MapReduce, jadi lebih banyak tentang mereka nanti).

Dalam kasus lain, analis (atau pengembang) mungkin ingin bekerja dengan data yang sebelumnya tidak terstruktur. Pure MapReduce cukup bagus untuk mengubah dan menstandarkan data.

Beberapa orang terbiasa mengeksplorasi statistik dan visualisasi menggunakan alat seperti R. Mungkin untuk menerapkan pendekatan ini ke jumlah data besar menggunakan paket RHadoop .

Dan ketika datang ke pembelajaran mesin berbasis MapReduce, Apache Mahout adalah yang pertama disebutkan.


Namun, ada satu jenis algoritma yang bekerja sangat lambat di Hadoop bahkan di hadapan lokalitas data, yaitu, algoritma iteratif. Algoritma berulang cenderung memiliki beberapa tahap Peta dan Mengurangi. Kerangka kerja MR Hadoop membaca dan menulis data ke disk pada setiap tahap (dan terkadang di antaranya), yang membuat tugas iteratif (dan juga multi-tahap) sangat lambat.

Untungnya, ada kerangka kerja alternatif yang bisa - menggunakan lokalitas data dan menyimpan data dalam memori di antara tahapan. Mungkin, yang paling terkenal dari mereka adalah Apache Spark . Spark adalah pengganti lengkap untuk Hadoop's MapReduce yang menggunakan runtime-nya sendiri dan memperlihatkan API yang cukup kaya untuk memanipulasi dataset terdistribusi Anda. Spark memiliki beberapa sub proyek, terkait erat dengan ilmu data:

  • Shark dan Spark SQL menyediakan antarmuka seperti SQL alternatif untuk data yang disimpan pada HDFS
  • Spark Streaming memudahkan bekerja dengan aliran data terus menerus (mis., Feed Twitter)
  • MLlib mengimplementasikan sejumlah algoritma pembelajaran mesin dengan API yang cukup sederhana dan fleksibel
  • GraphX memungkinkan pemrosesan grafik skala besar

Jadi ada banyak masalah ilmu data yang dapat Anda selesaikan dengan Hadoop dan proyek terkait.


Saya tidak begitu yakin tentang apa yang Anda katakan di MapReduce, terutama So basically any problem that doesn't break data locality principle may be efficiently implemented using MapReduce. Dari pemahaman saya, Anda hanya bisa menyelesaikan masalah yang bisa diekspresikan dengan pola MapReduce.
merour

@ fxm: Kerangka kerja MapReduce dapat digunakan untuk tugas yang cukup berbeda. Misalnya, Oozie - penjadwal alur kerja untuk berbagai komponen Hadoop - memiliki apa yang disebut Java action, yang hanya membuat satu mapper dan menjalankan kode Java khusus di dalamnya. Dengan pendekatan ini Anda pada dasarnya dapat menjalankan kode apa pun . Namun, ini tidak akan memberi Anda keuntungan MR apa pun dibandingkan dengan aplikasi Java sederhana. Satu-satunya cara untuk mendapatkan keuntungan ini adalah menjalankan komputasi secara paralel (menggunakan Peta) pada node dengan data , yaitu secara lokal. Untuk meringkas: Anda dapat menjalankan kode apa pun dengan MR, tetapi untuk mendapatkan kinerja, Anda harus memegang lokalitas data.
berteman

Saya setuju, tetapi yang saya maksudkan adalah seorang pengembang tidak perlu khawatir tentang mengelola lokalitas data (yang dikelola oleh hadoop), melainkan tentang mengekspresikan algoritma yang diinginkan dengan pola MapReduce.
merayakan

@ fxm: pengembang memastikan lokalitas dengan menggunakan mapper. Secara kasar, "map (f, data)" berarti "transfer f () ke node data dan jalankan secara lokal". Jika pengembang tidak mempertimbangkan lokalitas (mis. Menempatkan semua perhitungan ke reducer), ia kehilangan semua keuntungan MR. Jadi mengekspresikan algo sebagai pekerjaan MR (efisien) menyiratkan pemanfaatan lokalitas data. Yang mengatakan, saya masih menyarankan menggunakan alat yang lebih fleksibel daripada MR murni seperti Spark.
berteman

9

Ilmu Data memiliki banyak sub-bidang yang berbeda seperti yang dijelaskan dalam posting saya ). Hampir untuk setiap bidang, ilmuwan dan pengembang memiliki kontribusi yang signifikan. Untuk mempelajari lebih lanjut tentang apa yang dapat dilakukan, silakan lihat situs web berikut:

Juga, ada beberapa pekerjaan pada kombinasi MapReduce + Excel + Cloud tetapi saya belum menemukan tautannya.

Apa sajakah kelas masalah Ilmu Data yang berbeda ...

Setiap "kelas" bukan murni domain masalah homogen, yaitu beberapa masalah tidak dapat diselesaikan melalui peta dan mengurangi pendekatan karena biaya komunikasinya, atau perilaku algoritma. Yang saya maksud dengan perilaku adalah bahwa beberapa masalah ingin memiliki kontrol pada semua set data, bukan potongan. Jadi, saya menolak untuk menyebutkan jenis masalah "kelas".

Jangan lupa bahwa mengetahui apa yang bisa dilakukan MapReduce tidak cukup untuk Ilmu Data. Anda juga harus menyadari Apa yang MapReduce tidak bisa lakukan juga.



2

peta / pengurangan paling tepat untuk perhitungan offline yang dapat diparalelkan. Untuk lebih tepatnya, ini bekerja paling baik ketika hasilnya dapat ditemukan dari hasil beberapa fungsi partisi input. Rata-rata adalah contoh sepele; Anda dapat melakukan ini dengan memetakan / mengurangi dengan menjumlahkan setiap partisi, mengembalikan jumlah dan jumlah elemen dalam partisi, kemudian menghitung rata-rata keseluruhan menggunakan hasil antara ini. Itu kurang tepat ketika langkah-langkah perantara tergantung pada keadaan partisi lain.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.