Politik

Nyttiga IT-kunskaper: lär dig programmera Big Data med MapReduce, Jaql, Pig och Hive

Klicka på Hive.

De flesta IT-intresserade har vid det här laget hört talas om Big Data eller Massdata och att man använder det öppna kod-verktyget Hadoop för att manipulera de ofta gigantiska datamängderna som ingår i Massada.

Problemet med stora datamängder är att man inte bara kan ladda upp dom på en enda dator och sen tuta och köra. För att kunna hantera så mycket data på de billiga Intelservrar som för det mesta är vad som används i datormolnen eller i datahallarna, så måste man dela upp datan i många mindre delar och sen distribuera datan och analysjobben till ett visst antal serverar, säg ett dussin eller hundra servrar. Sen kör man de distribuerade analysjobben på dessa servrar, en s.k. serverkluster. Vilket också kallas parallell programmering.

Vad som gör det här möjligt är att Hadoop är utrustat med ett parallellt filsystem: HDFS eller Hadoop Distributed File System.

De flesta vet också att den parallella analys-metod som används härstammar från Googles MapReduce-metodik. Och att det är det som gör Googles sökfunktion så blixsnabb.

Så om man t.ex. vill räkna alla ord i en gigantisk textfil så skär man upp filen i säg hundra olika delar. kopierar över delarna till hundra olika servrar tillsammans med den Map-Reduce kod som ska räknar orden. Sen kör man jobben parallellt på varje server, i Map-fasen. När den är klar så skickar varje dator sen tillbaka resultatet, dvs hur många ord man hittade i den delfil som man tröskade igenom, till den centrala servern, som i den andra, Reduce-fasen räknar samman alla de hundra delsvaren till en slutsumma.

Map-Reduce-koden skrevs ursprungligen i Java men kan då bli både krånglig och svår att hantera eftersom det för det mesta rör sig om betydligt mer komplicerade problem än att räkna ord.

Men lyckligtvis så finns det andra och enklare sätt att utföra Map Reduce i Hadoop. Ett sätt är att använda ett ramverk som heter Hive. Precis som Pig, se nedan, så använder Hive en version av SQL-språket för att göra det så enkelt som möjligt att manipulera datan. Vilket på sitt sätt är rätt ironiskt eftersom det just är NoSQL-rörelsen som förknippas med BigData. Men man får nå komma ihåg att NoSQL betyder Not Only SQL.

En av de största Hive-användarna är i Silicon Valley är Facebook, kolla den här intressanta presentationen: Facebooks Petabyte Scale Data Warehouse Using Hive and Hadoop.

Den här bilden visar hur enkelt HiveQL är jämfört med traditionell MapReduce.

Ett annat ramverk är Apache Pig med ett språk som heter Pig Latin, alltså på svenska Fikonspråket.

Pig Latin, som ursprungligen skapades på Yahoo, är konstruerat efter samma princip som SQL-språket, dvs för att göra det enkelt att skriva Map Reduce-jobb utan att behöva programmera en massa komplicerad Java-kod.

Här är ett exempel som visar hur mycket enklare Pig är än Java.

grunt> A = load ‘mydata’ using PigStorage()
as (a, b, c);
grunt>B = group A by a;
grunt> C = foreach B {
D = distinct A.b;
generate flatten(group), COUNT(D);
}
grunt>

För den som undrar så är “grunt>” kommandotolken.

Det andra sättet att skriva MapReduce-jobb är att formatera datan i JSON-format, och sen använda Jaql-språket för att utföra analysen. JSON står för JavaScript Object Notation och är ännu ett exempel på hur viktigt JavaScript är på dagens webb.

De flesta vet säkert att Node.js och Coffee Script båda baserade på JavaScript, idag är oerhört populära här i Silicon Valley.

JSON har allt mer tagit över från det alltför komplicerade XML-formatet på webben och det var därför naturligt att JSON och Jaql också skulle komma att användas i Hadoop.

Här är ett rätt intetsägande exempel på hur JAQL ser ut:

//
// Bind to variable
$log = read(hdfs(“log”));
$user = read(hdfs(“user”));

//
// Query 1: filter and transform
$log
-> filter $.from == 101
-> transform { mandatory: $.msg };

// result …
[
{
“mandatory”: “Hello, world!”
}
]

Att installera och leka med Hadoop på en enda dator är inte alls svårt, det är dock bra om man har säg 8-12 GB minne. San Francisco-företaget Cloudera har t.o.m. en nedladdningsbar virtuell avbildning som är färdiginstallerad. Det är bara att ladda ner den och köra.

För den som vill skaffa sig spetskunskaper på IT-området är alltså Hadoop, Hive, Pig och Jaql mycket bra att lära sig. Håller själv på att lära mig de här språken och har sällan haft så kul.

Det här är en mycket stor grej, nära kopplad till en annan stor grej, nämligen datormolnen, där de här jobben oftast körs. Men man behöver inte tillgång till några datormoln för att kunna köra MapReduce med Jaql, Hive eller Pig. Det kan man faktiskt göra med helt öppen kod och en vanlig kraftig hemdator med litet extra minne.

Så om du är intresserad av data och programmering så är det här ett utomordentligt matnyttigt, och inte minst fascinerande, ämne att lära sig.

Axplock från den nordiska pressen:

Computer Sweden 20 senaste nyhet

[tags]Online Privacy , Cybersecurity , Internet , Big Data , Data , Nstic , Privacy , Trust Framework , Technology News, Big Data Hadoop, Hadoop, NoSQL, NoSQL Big Data, Big Data Analytics, Google Map Reduce, Amazon Dynamo DB, Cloudera, Hortonworks, MapR, JAQL, JSON,Pig, Hive HiveQL[/tags]