У меня есть 167 миллионов строк таблицы в hbase.Быстрое сканирование с лимитом, подобным следующему:
hbase(main):001:0> scan '<test_table>, LIMIT => 1
Обычно возвращается примерно через 0,1 сек.Как и пару дней назад, это самое быстрое сканирование занимает более 90 секунд, и мне нужна помощь, чтобы определить причину.Вот что я рассмотрел до сих пор:
- Не все таблицы ведут себя так;некоторые таблицы одинакового размера остаются на 0,1 секунды для сканирования с ограничением 1. Другие демонстрируют поведение проблемы.
- HMaster сообщает «0» Запросы для соответствующих таблиц на все 37 узлов данных в моем кластере.
- Журналы hbase (/var/log/hbase/hbase-hbase-regionserver-.log) не содержат заметных ошибок.
Журналы hdfs имеют ошибку, хотяЯ не уверен, что он связан (hadoop-hdfs-datanode-.log): 2019-05-15 09: 43: 28,594 ОШИБКА org.apache.hadoop.hdfs.server.datanode.DataNode:: 50010: Ошибка обработки DataXceiver операция READ_BLOCK src:: 50041 dest: /: 50010 java.net.SocketTimeoutException: 480000 миллисекунд ожидания при ожидании готовности канала к записи.ch: java.nio.channels.SocketChannel [подключен локально = /: 50010 удаленно = /: 50041] в org.apache.hadoop.net.SocketIOWithTimeout.waitForIO (SocketIOWithTimeout.java:247) в org.apache.hadoop.net.SocketOutputStream.waitForWritable (SocketOutputStream.java:166) по адресу org.apache.hadoop.net.SocketOutputStream.transferToFully (SocketOutputStream.java:214) по адресу org.apache.hadoop.hdfs.server.datanoSender.jS510) в org.apache.hadoop.hdfs.server.datanode.BlockSender.sendBlock (BlockSender.java:673) в org.apache.hadoop.hdfs.server.datanode.DataXceiver.readBlock (DataXceiver.java:338) в организации.apache.hadoop.hdfs.protocol.datatransfer.Receiver.opReadBlock (Receiver.java:92) в org.apache.hadoop.hdfs.protocol.datatransfer.Receiver.processOp (Receiver.java:64) в org.apache.hadoop.hdfs.server.datanode.DataXceiver.run (DataXceiver.java:221) в java.lang.Thread.run (Thread.java:745)
hbck
на столевозвращается чистый, 0 несоответствий и таблица в сети идоступно.
Выборочная проверка отдельных серверов регионов. Я не вижу проблем с загрузкой, ОС или оборудованием, вот несколько различных команд, которые я выполнил:
iostat -xm 4
avg-cpu: %user %nice %system %iowait %steal %idle
3.20 0.57 1.04 2.96 0.00 92.23
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 19.75 0.00 2.75 0.00 0.09 65.45 0.00 0.00 0.00 0.00 0.00 0.00
sdc 0.00 12.00 17.75 0.75 1.31 0.05 150.49 0.28 15.32 15.89 2.00 5.99 11.07
sdb 0.00 0.00 20.75 82.50 1.20 19.27 406.12 10.52 101.88 20.01 122.47 4.13 42.60
sdd 0.00 7.50 39.50 0.75 5.39 0.03 275.98 0.40 10.00 10.19 0.00 4.12 16.60
sde 0.00 0.00 44.75 35.00 7.97 7.83 405.64 3.20 11.13 8.08 15.04 1.84 14.68
sdf 0.00 8.00 7.75 94.25 0.45 17.13 353.08 5.58 54.63 61.58 54.06 1.06 10.82
sdg 0.00 5.75 15.75 0.50 0.73 0.02 95.38 0.10 6.23 6.41 0.50 3.89 6.32
sdh 0.25 6.50 130.00 63.00 12.27 15.15 290.96 11.68 60.43 10.07 164.36 2.94 56.67
sdi 0.00 8.00 15.75 1.00 1.45 0.04 181.97 0.09 5.66 6.02 0.00 4.90 8.20
sdj 0.00 6.50 30.25 0.75 2.09 0.03 140.26 0.19 6.13 6.17 4.67 2.13 6.60
sdk 0.00 4.25 5.50 0.50 0.38 0.02 136.67 0.04 5.96 6.45 0.50 5.33 3.20
sdl 0.00 0.00 78.75 71.75 14.64 17.24 433.77 7.46 49.60 16.97 85.41 1.90 28.60
sdm 0.00 0.00 31.50 0.25 1.73 0.00 111.81 0.34 10.59 10.67 1.00 6.87 21.80
$ top -M
top - 09:51:14 up 220 days, 17:25, 1 user, load average: 6.19, 5.70, 5.53
Tasks: 1039 total, 2 running, 1036 sleeping, 0 stopped, 1 zombie
Cpu(s): 4.5%us, 1.0%sy, 0.9%ni, 92.3%id, 1.4%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 503.498G total, 498.871G used, 4738.371M free, 2252.797M buffers
Swap: 2046.996M total, 0.000k used, 2046.996M free, 442.170G cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
20428 hbase 20 0 16.8g 16g 18m S 307.4 3.2 6390:11 java
22288 root 39 19 812m 691m 11m R 78.7 0.1 2375:18 clamscan
16490 mapred 20 0 1896m 596m 23m S 52.0 0.1 0:22.89 java
- Версия hbase - Версия 0.94.15-cdh4.7.0.
Любаяидеи как решить эту проблему?