3.1 Sejarah kemunculan istilah BigData

Istilah Big Data muncul baru-baru ini. Aliran Google menunjukkan permulaan pertumbuhan aktif dalam penggunaan frasa sejak 2011:

Pada masa yang sama, hanya si pemalas sahaja yang tidak menggunakan istilah itu sekarang. Terutama sekali, istilah ini digunakan secara tidak wajar oleh pemasar. Jadi apakah Big Data sebenarnya? Memandangkan saya memutuskan untuk menyatakan secara sistematik dan menyerlahkan isu tersebut, adalah perlu untuk mentakrifkan konsep tersebut.

Dalam amalan saya, saya bertemu dengan definisi yang berbeza:

  • Big Data ialah apabila terdapat lebih daripada 100GB data (500GB, 1TB, apa sahaja yang anda suka).
  • Big Data ialah data yang tidak boleh diproses dalam Excel.
  • Big Data ialah data yang tidak boleh diproses pada satu komputer.

Dan bahkan ini:

  • Data Besar secara amnya ialah sebarang data.
  • Big Data tidak wujud, ia dicipta oleh pemasar.

Saya akan berpegang kepada definisi dari wikipedia:

Data besar ialah satu siri pendekatan, alat dan kaedah untuk memproses data berstruktur dan tidak berstruktur dalam jumlah yang besar dan kepelbagaian yang ketara untuk mendapatkan hasil yang boleh dilihat oleh manusia yang berkesan dalam keadaan pertumbuhan berterusan, pengedaran melalui banyak nod rangkaian komputer, terbentuk. pada akhir 2000-an, alternatif kepada sistem pengurusan pangkalan data tradisional dan penyelesaian kelas kecerdasan perniagaan.

Oleh itu, dengan Big Data saya tidak akan memahami beberapa jumlah data tertentu dan bukan juga data itu sendiri, tetapi kaedah memprosesnya, yang membenarkan pemprosesan maklumat yang diedarkan. Kaedah ini boleh digunakan pada set data yang besar (seperti kandungan semua halaman di Internet) serta set data kecil (seperti kandungan kuliah ini).

Berikut ialah beberapa contoh sumber data yang memerlukan teknik data besar:

  • Log tingkah laku pengguna di Internet
  • Isyarat GPS dari kereta untuk syarikat pengangkutan
  • Data diambil daripada penderia dalam Large Hadron Collider
  • Buku digital di Perpustakaan Negara Rusia
  • Maklumat tentang transaksi semua pelanggan bank
  • Maklumat tentang semua pembelian dalam rangkaian runcit yang besar, dsb.

Bilangan sumber data berkembang dengan pesat, yang bermaksud bahawa teknologi pemprosesan data semakin mendapat permintaan.

3.2 Prinsip data besar

Berdasarkan takrifan Data Besar, kita boleh merumuskan prinsip asas bekerja dengan data tersebut:

1. Kebolehskalaan mendatar. Memandangkan terdapat jumlah data yang besar secara sewenang-wenangnya, mana-mana sistem yang melibatkan pemprosesan data yang besar mesti boleh diperluaskan. Jumlah data meningkat sebanyak 2 kali - jumlah besi dalam kelompok meningkat sebanyak 2 kali dan semuanya terus berfungsi.

2. Toleransi kesalahan. Prinsip kebolehskalaan mendatar membayangkan bahawa terdapat banyak mesin dalam gugusan. Contohnya, kluster Hadoop Yahoo mempunyai lebih 42,000 mesin (anda boleh melihat saiz kluster merentas organisasi di pautan ini). Ini bermakna beberapa mesin ini akan dijamin gagal. Amalan data besar perlu menyedari gangguan ini dan bertahan tanpa sebarang akibat yang ketara.

3. Lokasi data. Dalam sistem teragih yang besar, data diedarkan merentasi sejumlah besar mesin. Jika data terletak secara fizikal pada satu pelayan dan diproses pada pelayan lain, kos pemindahan data mungkin melebihi kos pemprosesan itu sendiri. Oleh itu, salah satu prinsip terpenting untuk mereka bentuk penyelesaian BigData ialah prinsip lokaliti data - jika boleh, kami memproses data pada mesin yang sama di mana kami menyimpannya.

Semua alatan data besar moden mengikut tiga prinsip ini dalam satu cara atau yang lain. Untuk mengikutinya, adalah perlu untuk menghasilkan beberapa kaedah, kaedah dan paradigma untuk membangunkan alat pembangunan data. Salah satu kaedah paling klasik yang akan saya analisis dalam kuliah hari ini.

3.3 MapReduce

MapReduce ialah model pemprosesan data teragih yang dicadangkan oleh Google untuk memproses sejumlah besar data pada kelompok komputer. MapReduce digambarkan dengan baik oleh gambar berikut:

MapReduce mengandaikan bahawa data disusun ke dalam beberapa rekod. Pemprosesan data berlaku dalam 3 peringkat:

1. Peringkat peta . Pada peringkat ini, data dipraproses menggunakan fungsi map(), yang ditakrifkan oleh pengguna. Kerja peringkat ini adalah untuk mempraproses dan menapis data. Operasi ini sangat serupa dengan operasi peta dalam bahasa pengaturcaraan berfungsi - fungsi tersuai digunakan pada setiap rekod input.

Fungsi map() digunakan pada rekod input tunggal menghasilkan banyak pasangan nilai kunci. Set - iaitu, ia boleh mengembalikan hanya satu rekod, ia mungkin tidak mengembalikan apa-apa, atau ia mungkin mengembalikan beberapa pasangan nilai kunci. Apa yang akan ada dalam kunci dan nilai terpulang kepada pengguna, tetapi kunci adalah perkara yang sangat penting, kerana data dengan satu kunci pada masa hadapan akan jatuh ke dalam satu contoh fungsi pengurangan.

2. Kocok Peringkat. Ia tidak disedari oleh pengguna. Dalam peringkat ini, output fungsi peta adalah "binned" - setiap tong sepadan dengan satu kunci output peringkat peta. Pada masa hadapan, bakul ini akan berfungsi sebagai input untuk mengurangkan.

3. Tahap Pengurangan. Setiap "bakul" dengan nilai yang dijana pada peringkat shuffle mendapat input fungsi reduce().

Fungsi pengurangan diberikan oleh pengguna dan mengira hasil akhir untuk satu "bakul" . Set semua nilai yang dikembalikan oleh fungsi reduce() ialah hasil akhir tugasan MapReduce.

Beberapa fakta tambahan tentang MapReduce:

  1. Semua larian fungsi peta berfungsi secara bebas dan boleh dijalankan secara selari, termasuk pada mesin kluster yang berbeza.
  2. Semua larian fungsi pengurangan berfungsi secara bebas dan boleh dijalankan secara selari, termasuk pada mesin kluster yang berbeza.
  3. Kocok secara dalaman mewakili jenis selari, jadi ia juga boleh berfungsi pada mesin kelompok yang berbeza. Perkara 1-3 membolehkan anda melaksanakan prinsip kebolehskalaan mendatar .
  4. Fungsi peta biasanya digunakan pada mesin yang sama di mana data disimpan - ini mengurangkan penghantaran data melalui rangkaian (prinsip lokaliti data).
  5. MapReduce sentiasa imbasan data penuh, tiada indeks. Ini bermakna bahawa MapReduce kurang sesuai apabila respons diperlukan dengan cepat.

3.4 Contoh tugas yang diselesaikan dengan berkesan dengan MapReduce

Bilangan Perkataan

Mari kita mulakan dengan tugas klasik - Word Count. Tugas ini dirumuskan seperti berikut: terdapat korpus besar dokumen. Tugasnya adalah untuk mengira jumlah bilangan kali ia berlaku dalam korpus untuk setiap perkataan yang berlaku sekurang-kurangnya sekali dalam korpus.

Penyelesaian:

Oleh kerana kita mempunyai korpus dokumen yang besar, biarkan satu dokumen menjadi satu rekod input untuk tugasan MapRreduce. Dalam MapReduce, kami hanya boleh menentukan fungsi yang ditentukan pengguna, yang akan kami lakukan (kami akan menggunakan pseudokod seperti python):

def map(doc): 
for word in doc: 
yield word, 1 
def reduce(word, values): 
yield word, sum(values) 

Fungsi peta menukar dokumen input menjadi satu set pasangan (perkataan, 1), kocok secara telus untuk kami mengubahnya menjadi pasangan (perkataan, [1,1,1,1,1,1]), kurangkan jumlah yang ini, kembalikan jawapan akhir bagi perkataan itu.

Memproses log sistem pengiklanan

Contoh kedua diambil daripada amalan sebenar Data-Centric Alliance.

Tugas: terdapat csv-log sistem pengiklanan dalam borang:

<user_id>,<country>,<city>,<campaign_id>,<creative_id>,<payment></p> 
 
11111,RU,Moscow,2,4,0.3 
22222,RU,Voronezh,2,3,0.2 
13413,UA,Kyiv,4,11,0.7 
… 

Ia adalah perlu untuk mengira kos purata untuk memaparkan pengiklanan di bandar-bandar di Rusia.

Penyelesaian:

def map(record): 
user_id, country, city, campaign_id, creative_id, payment = record.split(",") 
payment=float(payment) 
if country == "RU": 
yield city, payment 
def reduce(city, payments): 
yield city, sum(payments)/len(payments) 

Fungsi peta menyemak sama ada kami memerlukan entri ini - dan jika kami melakukannya, ia hanya meninggalkan maklumat yang diperlukan (bandar dan jumlah pembayaran). Fungsi pengurangan mengira jawapan akhir untuk bandar yang diberi senarai semua pembayaran di bandar itu.