2016-01-28 8 views
2

Я испытываю высокую задержку между узлами Spark и узлами HBase. В текущих ресурсах, которые мне требуются, я запускаю HBase и Spark на разных серверах.Уменьшение задержки между узлами Spark и HBase

HFiles сжаты с помощью алгоритма Snappy, который уменьшает размер данных в каждом регионе от 50 до 10 ГБ.

Тем не менее, данные, передаваемые по проводам всегда распакованы, поэтому чтение занимает много времени - около 20 МБ в секунду, что около 45 минут для каждого 50GB региона.

Что делать, чтобы ускорить чтение данных? (Или, текущая пропускная способность считается высокой для HBase?)

Я собирался локализовать HBase HFiles локально на машинах Spark вместо постоянного запроса данных из HBase. Является ли это возможным?

Какова наилучшая практика для решения такой проблемы?

Thanks

+0

Является ли это чтением файлов с Дисков, требуется время или передача данных по сети занимает много времени? Пожалуйста, укажите конфигурацию оборудования/сети, конфигурацию кластера и способ чтения данных Hbase от Spark. – Sumit

+0

Передача данных по сетям требует времени. Данные не считываются с диска. 4x 16-ядерные 32-гигабайтные RAM-серверы, сетевое подключение 10 Гбит/с, каждый сервер вмещает 16 рабочих Spark. Кластер Spark Standalone. Чтение из HBase с использованием стандартного TableInputFormat. – imriqwe

ответ

1

Вы думаете в правильном направлении. Вы можете скопировать HFiles в кластер HDFS (или Машины), где работает искра. Это приведет к экономии декомпрессии и уменьшению передачи данных по проводу. Вам нужно будет прочитать HFiles из сжатия Snappy и написать синтаксический анализатор для чтения.

В качестве альтернативы вы можете применять фильтры Column и ColumnFamily, если вам не нужны все данные из Hbase.