Gibt es ein .NET-Äquivalent zu Apache Hadoop? [geschlossen]


98

Also habe ich Hadoop mit großem Interesse angesehen, und um ehrlich zu sein, ich bin fasziniert, die Dinge werden nicht viel cooler.

Mein einziges kleines Problem ist, dass ich ein C # -Entwickler bin und es in Java ist.

Es ist nicht so, dass ich Java nicht so gut verstehe, wie ich nach Hadoop.net oder NHadoop oder dem .NET-Projekt suche, das den Google MapReduce- Ansatz unterstützt. Kennt jemand einen?

Antworten:


57

Haben Sie sich die Verwendung von Hadoops Streaming angesehen?

Ich benutze es die ganze Zeit in Python :-).

Ich beginne zu erkennen, dass der heterogene Ansatz oft der beste ist und es so aussieht, als ob andere Leute dasselbe tun.

Wenn Sie sich Projekte wie Protokollpuffer oder Facebooks Sparsamkeit ansehen, sehen Sie, dass es manchmal am besten ist, eine App zu verwenden, die in einer anderen Sprache geschrieben ist, und den Kleber in der Sprache Ihrer Präferenz zu erstellen.


2
Dies ist technisch gesehen kein Hadoop in C #, das Streaming entkoppelt die Prozesse und die Daten werden als Zeichenfolgen übergeben, was nicht so effizient sein könnte.
Felice Pollano

13

7
Microsoft hat Dryad abgesagt und beschlossen, bei Hadoop
Arnon Rotem-Gal-Oz

@ ArnonRotem-Gal-Oz: Haben Sie einen Verweis auf diese Aussage von Microsoft?
Abel

4
siehe blogs.technet.com/b/windowshpc/archive/2011/11/11/… - "Im Rahmen dieser Version haben wir auch die Vorschau-Version von LINQ auf HPC aktualisiert. Dies wird jedoch die endgültige Vorschau sein und wir Planen Sie nicht, eine Produktionsversion voranzutreiben. Entsprechend unserer Ankündigung im Oktober auf der PASS-Konferenz werden wir uns darauf konzentrieren, Apache Hadoop sowohl auf Windows Server als auch auf Windows Azure zu bringen ... "
Arnon Rotem-Gal-Oz

13

Vor kurzem hat MySpace das .NET MapReduce-Framework Qizmt als Open Source veröffentlicht, sodass dies auch ein potenzieller Konkurrent in diesem Bereich ist.


2
Ihre Lizenz ist GPL; (Wäre toll, wenn sie etwas weniger restriktives gewählt hätten ...
IgorK

3
Es ist wirklich unwahrscheinlich, dass Ihnen die GPL in diesem Fall im Weg steht. Solange Sie Ihre Änderungen nicht außerhalb Ihrer Organisation an die Quelle (falls vorhanden) verteilen, müssen Sie keinen Ihrer Codes freigeben.
Foxxtrot

Wir vertreiben unser Closed-Source-Produkt (als Produktunternehmen). Und wenn wir versucht haben, uns auf eine GPL-Softwarekomponente zu verlassen, müssen wir automatisch auch unsere Quellen verteilen. Es ist nicht LGPL, wo die Aufnahme einer Bibliothek in ein Closed-Source-Projekt in Ordnung ist :(
IgorK

Ganz fair. Ich denke nur, dass die meisten Leute, die ein Map-Reduce-Framework verwenden, diese Einschränkung nicht haben werden. Trotzdem verstehe ich MySpaces Geschäftsmodell für die Veröffentlichung als GPL nicht, soweit ich feststellen kann, dass sie es nicht separat lizenzieren.
Foxxtrot

Ich verstehe auch nicht! Wenn jemand einen "MySpace-Killer" erstellen wollte, ist er wahrscheinlich zufrieden, wenn er ihn intern verwendet (ohne Neuverteilung von Binärdatei oder Quelle). Ich denke, die Verwendung von AGPL (Affero GPL) wäre besser geeignet, um eine Lücke mit öffentlichen Webdiensten zu schließen, die diese verwenden und keine Quelle verbreiten ... Traurig und seltsam: /
IgorK

10

Ich habe Ihre Frage in meiner Frage hier beantwortet

Um es hier in der Quelle zu sagen:

Microsoft ließ seine Alternative ( Dryade ) zugunsten von Hadoop. Nächstes Jahr werden sie MS SQL Server 2012 mit Hadoop-Integration veröffentlichen. Die Unterstützung für Azure und Windows Server wird gerade entwickelt.

Es wird im ersten Halbjahr 2012 verfügbar sein.

Hadoop ist die führende BigData- Plattform und wird von Open Source und proprietären Quellen (Java, .Net, Python, ...) unterstützt, selbst wenn Oracle sie übernimmt.

Wenn Sie etwas entwickelt haben, sollten Sie warten, wenn Sie sich auf der .Net-Plattform befinden.

Weitere Informationen darüber, was möglich ist, finden Sie hier


5

Ich würde sagen, dass DryadLinq das ist, was wir .NET-Leute Hadoop am nächsten kommen. Aber es kommt darauf an, wofür Sie Hadoop verwenden möchten. Wenn Sie nach einem optimierten DFS-System ( Self Maintenance Distributed File) suchen, ist DryadLINQ nicht das, wonach Sie suchen. Es hat eine Analogie zur DFS, aber Sie müssen die Partitionen manuell erstellen und jede Partition verteilen.

Davon abgesehen ist DryadLINQ wirklich wunderbar, wenn es sich um den verteilten Ausführungsaspekt von Hadoop handelt, den Sie suchen (und nein, ich bin nicht mit MS verbunden). Solange Sie ein Microsoft HPC- Cluster-Setup haben, ist es wirklich einfach, mit DryadLINQ loszulegen.

Der Code, den Sie schreiben, ist wirklich nur reiner LINQ-Code, außer dass IEnumerable<T>Sie den LINQ nicht ausführen müssen, sondern ihn ausführen müssen PartitionedTable<T>(die selbst erstellte verteilte Datenstruktur).

Was an DryadLINQ wirklich cool war, ist die schnelle Bearbeitungszeit (versuchen, testen, anpassen, wiederholen) bei der Entwicklung von Algorithmen. Sie schreiben einfach LINQ-Code, um Ihre Berechnungen durchzuführen, und DryadLINQ kümmert sich um den gesamten verteilten Ausführungsteil. Es ist das natürlichste Analogon, auf das ich gestoßen bin, das das Schreiben von Code für die verteilte Verarbeitung genauso macht wie das Schreiben von Code für die Verarbeitung einzelner Prozesse.


4

Sie können sich etwas wie RavenDb ansehen, das MapReduce für eine relativ große Datenmenge sehr gut unterstützt. Da es in .Net integriert ist, ist eine ordnungsgemäße LINQ-Client-API verfügbar.

http://ravendb.net/

Um Ihnen den Einstieg zu erleichtern, können Sie meinen Blog entery lesen .



2

Microsoft ist dabei, HDInsight einzuführen , das als "100% Apache-kompatible Hadoop-Distribution" in Rechnung gestellt wird.

Es ist sowohl unter Windows Server als auch als Windows Azure-Dienst verfügbar.


1
HDInsight ist die Hortonworks-Distribution. Andere große Anbieter arbeiten ebenfalls mit Microsoft zusammen, um ihre Distributionen auf Azure anzubieten. In Bezug auf die Frage: Es gibt .NET-Schnittstellen zu HDInsight, aber HDInsight selbst ist nicht .NET
Ashtonium


1

Sie können Hadoop jetzt direkt in .NET verwenden. Microsoft hat hierfür ein SDK veröffentlicht.

https://hadoopsdk.codeplex.com/

Dies bedeutet natürlich die Verwendung des Java-basierten Hadoop-Netzwerks. Aber spielt es eine Rolle, ob der Server in Java ausgeführt wird? Ich bin sicher, dass jemand versuchen könnte, es zu portieren, aber ich denke nicht, dass es eine gute Idee wäre, da Unternehmen bereits die Java-Version unterstützen und ich denke nicht, dass der .NET-Port die gleiche Aufmerksamkeit erhalten wird.



1

Intern hat Microsoft Cosmos verwendet. Dies wurde außerhalb von Microsoft über Azure verfügbar gemacht. Es heißt Azure Data Lake Analytics und Azure Data Lake Store . Azure Data Lake Analytics ist eine Art Garn als Dienst und Azure Data Lake Store WebHDFS als Dienst. Die erste Version von Azure Data Lake Analytics hostet nur U-SQL, eine Sprache, die auf Transact-SQL + C # basiert.



0

dryad / linq wird produziert und in Kürze veröffentlicht: http://blogs.technet.com/b/windowshpc/archive/2011/07/07/announcing-linq-to-hpc-beta-2.aspx Verwendung in Verbindung mit Microsoft HPC für eine leistungsstarke, clusterbasierte Lösung zum Abfragen unstrukturierter Daten


/ wird bald veröffentlicht / wird es nicht, siehe Antworten oben
om-nom-nom

1
Verdächtige Dryade und HDInsight sind im Widerspruch zueinander. Hören Sie weiter, Microsoft wird Dryad für HDInsight
Swab.Jat

0

Wie bereits erwähnt, ist DryadLINQ ein Programmierframework, mit dem Entwickler LINQ-Abfragen schreiben und in einem Cluster ausführen können, ähnlich wie bei MapReduce. Das DryadLINQ-Projekt wurde kürzlich unter der Apache-Lizenz auf GitHub veröffentlicht. Die Version enthält Unterstützung für die Ausführung auf YARN-Clustern (einschließlich Azure HDInsight-Clustern).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.