Vad är Apache Hadoop i Azure HDInsight?

Apache Hadoop refererar till ett ekosystem av program med öppen källkod som är ett ramverk för distribuerad bearbetning och analys av stordata-uppsättningar i kluster. Hadoop-ekosystemet innehåller relaterad programvara och verktyg, inklusive Apache Hive, Apache HBase, Spark, Kafka och många andra.

Azure HDInsight är en fullständigt hanterad analystjänst med fullständigt spektrum med öppen källkod i molnet för företag. Med Apache Hadoop-klustertypen i Azure HDInsight kan du använda Apache Hadoop Distributed File System (HDFS), Apache Hadoop YARN-resurshantering och en enkel MapReduce-programmeringsmodell för att bearbeta och analysera batchdata parallellt. Hadoop-kluster i HDInsight är kompatibla med Azure Blob Storage, Azure Data Lake Storage Gen1 eller Azure Data Lake Storage Gen2.

Mer information om tillgängliga stackkomponenter med Hadoop-teknik i HDInsight finns i Komponenter och versioner som är tillgängliga med HDInsight. Mer information om Hadoop i HDInsight finns på sidan om Azure-funktioner för HDInsight.

Vad är MapReduce

Apache Hadoop MapReduce är ett programvaruramverk för att skriva jobb som bearbetar stora mängder data. Indata delas upp i oberoende segment. Varje segment bearbetas parallellt över noderna i klustret. Ett MapReduce-jobb består av två funktioner:

  • Mappning: Förbrukar indata, analyserar dem (vanligtvis med filter- och sorteringsåtgärder) och genererar tupplar (nyckel/värde-par)

  • Reducer: Förbrukar tupplar som genereras av Mapper och utför en sammanfattningsåtgärd som skapar ett mindre, kombinerat resultat från Mapper-data

Ett exempel på ett grundläggande ordantal för MapReduce-jobb illustreras i följande diagram:

HDI.WordCountDiagram.

Utdata för det här jobbet är ett antal av hur många gånger varje ord inträffade i texten.

  • Mapparen tar varje rad från indatatexten som indata och delar upp den i ord. Det genererar ett nyckel/värde-par varje gång ett ord förekommer i ordet följs av ett 1. Utdata sorteras innan de skickas till reducer.
  • Reducern summerar dessa enskilda antal för varje ord och genererar ett enda nyckel/värde-par som innehåller ordet följt av summan av dess förekomster.

MapReduce kan implementeras på olika språk. Java är den vanligaste implementeringen och används i demonstrationssyfte i det här dokumentet.

Utvecklingsspråk

Språk eller ramverk som baseras på Java och den virtuella Java-datorn kan köras direkt som ett MapReduce-jobb. Exemplet som används i det här dokumentet är ett Java MapReduce-program. Andra språk än Java, till exempel C#, Python eller fristående körbara filer, måste använda Hadoop-strömning.

Hadoop-strömning kommunicerar med mapparen och reducern via STDIN och STDOUT. Mapparen och reducern läser data en rad i taget från STDIN och skriver utdata till STDOUT. Varje rad som läss eller genereras av mapparen och reducern måste vara i formatet för ett nyckel/värde-par, avgränsat med ett fliktecken:

[key]\t[value]

Mer information finns i Hadoop Streaming.

Exempel på hur du använder Hadoop-strömning med HDInsight finns i följande dokument:

Var börjar jag?

Nästa steg