Ich bin neu in Hadoop Hive und entwickle eine Reporting-Lösung. Das Problem ist, dass die Abfrageleistung sehr langsam ist (Hive 0.10, HBase 0.94, Hadoop 1.1.1). Eine der Abfragen ist:
%Vor%was ziemlich lange dauert (50s). Ich weiß, ich weiß, der Join ist auf String-Feld und nicht auf Integer, aber die Datensätze sind nicht groß (cca 3300 und 100000 Datensätze). Ich habe versucht, Hinweise auf diese SQL, aber das ging nicht schneller. Die gleiche Abfrage auf MS SQL Server dauert 1s. Auch eine einfache Zählung (*) von Tabelle dauert 7-8s, was schockierend ist (die Tabelle hat 3300 Datensätze). Ich weiß wirklich nicht, was das Problem ist? Irgendwelche Ideen oder habe ich Hadoop falsch interpretiert?
Ja ... Sie haben Hadoop falsch interpretiert. Hadoop und Hive sind auch nicht für Echtzeit-Sachen gedacht. Sie eignen sich am besten für Offline-Batch-Verarbeitung. Sie sind kein Ersatz für RDBMS. Sie können zwar Feineinstellungen vornehmen, aber "absolute Echtzeit" ist nicht möglich. Es gibt eine Menge Dinge, die unter der Haube passieren, wenn Sie eine Bienenstockabfrage ausführen, von der Sie nicht wissen, dass sie Ihnen bekannt ist. Zuerst wird die Hive-Abfrage in einen entsprechenden MR-Job konvertiert, gefolgt von einigen anderen Dingen wie Split-Erstellung, Datensatzgenerierung, Mapper-Generierung usw. Ich würde Hadoop (oder Hive) niemals vorschlagen, wenn Sie Echtzeit benötigen.
Vielleicht möchten Sie Impala für Ihre Echtzeitanforderungen sehen.
Hive ist nicht das geeignete Werkzeug für einen Echtzeitjob. Wenn Sie jedoch die Hadoop-Infrastruktur mit echtzeitfähigem oder schnellem Datenzugriff nutzen möchten, sehen Sie sich HBase
. Der Mehrwert ist der schnelle Zugriff. Nicht sicher, warum Sie Hadoop für Ihre Lösung auswählen, aber Hbase sitzt auf HDFS, was einige Leute wegen der inhärenten Redundanz HDFS (Sie kopieren eine Datei dort einmal und es ist automatisch repliziert), die eine der Gründe, die Sie in Hadoop suchen.
Weitere Informationen: lesen Sie diese Frage
Ich bin mir nicht sicher, wie neu Sie in hadoop sind.Hive gibt Ihnen bei interaktiven Geschwindigkeiten keine Ergebnisse, wie klein die Tabellen sind.Wenn Sie das bereits wussten und versuchten, die Abfrage zu optimieren, Du kannst es unten versuchen:
%Vor%Wenn Sie wissen, dass eine der Tabellen klein genug ist, um in den Speicher zu passen, können Sie eine Kartenseitenverbindung versuchen.
Tags und Links hadoop performance hive