Я пытаюсь сделать тысячи операций обновления паркетных секций на разных таблицах кустов параллельно с моим клиентским приложением. Я использую spark sql с включенным кустом в моем приложении для отправки запроса улья.
Свойство конфигурации моего свечного куста:
hive.metastore.uris=thrift://hivebox:9083
Пример sql запроса, который мы хотим выполнить параллельно:
spark.sql(" ALTER TABLE mytable PARTITION (a=3, b=3) SET LOCATION
'/newdata/mytable/a=3/b=3/part.parquet")
Я вижу, что все запросы отправляются через разные потоки из моего пула fork-join. я не мог масштабировать эту операцию, как бы я ни настраивал пул потоков. Затем я начал наблюдать журналы метастазов кустов и вижу, что все записи выполняет только поток.
2020-01-29T16:27:15,638 INFO [pool-6-thread-163] metastore.HiveMetaStore: 163: source:10.250.70.14 get_table : db=mydb tbl=mytable1
2020-01-29T16:27:15,638 INFO [pool-6-thread-163] HiveMetaStore.audit: ugi=mycomp ip=10.250.70.14 cmd=source:10.250.70.14 get_table : db=mydb tbl=mytable1
2020-01-29T16:27:15,653 INFO [pool-6-thread-163] metastore.HiveMetaStore: 163: source:10.250.70.14 get_database: mydb
2020-01-29T16:27:15,653 INFO [pool-6-thread-163] HiveMetaStore.audit: ugi=mycomp ip=10.250.70.14 cmd=source:10.250.70.14 get_database: mydb
2020-01-29T16:27:15,655 INFO [pool-6-thread-163] metastore.HiveMetaStore: 163: source:10.250.70.14 get_table : db=mydb tbl=mytable2
2020-01-29T16:27:15,656 INFO [pool-6-thread-163] HiveMetaStore.audit: ugi=mycomp ip=10.250.70.14 cmd=source:10.250.70.14 get_table : db=mydb tbl=mytable2
2020-01-29T16:27:15,670 INFO [pool-6-thread-163] metastore.HiveMetaStore: 163: source:10.250.70.14 get_database: mydb
2020-01-29T16:27:15,670 INFO [pool-6-thread-163] HiveMetaStore.audit: ugi=mycomp ip=10.250.70.14 cmd=source:10.250.70.14 get_database: mydb
2020-01-29T16:27:15,672 INFO [pool-6-thread-163] metastore.HiveMetaStore: 163: source:10.250.70.14 get_table : db=mydb tbl=mytable3
2020-01-29T16:27:15,672 INFO [pool-6-thread-163] HiveMetaStore.audit: ugi=mycomp ip=10.250.70.14 cmd=source:10.250.70.14 get_table : db=mydb tbl=mytable3
ALl действия выполняются только одним потоком pool-6-thread-163
Я отсканировал 100 строк и это один и тот же поток. Я не вижу большого количества журнала в файле hiverserver.log.
Я вижу в документе улья следующие значения по умолчанию:
hive.metastore.server.min.threads Значение по умолчанию: 200 hive.metastore .server.max.threads Значение по умолчанию: 100000
, которое должно быть достаточно хорошим, но почему только один поток выполняет всю работу? Это связано с IP-адресом потребителя, потому что я вижу в записи журнала source:10.250.70.14
? что имело бы смысл, поскольку я отправляю все работы с одной машины.