Какой самый быстрый способ отправки файлов любого размера и формата в Hadoop? - PullRequest
0 голосов
/ 27 октября 2018

Я создаю веб-приложение для анализа данных с интерфейсом Angular 6, бэкэндом Django 1.11 и Hadoop. Мне нужно как можно быстрее отправить файлы любого размера и формата в Hadoop. Я хотел бы поддержать как частных пользователей, так и компании. Интересно, какой самый быстрый способ отправить файлы любого размера и формата в Hadoop?

Мое решение:

    file = request.FILES['file']

    path = default_storage.save(str(file), ContentFile(file.read()))

    os.path.join(settings.MEDIA_ROOT, path)

    command = 'hadoop fs -put ' + str(file) + ' /user/' + str(user_name) + '/' + str(file)

    os.system(command)

    command = 'rm -r ' + str(file)

    os.system(command)

Ответы [ 3 ]

0 голосов
/ 29 октября 2018

Команда Hadoop FS put будет использовать hdfs / webhdfs, но накладные расходы на запуск процесса даже для самого маленького файла приведут к ухудшению этой операции.Я хотел бы взглянуть на использование hadoop copyfromlocal с таким количеством исходных файлов и 1-2 потоков для каждого ядра.

Для тех, кто испытывает проблемы с файлами multiGB;hadoop fs -appendToFile должен позволить вам создать файл большего размера из локальных частей, хотя он не поддерживает какой-либо диапазон в командной строке (что на самом деле может).И в последних версиях магистрали Hadoop продолжается работа по улучшению API многочастной загрузки для HDFS и хранилищ объектов, предназначенных для параллельной загрузки блоков с окончательным объединением в конце.

0 голосов
/ 31 октября 2018

Если вы используете импорт Sqoop, вы можете попробовать использовать параметры повышения производительности, как указано ниже: 1. - размер выборки 2. - прямой 3. - разделить на 4. -m количество 5. Граничный запрос
в инструменте sqoop

0 голосов
/ 27 октября 2018

Единственный способ, позволяющий любого размера , - следовать протоколу записи HDFS RPC.Например, hdfs dfs -put

В противном случае webhdfs или шлюз NFS, вероятно, прекратят работу с большими файлами (более нескольких ГБ).

Если вы не используете HDFS, используйте соответствующие библиотеки дляместо хранения.Azure или S3, например,


Лучшим решением, чем загрузка файлов, было бы использование RDMBS или Cassandra для аналитики, а затем использование Sqoop или Spark для параллельного экспорта этих данных в Hadoopмода

...