3.1 Sajarah munculé istilah BigData

Istilah Big Data muncul relatif anyar. Google Trends nuduhake wiwitan wutah aktif ing panggunaan frasa kasebut wiwit taun 2011:

Ing wektu sing padha, mung wong kesed ora nggunakake istilah saiki. Utamane asring, istilah kasebut digunakake kanthi ora cocog dening para pemasar. Dadi apa Big Data tenan? Awit aku mutusake kanggo nyatakake kanthi sistematis lan nyorot masalah kasebut, perlu kanggo nemtokake konsep kasebut.

Ing laku, aku ketemu karo definisi beda:

  • Big Data yaiku nalika ana luwih saka 100GB data (500GB, 1TB, apa wae sing disenengi).
  • Big Data minangka data sing ora bisa diproses ing Excel.
  • Big Data yaiku data sing ora bisa diproses ing komputer siji.

Lan malah iki:

  • Big Data umume data apa wae.
  • Big Data ora ana, iki diciptakake dening para pemasar.

Aku bakal tetep ing definisi saka wikipedia:

Big data minangka serangkaian pendekatan, alat lan metode kanggo ngolah data terstruktur lan ora terstruktur kanthi volume gedhe lan keragaman sing signifikan kanggo entuk asil sing bisa dingerteni manungsa sing efektif ing kahanan pertumbuhan terus-terusan, distribusi liwat akeh simpul jaringan komputer, dibentuk. ing pungkasan taun 2000-an, alternatif kanggo sistem manajemen basis data tradisional lan solusi kelas intelijen bisnis.

Mangkono, dening Big Data aku bakal ngerti ora sawetara jumlah tartamtu saka data lan ora malah data dhewe, nanging cara Processing, sing ngidini mbagekke pangolahan informasi. Cara kasebut bisa ditrapake kanggo kumpulan data gedhe (kayata isi kabeh kaca ing Internet) uga dataset cilik (kayata isi kuliah iki).

Ing ngisor iki sawetara conto sing bisa dadi sumber data sing mbutuhake teknik data gedhe:

  • Log prilaku pangguna ing Internet
  • Sinyal GPS saka mobil kanggo perusahaan transportasi
  • Data dijupuk saka sensor ing Large Hadron Collider
  • Buku digital ing Perpustakaan Negara Rusia
  • Informasi babagan transaksi kabeh pelanggan bank
  • Informasi bab kabeh tumbas ing chain toko gedhe, etc.

Jumlah sumber data saya akeh kanthi cepet, tegese teknologi pangolahan data saya tambah akeh.

3.2 Prinsip data gedhe

Adhedhasar definisi Big Data, kita bisa ngrumusake prinsip dhasar nggarap data kasebut:

1. skalabilitas horisontal. Amarga bisa ana jumlah data sing arbitrarily, sistem apa wae sing ngolah data gedhe kudu bisa diperluas. Volume data tambah kaping 2 - jumlah wesi ing kluster tambah kaping 2 lan kabeh terus bisa digunakake.

2. Toleransi kesalahan. Prinsip skalabilitas horisontal nuduhake manawa bisa ana akeh mesin ing kluster. Contone, kluster Hadoop Yahoo duwe luwih saka 42.000 mesin (sampeyan bisa ndeleng ukuran kluster ing organisasi ing tautan iki). Iki tegese sawetara mesin iki bakal dijamin gagal. Praktek data gedhe kudu ngerti babagan gangguan kasebut lan bisa urip tanpa ana akibat sing signifikan.

3. Data lokalitas. Ing sistem distribusi gedhe, data disebarake ing pirang-pirang mesin. Yen data ana ing siji server lan diproses ing server liyane, biaya transfer data bisa ngluwihi biaya pangolahan kasebut. Mulane, salah sawijining prinsip sing paling penting kanggo ngrancang solusi BigData yaiku prinsip lokalitas data - yen bisa, kita ngolah data ing mesin sing padha sing disimpen.

Kabeh alat data gedhe modern ngetutake telung prinsip kasebut kanthi cara siji utawa liyane. Kanggo ngetutake, perlu nggawe sawetara metode, metode lan paradigma kanggo ngembangake piranti pangembangan data. Salah sawijining metode paling klasik sing bakal dakanalisis ing kuliah saiki.

3.3 MapReduce

MapReduce minangka model pangolahan data sing disebarake sing diusulake dening Google kanggo ngolah data sing akeh ing klompok komputer. MapReduce uga digambarake kanthi gambar ing ngisor iki:

MapReduce nganggep manawa data kasebut diatur dadi sawetara cathetan. Pangolahan data dumadi ing 3 tahap:

1. Tahap peta . Ing tataran iki, data wis preprocessed nggunakake map () fungsi, kang ditetepake dening pangguna. Tugas ing tahap iki yaiku kanggo ngolah lan nyaring data. Operasi kasebut meh padha karo operasi peta ing basa pemrograman fungsional - fungsi khusus ditrapake kanggo saben rekaman input.

Fungsi map () sing ditrapake ing rekaman input siji ngasilake akeh pasangan nilai kunci. Setel - yaiku, mung bisa ngasilake siji rekaman, bisa uga ora ngasilake apa-apa, utawa bisa ngasilake sawetara pasangan nilai kunci. Apa sing bakal ana ing kunci lan regane gumantung marang pangguna, nanging kunci kasebut minangka perkara sing penting banget, amarga data kanthi kunci siji ing mangsa ngarep bakal dadi salah sawijining fungsi nyuda.

2. Acak tataran. Iku dadi unnoticed dening pangguna. Ing tataran iki, output saka fungsi map "binned" - saben bin cocog siji tombol output saka tataran peta. Ing mangsa ngarep, kranjang iki bakal dadi input kanggo nyuda.

3. Tahap Ngurangi. Saben "basket" kanthi nilai sing digawe ing tataran acak entuk input fungsi nyuda ().

Fungsi nyuda diwenehake dening pangguna lan ngetung asil pungkasan kanggo "keranjang" siji . Himpunan kabeh nilai sing dibalekake dening fungsi nyuda () minangka asil pungkasan saka tugas MapReduce.

Sawetara fakta tambahan babagan MapReduce:

  1. Kabeh mlaku saka fungsi map bisa independen lan bisa mlaku ing podo karo, kalebu ing mesin cluster beda.
  2. Kabeh mlaku saka fungsi nyuda bisa independen lan bisa mlaku ing podo karo, kalebu ing mesin kluster beda.
  3. Acak internal nggantosi Urut podo, supaya uga bisa digunakake ing mesin cluster beda. Poin 1-3 ngidini sampeyan ngetrapake prinsip skalabilitas horisontal .
  4. Fungsi peta biasane digunakake ing mesin sing padha ing ngendi data disimpen - iki nyuda transmisi data liwat jaringan (prinsip lokalitas data).
  5. MapReduce tansah scan data lengkap, ora ana indeks. Iki tegese MapReduce ora bisa ditrapake nalika respon dibutuhake kanthi cepet.

3.4 Conto tugas sing ditanggulangi kanthi efektif karo MapReduce

cacahing tembung

Ayo dadi miwiti karo tugas klasik - Word Count. Tugas kasebut dirumusake kaya ing ngisor iki: ana korpus gedhe saka dokumen. Tugase yaiku ngetung jumlah kaping pirang-pirang kedadeyan ing korpus kanggo saben tembung sing kedadeyan paling ora sepisan ing korpus.

Solusi:

Amarga kita duwe korpus dokumen sing akeh, supaya siji dokumen dadi rekaman input kanggo tugas MapRreduce. Ing MapReduce, kita mung bisa nemtokake fungsi sing ditetepake pangguna, sing bakal ditindakake (kita bakal nggunakake pseudocode kaya python):

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

Fungsi map ngowahi dokumen input dadi pasangan pasangan (tembung, 1), acak transparan kanggo kita dadi pasangan (tembung, [1,1,1,1,1,1]), nyuda jumlah iki, bali wangsulan pungkasan kanggo tembung kasebut.

Ngolah log sistem iklan

Conto kapindho dijupuk saka praktik nyata Data-Centric Alliance.

Tugas: ana csv-log saka sistem iklan saka formulir:

<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 
… 

Sampeyan perlu kanggo ngetung biaya rata-rata kanggo nampilake iklan ing kutha-kutha Rusia.

Solusi:

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 map mriksa yen kita butuh entri iki - lan yen kita nindakake, mung ninggalake informasi sing dibutuhake (kutha lan jumlah pembayaran). Fungsi nyuda ngetung jawaban final kanggo kutha diwenehi dhaftar kabeh pembayaran ing kutha.