suchen
HeimDatenbankMySQL-Tutorial关于Hadoop和Cassandra性能问题的讨论

本文由 ImportNew - 唐尤华 翻译自 apmblog.compuware.com。如需转载本文,请先参见文章末尾处的转载要求。 最近几周里,我和同事参加了在旧金山港湾区的Hadoop和Cassandra高峰论坛。如此密集地与众多有经验的大数据专家进行探讨是一件非常享受的事情。感谢

本文由 ImportNew - 唐尤华 翻译自 apmblog.compuware.com。如需转载本文,请先参见文章末尾处的转载要求。

最近几周里,我和同事参加了在旧金山港湾区的Hadoop和Cassandra高峰论坛。如此密集地与众多有经验的大数据专家进行探讨是一件非常享受的事情。感谢我们的合作伙伴DataStax和Hortonworks主办了这场盛会!与此同时,我也看到性能问题已经成为了社区里讨论的主要内容。我们搜集了很多典型大数据性能问题的反馈,也惊讶于性能问题带来的挑战。因为与会者都是专家,因此通用性问题和基础的集群监控方法不在讨论之列。本文会介绍关于Hadoop和Cassandra的高级问题。

我整理了最有意思和最常见的Hadoop和Cassandra部署问题:

Hadoop焦点问题

Map Reduce数据本地性问题

数据本地性是Hadoop Map/Reduce的核心优势,map代码会在数据所处的节点上执行。然而有意思的是,很多人在实践中发现情况并非总是如此。他们发现了以下例外情况:

  • 预测执行
  • 异构的分布式集群
  • 数据分布和位置
  • 数据布局和输入分流

这些问题在大集群里出现更加频繁,也就是说数据节点越多本地化数据就越少。由于越大的集群完全相同的可能性就越小,一些节点的更新速度会比其他节点更快导致计算比例失衡。预测执行即使没有本地数据也会占用计算能力。问题数据节点可能会计算其他内容,这会导致另一个节点执行非本地处理。问题的根源可能在数据布局和输入分流上。无论如何,处理非本地数据会造成网络的扩展性问题,使得网络成为瓶颈。不仅如此,由于数据本地性不容易观察诊断这些问题非常困难。

为了提高数据本地性,你首先需要检测你的任务(job)中哪些有数据本地性问题或者会随着时间性能下降。通过APM(每分钟操作次数)方案,你可以知道哪些任务访问了什么数据节点。解决本地性问题更为复杂,包括更改数据位置和数据布局、使用不同的调度器或者简单改变任务的映射器(mapper)和减速器槽(reducer slot)。接下来,通过执行同样的工作你可以验证新方案是否能带来更好的本地数据比率。

低效任务代码和Hadoop工作量“分析”

接着我们又证实了一个有趣的观点:很多Hadoop工作量非常低效。请注意,这不是Hadoop的问题而是执行任务的问题。然而,在更大的Hadoop集群里“分析”任务是最主要的痛点。仅仅黑盒方式的监控是不够的,传统的分析器不能应对Hadoop集群的分布式特点。针对这个问题,我们的解决方案得到了很多资深Hadoop开发者的认可。我们还收到了很多关于如何让我们的Hadoop任务“分析”更加有效的有趣反馈。

TaskTracker性能及其对置乱时间的影响

众所周知,置乱是Haddop Job中对性能影响最主要的因素。在很多Hadoop性能调优的文章里都描述了优化图中间的数据(比如使用组合其)、(使用拆分器)置乱分布和纯粹的读/合并性能(线程个数、管理低端内存)。但是很少有文章谈及降低特定TaskTracker速度,这种方案在很多资深“Hadooper”中间已经得到了广泛地讨论。

当计算节点处于高压状态、硬件能力不足或者进入层叠效果时,本地的TaskTracker就会受到负面影响。更简单地说,在大集群中的一些节点会因此降低性能!

结果就是TaskTracker节点不能为还原器提供快速置乱数据,或者可能在进行操作时发生错误。基本上所有还原器都会出现该问题,因为置乱是整个任务执行时间的瓶颈而且会不断增加。在小集群上我们可以监控一组运行的TaskTracker性能,然而在现实中的集群上这是不可行的。监控基于中枢的平均值会掩盖触发该问题的任务,所以不能确定究竟是哪个TaskTracker造成的问题以及背后的原因。

解决方法是采用基线方式,配置PurePath/PureStack模型。对TaskTracker请求做基线能够解决平均值和监控问题,通过这种方法,如果发生TaskTracker mapOutput性能问题我们可以得到即时通知,而且能够及时确认是哪个TaskTracker出现的问题。接下来,我们能够通过通过JVM主机的健康状况定位究竟是基础设施、Hadoop配置或是新操作系统造成了问题。最后,通过追踪所有任务、作业(task)以及mapOutput请求各自的任务,我们可以知道究竟是哪个任务触发了TaskTracker性能问题以及哪些任务受其影响。

NameNode和DataNode变慢

与TaskTracker类似,NameNode和DataNode也会对任务性能产生影响。NameNode或特定DataNode变慢会对整个集群产生显著的影响。解决的办法可以对请求建立基线,进行检测并自动检测性能退化。同样地我们也可以知道哪些任务和客户端受到NameNode和DataNode减速的影响,并判断是基础设施、高使用率还是服务发生的错误。

Cassandra 焦点问题

Spotify在Cassandra高峰论坛上的演讲是最棒的。如果你正在使用或者计划使用Cassandra强烈向你推荐!

读操作用时随着时间性能退化

在第一次部署Cassandra时运行速度非常快,但是读操作用时随着时间不断增加。实际上所有的操作随着时间推移都会有类似的问题,对跨SStable的读取和删除行操作都会导致死节点。所有问题都可以归咎于访问模式和模式设计错误,而且通常都与数据相关。如果你向同一行(row)长时间(几个月)不断写数据,那么这一行会扩散到很多SStable。读取该行数据将变得缓慢,然而访问更“新”的行(位于同一个SSTable)还是很快的 。对同一行不断进行删除和插入情况会更糟糕,不仅这一行的数据会到处扩散而且会充满很多死节点,读取时效率会非常恐怖。然而,平均值数据只是缓慢地增加(这就是均值效应)。实际上“老”行的性能会急剧下降,而“新”行的速度仍然很快。

为了避免这种情况的发生,在应用程序中绝不要经常删除数据,也绝对不要长时间向同一行写入数据。要发现这个问题你应当首先为Cassandra一组列(column)的读请求制作基线。与均值相比基线方法能够在分布式环境下检测变化,并通知你哪些请求会性能退化哪些仍然保持快速。除此之外,为实际终端用户的Cassandra请求进行分类能够助你快速定位问题。

慢节点会影响整个集群

与很多真实世界的应用程序一样,Cassandra节点会因为各种因素变慢(硬件、压缩、GC、网络、磁盘等)。?Cassandra是一个集群化数据库,每一行都在集群里存在很多次,每次写请求都会发送给包含该行的所有节点(甚至是级别相同的节点)。单个节点失效不是大问题,因为其他节点包含了相同的数据所有读写请求都能够继续正常进行。理论上一个超级慢的节点不会带来问题,除非我们明确指定向同一级别的“所有”节点请求数据。然而在内部,每个节点都有一个协调队列等待所有请求完成,即使他应当在请求完成时就马上向客户端作出回应。该队列能够应对一个超级慢的节点,并且迅速地指出单个节点不能响应请求。然而这会让这个集群不能响应任何请求。

这个问题的解决包含两方面。如果可以,使用一个类似Astyanax的令牌客户端。通过直接与包含数据的节点沟通,该客户端能够高效地跳过协调队列问题。除此之外,你应当对服务器节点的Cassandra请求建立基线,当节点变慢时给出警告。说起来奇怪,关闭问题节点也可以暂时解决问题,因为Cassandra能够几乎立刻处理该问题。

读往返次数太多/读数据量过大

Cassandra的另一个典型性能问题来自我们习惯了SQL,这个问题对于Cassandra入门者尤其典型。这是一个数据库设计问题,事务中包含了太多请求或读取大量数据。这不是Cassandra本身的问题,事实是进行太多请求或者读取大量数据会减慢实际事务的处理速度。这个问题可以很容易检测并且通过APM方法发现,而解决办法往往需要对代码和数据模型进行改动。

总结

Hadoop和Cassandra都是扩展性非常好的系统!但是通常这种可扩展性不能解决性能问题,二者都不能避免而且简单的误用也不能解决。

这些系统上出现的特定问题都不会在其他系统上出现。其他虽然不是新问题但是从未有在这样大规模的分布式系统上出现。由于可扩展性和规模的问题,这些问题都难于诊断(尤其是Hadoop)而且会产生巨大的影响(比如Cassandra集群停止)。性能分析专家可以举杯庆祝了,未来的很长一段时间他们都会有做不完的工作。

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
MySQL: Eine Einführung in die beliebteste Datenbank der WeltMySQL: Eine Einführung in die beliebteste Datenbank der WeltApr 12, 2025 am 12:18 AM

MySQL ist ein Open Source Relational Database Management -System, das hauptsächlich zum schnellen und zuverlässigen Speicher und Abrufen von Daten verwendet wird. Sein Arbeitsprinzip umfasst Kundenanfragen, Abfragebedingungen, Ausführung von Abfragen und Rückgabergebnissen. Beispiele für die Nutzung sind das Erstellen von Tabellen, das Einsetzen und Abfragen von Daten sowie erweiterte Funktionen wie Join -Operationen. Häufige Fehler umfassen SQL -Syntax, Datentypen und Berechtigungen sowie Optimierungsvorschläge umfassen die Verwendung von Indizes, optimierte Abfragen und die Partitionierung von Tabellen.

Die Bedeutung von MySQL: Datenspeicherung und -verwaltungDie Bedeutung von MySQL: Datenspeicherung und -verwaltungApr 12, 2025 am 12:18 AM

MySQL ist ein Open Source Relational Database Management -System, das für Datenspeicher, Verwaltung, Abfrage und Sicherheit geeignet ist. 1. Es unterstützt eine Vielzahl von Betriebssystemen und wird in Webanwendungen und anderen Feldern häufig verwendet. 2. Durch die Client-Server-Architektur und verschiedene Speichermotoren verarbeitet MySQL Daten effizient. 3. Die grundlegende Verwendung umfasst das Erstellen von Datenbanken und Tabellen, das Einfügen, Abfragen und Aktualisieren von Daten. 4. Fortgeschrittene Verwendung beinhaltet komplexe Abfragen und gespeicherte Verfahren. 5. Häufige Fehler können durch die Erklärungserklärung debuggen. 6. Die Leistungsoptimierung umfasst die rationale Verwendung von Indizes und optimierte Abfrageanweisungen.

Warum MySQL verwenden? Vorteile und VorteileWarum MySQL verwenden? Vorteile und VorteileApr 12, 2025 am 12:17 AM

MySQL wird für seine Leistung, Zuverlässigkeit, Benutzerfreundlichkeit und Unterstützung der Gemeinschaft ausgewählt. 1.MYSQL bietet effiziente Datenspeicher- und Abruffunktionen, die mehrere Datentypen und erweiterte Abfragevorgänge unterstützen. 2. Übernehmen Sie die Architektur der Client-Server und mehrere Speichermotoren, um die Transaktion und die Abfrageoptimierung zu unterstützen. 3. Einfach zu bedienend unterstützt eine Vielzahl von Betriebssystemen und Programmiersprachen. V.

Beschreiben Sie InnoDB-Verriegelungsmechanismen (gemeinsame Schlösser, exklusive Schlösser, Absichtssperrungen, Aufzeichnungsschlösser, Lückensperrungen, Sperren der nächsten Schlüsse).Beschreiben Sie InnoDB-Verriegelungsmechanismen (gemeinsame Schlösser, exklusive Schlösser, Absichtssperrungen, Aufzeichnungsschlösser, Lückensperrungen, Sperren der nächsten Schlüsse).Apr 12, 2025 am 12:16 AM

Zu den Verriegelungsmechanismen von InnoDB gehören gemeinsame Schlösser, exklusive Schlösser, Absichtsschlösser, Aufzeichnungsschlösser, Lückensperrungen und nächste Schlüsselschlösser. 1. Shared Lock ermöglicht es Transaktionen, Daten zu lesen, ohne dass andere Transaktionen lesen. 2. Exklusives Schloss verhindert, dass andere Transaktionen Daten lesen und ändern. 3.. Intention Lock optimiert die Sperreffizienz. 4. Rekord -Sperr -Indexdatensatz. 5. Gap Lock Locks Index -Aufzeichnungslücke. 6. Die nächste Schlüsselsperrung ist eine Kombination aus Datensatzsperr- und Lückensperrung, um die Datenkonsistenz zu gewährleisten.

Was sind häufige Ursachen für die schlechte MySQL -Abfrageleistung?Was sind häufige Ursachen für die schlechte MySQL -Abfrageleistung?Apr 12, 2025 am 12:11 AM

Die Hauptgründe für die schlechte MySQL -Abfrageleistung sind die Verwendung von Indizes, die Auswahl der falschen Ausführungsplan durch den Abfrageoptimierer, die unangemessene Tabellenentwurf, das übermäßige Datenvolumen und die Sperrwettbewerbe. 1. Kein Index verursacht langsame Abfragen, und das Hinzufügen von Indizes kann die Leistung erheblich verbessern. 2. Verwenden Sie den Befehl Erklärung, um den Abfrageplan zu analysieren und den Optimiererfehler herauszufinden. 3. Die Rekonstruktion der Tabellenstruktur und Optimierung der Verbindungsbedingungen kann die Probleme mit dem Design der Tabelle verbessern. 4. Wenn das Datenvolumen groß ist, werden Strategien für Partitionierungs- und Tabellenabteilung angewendet. 5. In einer hohen Parallelitätsumgebung können die Optimierung von Transaktionen und Verriegelungsstrategien den Konkurrenz verringern.

Wann sollten Sie einen zusammengesetzten Index gegenüber mehreren Einspaltindizes verwenden?Wann sollten Sie einen zusammengesetzten Index gegenüber mehreren Einspaltindizes verwenden?Apr 11, 2025 am 12:06 AM

In der Datenbankoptimierung sollten Indexierungsstrategien gemäß Abfrageanforderungen ausgewählt werden: 1. Wenn die Abfrage mehrere Spalten beinhaltet und die Reihenfolge der Bedingungen festgelegt ist, verwenden Sie zusammengesetzte Indizes. 2. Wenn die Abfrage mehrere Spalten beinhaltet, aber die Reihenfolge der Bedingungen nicht festgelegt ist, verwenden Sie mehrere einspaltige Indizes. Zusammengesetzte Indizes eignen sich zur Optimierung von Multi-Säulen-Abfragen, während Einspaltindizes für Einspalten-Abfragen geeignet sind.

Wie identifizieren und optimieren Sie langsame Abfragen in MySQL? (Langsames Abfrageprotokoll, Performance_schema)Wie identifizieren und optimieren Sie langsame Abfragen in MySQL? (Langsames Abfrageprotokoll, Performance_schema)Apr 10, 2025 am 09:36 AM

Um die MySQL -Abfrage zu optimieren, müssen SlowQuerylog und Performance_Schema verwendet werden: 1. Aktivieren Sie SlowQuerylog und setzen Sie Schwellenwerte, um langsame Abfragen aufzuzeichnen; 2. Verwenden Sie Performance_Schema, um die Details zur Ausführung von Abfragen zu analysieren, Leistungs Engpässe zu finden und zu optimieren.

MySQL und SQL: Wesentliche Fähigkeiten für EntwicklerMySQL und SQL: Wesentliche Fähigkeiten für EntwicklerApr 10, 2025 am 09:30 AM

MySQL und SQL sind wesentliche Fähigkeiten für Entwickler. 1.MYSQL ist ein Open -Source -Relational Database Management -System, und SQL ist die Standardsprache, die zum Verwalten und Betrieb von Datenbanken verwendet wird. 2.MYSQL unterstützt mehrere Speichermotoren durch effiziente Datenspeicher- und Abruffunktionen, und SQL vervollständigt komplexe Datenoperationen durch einfache Aussagen. 3. Beispiele für die Nutzung sind grundlegende Abfragen und fortgeschrittene Abfragen wie Filterung und Sortierung nach Zustand. 4. Häufige Fehler umfassen Syntaxfehler und Leistungsprobleme, die durch Überprüfung von SQL -Anweisungen und Verwendung von Erklärungsbefehlen optimiert werden können. 5. Leistungsoptimierungstechniken umfassen die Verwendung von Indizes, die Vermeidung vollständiger Tabellenscanning, Optimierung von Join -Operationen und Verbesserung der Code -Lesbarkeit.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion