Недавно у меня возникла очень странная проблема с повреждением данных.
В основном то, что я делаю, это:
- Передача некоторых больших данных (50 файлов, каждый размером около 8 ГБ) с одного сервера на hpcc (высокопроизводительные вычисления) с использованием «scp»
- Обрабатывать каждую строку входных файлов, а затем добавлять / записывать эти измененные строки в выходные файлы. И я делаю это на hpcc с помощью «qsub -t 1-1000 xxx.sh», то есть выбрасывает все 1000 заданий одновременно. Кроме того, эти 1000 заданий в среднем используют 4 ГБ памяти каждая.
Основной формат моего сценария:
f=open(file)
for line in f:
#process lines
или
f=open(file).readlines()
#process lines
Однако странная часть такова: время от времени я могу видеть повреждение данных в некоторых частях моих данных.
Во-первых, я просто обнаружил, что некоторые из моих «входных» данных повреждены (не ВСЕ); тогда я просто сомневаюсь, что это проблема "scp". Я спрашиваю некоторых компьютерных парней, а также пишу здесь, но, похоже, очень мало шансов, что 'scp' может исказить данные.
И я просто делаю "scp", чтобы снова перенести мои данные в hpcc; и входные данные на этот раз становятся нормальными. странно, правда?
Так что это заставляет меня задуматься: возможно ли, что входные данные могут быть нарушены при использовании для запуска программ, интенсивно использующих память / ЦП?
Если входные данные повреждены, вполне естественно, что выходные данные также повреждены. Хорошо, тогда я снова передаю входные данные в hpcc и проверяю, что все они в хорошей форме, затем я запускаю программы (следует отметить: выполнить 1000 заданий вместе) и выходные файлы ... большинство из них хорошо; однако очень удивительно, что часть только одного файла повреждена! Так что я просто снова запускаю программу для этого конкретного файла, а затем получаю хороший вывод без каких-либо повреждений !!
Я в таком замешательстве ...... Увидев так много странных вещей, я могу сделать единственный вывод: может быть, одновременное выполнение большого количества работ с большим объемом памяти повредит данные? (Но я также запускал много таких заданий, и, кажется, все в порядке)
А под искажением данных я подразумеваю:
Примерно так:
CTTGTTACCCAGTTCCAAAG9583gfg1131CCGGATGCTGAATGGCACGTTTACAATCCTTTAGCTAGACACAAAAGTTCTCCAAGTCCCCACCAGATTAGCTAGACACAGAGGGCTGGTTGGTGCATCT0/1
gfgggfgggggggggggggg9583gfg1131CCGGAfffffffaedeffdfffeffff`fffffffffcafffeedffbfbb[aUdb\``ce]aafeeee\_dcdcWe[eeffd\ebaM_cYKU]\a\Wcc0/1
CTTGTTACCCAGTTCCAAAG9667gfg1137CCGGATCTTAAAACCATGCTGAGGGTTACAAA1AGAAAGTTAACGGGATGCTGATGTGGACTGTGCAAATCGTTAACATACTGAAAACCTCT0/1
gfgggfgggggggggggggg9667gfg1137CCGGAeeeeeeeaeeb`ed`dadddeebeeedY_dSeeecee_eaeaeeeeeZeedceadeeXbd`RcJdcbc^c^e`cQ]a_]Z_Z^ZZT^0/1
Однако это должно быть как:
@HWI-ST150_0140:6:2204:16666:85719#0/1
TGGGCTAAAAGGATAAGGGAGGGTGAAGAGAGGATCTGGGTGAACACACAAGAGGCTTAAAGCATTTTATCAAATCCCAATTCTGTTTACTAGCTGTGTGA
+HWI-ST150_0140:6:2204:16666:85719#0/1
gggggggggggggggggfgggggZgeffffgggeeggegg^ggegeggggaeededecegffbYdeedffgggdedffc_ffcffeedeffccdffafdfe
@HWI-ST150_0140:6:2204:16743:85724#0/1
GCCCCCAGCACAAAGCCTGAGCTCAGGGGTCTAGGAGTAGGATGGGTGGTCTCAGATTCCCCATGACCCTGGAGCTCAGAACCAATTCTTTGCTTTTCTGT
+HWI-ST150_0140:6:2204:16743:85724#0/1
ffgggggggfgeggfefggeegfggggggeffefeegcgggeeeeebddZggeeeaeed[ffe^eTaedddc^Oacccccggge\edde_abcaMcccbaf
@HWI-ST150_0140:6:2204:16627:85726#0/1
CCCCCATAGTAGATGGGCTGGGAGCAGTAGGGCCACATGTAGGGACACTCAGTCAGATCTATGTAGCTGGGGCTCAAACTGAAATAAAGAATACAGTGGTA