Spark 2.4 и Hive 2.3 - проблема параллелизма и производительности метастазов - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь сделать тысячи операций обновления паркетных секций на разных таблицах кустов параллельно с моим клиентским приложением. Я использую 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? что имело бы смысл, поскольку я отправляю все работы с одной машины.

...