Как я могу напрямую рассчитать магнитную ссылку файла на hdfs через hdfs MapReduce? - PullRequest
0 голосов
/ 24 сентября 2019

Как я могу напрямую рассчитать магнитную ссылку файла или каталога на hdfs через MapReduce?

1 Ответ

0 голосов
/ 24 сентября 2019

Сложная часть для вычисления в магнитной ссылке - это info-hash .Инфо-хеш - это SHA1-хэш информационного словаря файла .torrent.Это структура с кодировкой , которая содержит имена файлов, размеры файлов, размер фрагментов и (что важно) список хэшей SHA-1 для всех фрагментов.Сложной частью создания информационного словаря является вычисление хэшей фрагментов, поэтому давайте сосредоточимся на этом.

Кроме того, для многофайловых торрентов вся полезная нагрузка файла логически объединяется для целей вычисления и проверки фрагмента.хэши.В вашем случае это звучит так, как будто вы в основном заинтересованы в отдельных файловых торрентах, что упрощает задачу, поэтому давайте просто сосредоточимся на этом.

Я не знаком с HDFS конкретно, но вычисляю SHA-1 штука хэшей может быть выполнена параллельно.Вы выбираете размер куска, технически это может быть любой размер, но я думаю, что многие клиенты ожидают степень двойки (или, по крайней мере, она делится на 16 КБ).Таким образом, хэши должны быть рассчитаны на куски файла, делимые на размер куска.Например, если вы установите размер фрагмента в 1 МБ, вам нужно будет хэшировать 1-й мегабайт файла, 2-й мегабайт файла и так далее.Все это может быть сделано параллельно.

Для многофайловых торрентов это становится немного сложнее, так как эти границы фрагментов больше не попадают в смещения файлов, кратные размеру фрагментов.Если HDFS не дает вам произвольный параллельный доступ к файлам, это может быть проблемой.

После того, как у вас будут хэши фрагментов, поместите их в информационный словарь и запустите последний проход SHA-1,и у вас есть информационный хеш.

Если вы хотите поддерживать bittorrent v2 , файлы проверяются по хеш-дереву merkle, используя листовые блоки SHA-256 и 16 КБ в файле,Это также дает то преимущество, что каждый файл хэшируется независимо, поэтому вы избегаете проблем с выравниванием фрагментов.

Короче говоря, до тех пор, пока вы можете читать и хешировать блоки степени два параллельно, ваш шаг сокращенияпросто создать информационный словарь, поместить туда хеши частей, и SHA-1 снова его хеширует.

...