SHOW PROC
Описание
Система Proc представляет собой уникальную возможность Doris. Тем, кто работал с Linux, эта концепция может быть понятнее. В системах Linux proc представляет собой виртуальную файловую систему, которая обычно монтируется в каталоге /proc. Через эту файловую систему пользователи могут просматривать внутренние структуры данных системы. Например, сведения о процессе с указанным pid можно просмотреть через /proc/pid.
Как и система proc в Linux, система proc в Doris организована в виде структуры каталогов. Это позволяет просматривать различные сведения о системе по указанному пользователем «пути к каталогу (пути proc)».
Система proc предназначена прежде всего для системных администраторов и позволяет удобно просматривать внутреннее состояние работающей системы: состояние tablet таблицы, балансировку кластера, состояние различных заданий и другие сведения. Это очень полезная возможность.
Просматривать систему proc в Doris можно двумя способами.
- Через веб-интерфейс Doris по адресу:
http://FE_IP:FE_HTTP_PORT - С помощью команды
Все команды, поддерживаемые Doris PROC, можно просмотреть с помощью SHOW PROC "/";
После подключения к Doris через клиент MySQL можно выполнить оператор SHOW PROC, чтобы просмотреть сведения об указанном каталоге proc. Каталог proc задаётся абсолютным путём, начинающимся с "/".
Результаты оператора show proc представлены в виде двумерной таблицы. Обычно первый столбец этой таблицы содержит имена подкаталогов proc следующего уровня.
mysql> show proc "/";
+---------------------------+
| name |
+---------------------------+
| auth |
| backends |
| bdbje |
| brokers |
| catalogs |
| cluster_balance |
| cluster_health |
| colocation_group |
| current_backend_instances |
| current_queries |
| current_query_stmts |
| dbs |
| diagnose |
| frontends |
| jobs |
| load_error_hub |
| monitor |
| resources |
| routine_loads |
| statistic |
| stream_loads |
| tasks |
| transactions |
| trash |
+---------------------------+
23 rows in set (0.00 sec)
Пояснения:
- auth: имя пользователя и сведения о соответствующих правах доступа.
- backends: отображает список узлов BE в кластере; эквивалентно SHOW BACKENDS.
- bdbje: чтобы просмотреть список баз данных bdbje, добавьте в файл
fe.confпараметрenable_bdbje_debug_mode=true, а затем запуститеFEкомандойsh start_fe.sh --daemon, чтобы перейти в режимdebug. После перехода в режимdebugзапускаются толькоhttp serverиMySQLServerи открывается экземплярBDBJE; загрузка метаданных и последующие этапы запуска не выполняются. - binlog: просмотр сведений о binlog, включая количество записей binlog, размер binlog в байтах, временной диапазон binlog и другие сведения.
- brokers : просмотр сведений об узлах broker кластера; эквивалентно SHOW BROKER.
- catalogs : просмотр созданных объектов Catalog; эквивалентно SHOW CATALOGS.
- cluster_balance : проверка балансировки кластера. Подробнее см. в разделе Управление репликами данных.
- cluster_health: выполните оператор
SHOW PROC '/cluster_health/tablet_health';, чтобы просмотреть состояние реплик во всём кластере. - colocation_group : эта команда позволяет просмотреть сведения о существующих группах в кластере. Подробнее см. в разделе Colocation Join.
- current_backend_instances : отображает список узлов be, которые в данный момент выполняют задания.
- current_queries : просмотр списка выполняемых запросов со статистикой времени выполнения, включая ход выполнения задач и показатели ресурсов (сканирование/CPU/память/shuffle/spill/кэш). Начиная с 4.1.1 здесь представлено то же расширенное представление, что и в
current_query_stmts. - current_query_stmts: возвращает выполняемый запрос с тем же представлением статистики, что и
current_queries, включая ход выполнения отдельных задач и показатели ресурсов. - dbs: используется главным образом для просмотра метаданных каждой базы данных и таблиц в кластере Doris. Эти сведения включают структуру таблиц, разделы, материализованные представления, шарды данных, реплики и многое другое. Этот каталог и его подкаталоги позволяют наглядно просматривать метаданные таблиц кластера и находить такие проблемы, как неравномерное распределение данных, сбои реплик и т. д.
- diagnose: выявление и диагностика распространённых проблем управления кластером, включая балансировку и перенос реплик, ошибки транзакций и т. д.
- frontends: отображает сведения обо всех узлах FE в кластере, включая IP-адрес, роль, состояние, признак ведущего узла и т. д.; эквивалентно SHOW FRONTENDS.
- jobs: отображает статистику заданий всех типов. Если задан конкретный
dbId, возвращается статистика соответствующей базы данных. ЕслиdbIdравен -1, возвращается суммарная статистика по всем базам данных. - load_error_hub: Doris поддерживает централизованное хранение сведений об ошибках заданий загрузки в хранилище ошибок. Затем сообщения об ошибках можно просматривать непосредственно с помощью оператора
SHOW LOAD WARNINGS;. Здесь отображаются сведения о конфигурации хранилища ошибок. - monitor : отображает использование ресурсов JVM процесса FE.
- resources : просмотр системных ресурсов. Обычные учётные записи могут видеть только ресурсы, на использование которых у них есть право USAGE_PRIV. Только учётные записи root и admin могут видеть все ресурсы. Эквивалентно SHOW RESOURCES.
- routine_loads: отображает сведения обо всех заданиях Routine Load, включая имя задания, состояние и т. д.
- statistics: используется главным образом для обобщения и просмотра количества баз данных, таблиц, разделов, шардов и реплик в кластере Doris, а также количества неисправных реплик. Эти сведения помогают контролировать общий объём метаданных кластера, дают общее представление о шардировании кластера и позволяют быстро проверить состояние шардов. Это помогает определить проблемные шарды данных.
- stream_loads: возвращает выполняемую задачу Stream Load.
- tasks : отображает общее количество задач различных заданий и количество сбоев.
- transactions : используется для просмотра подробных сведений о транзакции с указанным идентификатором; эквивалентно SHOW TRANSACTION.
- trash: этот оператор используется для просмотра объёма пространства, занимаемого мусорными данными в backend. Эквивалентно SHOW TRASH.
Подробное описание
- /binlog
Binlog регистрирует изменения данных в Doris. С помощью этой команды администраторы могут отслеживать состояние Binlog, обеспечивать его нормальную работу и рационально планировать пространство для хранения.
| Имя поля | Тип данных | Описание |
|---|---|---|
| Name | String | Имя базы данных или таблицы. |
| Type | String | Тип объекта данных; значение может быть "db" (база данных) или "table" (таблица). |
| Id | Number | Идентификатор базы данных или таблицы. |
| Dropped | Boolean | Удалена ли база данных или таблица. Значение "true" означает, что объект удалён из Doris, но его записи Binlog ещё сохраняются; значение "false" означает, что объект по-прежнему существует в системе. Даже после удаления базы данных или таблицы система некоторое время сохраняет записи Binlog, пока не истечёт TTL или они не будут очищены вручную. |
| BinlogLength | Number | Общее количество записей бинарного журнала для этой базы данных или таблицы. |
| BinlogSize | Number | Общий размер бинарных журналов (байты). |
| FirstBinlogCommittedTime | Number | Метка времени фиксации первой записи бинарного журнала (метка времени Unix, миллисекунды). |
| ReadableFirstBinlogCommittedTime | String | Время фиксации первой записи бинарного журнала (в удобочитаемом формате). |
| LastBinlogCommittedTime | Number | Метка времени фиксации последней записи бинарного журнала (метка времени Unix, миллисекунды). |
| ReadableLastBinlogCommittedTime | String | Время фиксации последней записи бинарного журнала (в удобочитаемом формате). |
| BinlogTtlSeconds | Number | Срок хранения бинарных журналов (секунды); журналы, превысившие этот срок, могут быть удалены. |
| BinlogMaxBytes | Number | Максимальный размер бинарных журналов (байты); превышение этого размера может запустить очистку. |
| BinlogMaxHistoryNums | Number | Максимальное количество сохраняемых исторических записей бинарного журнала; превышение этого количества может запустить очистку. |
Примечания:
- В результатах этой команды отображаются только базы данных и таблицы, для которых включено ведение бинарного журнала.
- Если ведение бинарного журнала включено на уровне базы данных, отображаются сведения о бинарном журнале базы данных; в противном случае отображаются сведения об отдельных таблицах этой базы данных, для которых включено ведение бинарного журнала.
Пример
-
Например, "/dbs" отображает все базы данных, а "/dbs/10002" отображает все таблицы базы данных с идентификатором 10002.
mysql> show proc "/dbs/10002";
+---------+----------------------+----------+---------------------+--------------+--------+------+--------------------------+--------------+
| TableId | TableName | IndexNum | PartitionColumnName | PartitionNum | State | Type | LastConsistencyCheckTime | ReplicaCount |
+---------+----------------------+----------+---------------------+--------------+--------+------+--------------------------+--------------+
| 10065 | dwd_product_live | 1 | dt | 9 | NORMAL | OLAP | NULL | 18 |
| 10109 | ODS_MR_BILL_COSTS_DO | 1 | NULL | 1 | NORMAL | OLAP | NULL | 1 |
| 10119 | test | 1 | NULL | 1 | NORMAL | OLAP | NULL | 1 |
| 10124 | test_parquet_import | 1 | NULL | 1 | NORMAL | OLAP | NULL | 1 |
+---------+----------------------+----------+---------------------+--------------+--------+------+--------------------------+--------------+
4 rows in set (0.00 sec) -
Отображение сведений о количестве таблиц во всех базах данных кластера.
mysql> show proc '/statistic';
+-------+----------------------+----------+--------------+----------+-----------+------------+
| DbId | DbName | TableNum | PartitionNum | IndexNum | TabletNum | ReplicaNum |
+-------+----------------------+----------+--------------+----------+-----------+------------+
| 10002 | default_cluster:test | 4 | 12 | 12 | 21 | 21 |
| Total | 1 | 4 | 12 | 12 | 21 | 21 |
+-------+----------------------+----------+--------------+----------+-----------+------------+
2 rows in set (0.00 sec) -
Следующая команда позволяет просмотреть сведения о существующих группах в кластере.
SHOW PROC '/colocation_group';
+-------------+--------------+--------------+------------+-------------------+----------+----------+----------+
| GroupId | GroupName | TableIds | BucketsNum | ReplicaAllocation | DistCols | IsStable | ErrorMsg |
+-------------+--------------+--------------+------------+-------------------+----------+----------+----------+
| 10005.10008 | 10005_group1 | 10007, 10040 | 10 | tag.location.default: 3 | int(11) | true | |
+-------------+--------------+--------------+------------+-------------------+----------+----------+----------+- GroupId: уникальный в пределах кластера идентификатор группы; первая часть представляет собой идентификатор базы данных, а вторая часть представляет собой идентификатор группы.
- GroupName: полное имя группы.
- TableIds: список идентификаторов таблиц, входящих в эту группу.
- BucketsNum: количество бакетов.
- ReplicaAllocation: политика распределения реплик.
- DistCols: столбцы распределения, то есть тип столбца бакетирования.
- IsStable: стабильна ли группа (определение стабильности см. в разделе
Colocation replica balance and repair). - ErrorMsg: текущее сообщение об ошибке группы; пустое, если всё в порядке.
Изменение поведения (4.0.8)Начиная с версии 4.0.8 столбец
ReplicaAllocationотображаетnullв режиме с разделением вычислений и хранения. В этой архитектуре репликами управляет слой хранения, поэтому семантика распределения реплик режима с совмещёнными хранением и вычислениями здесь неприменима, а ранее отображавшееся значение вводило в заблуждение. -
Используйте следующие команды для более подробного просмотра распределения данных группы:
SHOW PROC '/colocation_group/10005.10008';
+-------------+---------------------+
| BucketIndex | BackendIds |
+-------------+---------------------+
| 0 | 10004, 10002, 10001 |
| 1 | 10003, 10002, 10004 |
| 2 | 10002, 10004, 10001 |
| 3 | 10003, 10002, 10004 |
| 4 | 10002, 10004, 10003 |
| 5 | 10003, 10002, 10001 |
| 6 | 10003, 10004, 10001 |
| 7 | 10003, 10004, 10002 |
+-------------+---------------------+- BucketIndex: индекс бакета в последовательности.
- BackendIds: список идентификаторов узлов BE, на которых расположены шарды данных бакета.
Имена столбцов, кроме
BucketIndex, зависят от режима развёртывания: в режиме с совмещёнными хранением и вычислениями каждому тегу ресурсов соответствует отдельный столбец, а в режиме с разделением вычислений и хранения отдельный столбец соответствует каждой вычислительной группе. Если такого разбиения нет, используется единственный столбецBackendIds. -
Отображение общего количества задач различных заданий и количества сбоев.
mysql> show proc '/tasks';
+-------------------------+-----------+----------+
| TaskType | FailedNum | TotalNum |
+-------------------------+-----------+----------+
| CREATE | 0 | 0 |
| DROP | 0 | 0 |
| PUSH | 0 | 0 |
| CLONE | 0 | 0 |
| STORAGE_MEDIUM_MIGRATE | 0 | 0 |
| ROLLUP | 0 | 0 |
| SCHEMA_CHANGE | 0 | 0 |
| CANCEL_DELETE | 0 | 0 |
| MAKE_SNAPSHOT | 0 | 0 |
| RELEASE_SNAPSHOT | 0 | 0 |
| CHECK_CONSISTENCY | 0 | 0 |
| UPLOAD | 0 | 0 |
| DOWNLOAD | 0 | 0 |
| CLEAR_REMOTE_FILE | 0 | 0 |
| MOVE | 0 | 0 |
| REALTIME_PUSH | 0 | 0 |
| PUBLISH_VERSION | 0 | 0 |
| CLEAR_ALTER_TASK | 0 | 0 |
| CLEAR_TRANSACTION_TASK | 0 | 0 |
| RECOVER_TABLET | 0 | 0 |
| STREAM_LOAD | 0 | 0 |
| UPDATE_TABLET_META_INFO | 0 | 0 |
| ALTER | 0 | 0 |
| INSTALL_PLUGIN | 0 | 0 |
| UNINSTALL_PLUGIN | 0 | 0 |
| Total | 0 | 0 |
+-------------------------+-----------+----------+
26 rows in set (0.01 sec) -
Отображение состояния реплик во всём кластере.
mysql> show proc '/cluster_health/tablet_health';
+----------+---------------------------+-----------+------------+-------------------+----------------------+----------------------+--------------+----------------------------+-------------------------+-------------------+---------------------+----------------------+----------------------+------------------+-----------------------------+-----------------+-------------+------------+
| DbId | DbName | TabletNum | HealthyNum | ReplicaMissingNum | VersionIncompleteNum | ReplicaRelocatingNum | RedundantNum | ReplicaMissingInClusterNum | ReplicaMissingForTagNum | ForceRedundantNum | ColocateMismatchNum | ColocateRedundantNum | NeedFurtherRepairNum | UnrecoverableNum | ReplicaCompactionTooSlowNum | InconsistentNum | OversizeNum | CloningNum |
+----------+---------------------------+-----------+------------+-------------------+----------------------+----------------------+--------------+----------------------------+-------------------------+-------------------+---------------------+----------------------+----------------------+------------------+-----------------------------+-----------------+-------------+------------+
| 25852112 | default_cluster:bowen | 1920 | 1920 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 25342914 | default_cluster:bw | 128 | 128 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 2575532 | default_cluster:cps | 1440 | 1440 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 16 | 0 |
| 26150325 | default_cluster:db | 38374 | 38374 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 453 | 0 |
+----------+---------------------------+-----------+------------+-------------------+----------------------+----------------------+--------------+----------------------------+-------------------------+-------------------+---------------------+----------------------+----------------------+------------------+-----------------------------+-----------------+-------------+------------+
4 rows in set (0.01 sec)Просмотр состояния реплик в отдельной базе данных, например в базе данных с DbId 25852112.
mysql> show proc '/cluster_health/tablet_health/25852112';Изменение поведения (4.0.8)Начиная с версии 4.0.8 в режиме с разделением вычислений и хранения все tablet учитываются как
HEALTHY, а такие счётчики, какUnrecoverableNum, больше не показывают ненулевые значения.В режиме с разделением вычислений и хранения за состояние реплик отвечает слой хранения. Ранее проверка состояния использовала логику режима с совмещёнными хранением и вычислениями и ошибочно классифицировала исправные tablet как
UNRECOVERABLE. Из-за этогоSHOW PROC '/diagnose'сообщал о несуществующей проблемеTablet Health. Статистика режима с совмещёнными хранением и вычислениями не изменилась. -
Выявление и диагностика проблем управления кластером
MySQL > show proc "/diagnose";
+-----------------+----------+------------+
| Item | ErrorNum | WarningNum |
+-----------------+----------+------------+
| cluster_balance | 2 | 0 |
| Total | 2 | 0 |
+-----------------+----------+------------+
2 rows in setПросмотр проблем балансировки и переноса реплик
MySQL > show proc "/diagnose/cluster_balance";
+-----------------------+--------+-------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------+------------+
| Item | Status | Content | Detail Cmd | Suggestion |
+-----------------------+--------+-------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------+------------+
| Tablet Health | ERROR | healthy tablet num 691 < total tablet num 1014 | show proc "/cluster_health/tablet_health"; | <null> |
| BeLoad Balance | ERROR | backend load not balance for tag {"location" : "default"}, low load backends [], high load backends [10009] | show proc "/cluster_balance/cluster_load_stat/location_default/HDD" | <null> |
| Disk Balance | OK | <null> | <null> | <null> |
| Colocate Group Stable | OK | <null> | <null> | <null> |
| History Tablet Sched | OK | <null> | <null> | <null> |
+-----------------------+--------+-------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------+------------+
5 rows in set
Ключевые слова
SHOW, PROC