Upgrade to Pro — share decks privately, control downloads, hide ads and more …

HDFS RAID

Avatar for jiangbo jiangbo
December 21, 2012

HDFS RAID

an introduction of HDFS RAID

Avatar for jiangbo

jiangbo

December 21, 2012
Tweet

More Decks by jiangbo

Other Decks in Programming

Transcript

  1. Threads on RaidNode • TriggerMonitorɿ֩৺线ఔɼࠜਾpolicy഑ஔ调౓׬੒raid • BlockFixerɿम䐾corruptจ݅తworker线ఔ • BlockCopierɿम䐾decomissionจ݅తworker线ఔ •

    PurgeParityThreadɿਗ਼ཧݽၰparityจ݅త线ఔ • PlacementThreadɿ෼ࢄdatanode্过౓ूதతparity blockత线ఔ • HarThreadɿক过ظతparity进ߦharҎ䫩গparityจ݅਺త线ఔ Friday, December 21, 12
  2. Local LocalBlockIntegrity线ఔత֩৺ੋपظ调༻doFixํ๏म䐾corruptจ݅ɼओཁ ྲྀఔ೗Լɿ 1. ௨过DFSck获औcurrputจ݅৴ଉʢHTTP访问ʣ 2. 过滤ᎃෆೳ伭䐾తcorruptจ݅ʢ຅༗parityจ݅తʣ 3. কcorrputతจ݅ഉংɼഉং规则೗Լ ◦

    parityจ݅优ઌɼsourceจ݅ࡏ޳ ◦ parityจ݅தcodec.priorityߴతࡏઌʢcodec.priority௨过JSONத coder_priority഑ஔʣ 4. 对ഉং߸తcorruptจ݅ྻදґ࣍௨过BlockRecontsturerདྷ伭䐾ɻ Friday, December 21, 12
  3. Dist 1. 检查౰લਖ਼ࡏ运ߦతम䐾job਺ɼ೗Ռ౰લjobቮ经େဋjob্ݶɼ则౳଴೭લత job运ߦ׬ʢ该্线ՄҎ௨过raid.blockfix.maxpendingjobsདྷ഑ஔɼᘍ认ੋ100Lʣ 2. ௨过DFSck获औ损ᆀతจ݅৴ଉɼblockfixer线ఔ获औcorruptจ݅৴ଉɼ blockCopier获औdecomissionจ݅৴ଉ 3. 计ࢉ获ಘత损ᆀจ݅త优ઌ级 4.

    ক计ࢉ޷优ઌ级తจ݅ྻද҈优ઌ级ഉংɼ࡞为ࢀ਺构ݐम䐾Jobɻ 5. Jobత输ೖੋॴ༗धཁम䐾తจ݅pathతsequence fileɻձࠜਾ raid.blockfix.filespertask഑ஔత值进ߦsyncɼଈࡏjobతsplit阶ஈձ҈র该值设ஔ త进ߦsplitɼᘍ认ੋ20 6. JobతMapperओཁੋ௨过Reconstruterࡏtaskص্׬੒㠳应จ݅త伭䐾ɻ Friday, December 21, 12
  4. 优ઌ级计ࢉ 1. corrputจ݅త优ઌ级೗Լ(R为จ݅෭ຊ਺ɼC为该จ݅corrputత block਺)ɿ ◦ ᘍ认为LOW ◦ R>1 && C>0时ɿ

    HIGH ◦ R==1 && C>1时ɿ HIGH ◦ parityfile corrput && C>0时ɿ HIGH 2. decomission优ઌ级计ࢉ规则೗ԼʢD为decomissionతblock਺): ◦ ᘍ认为LOW ◦ D>4时ɿ HIGH Friday, December 21, 12
  5. Har parity file 1. 获औharจ݅తجຊ৴ଉٴindex 2. 获औharจ݅தతlost blockɼ对㑌࿽block进ߦ೗Լ处ཧɿ 3. ࡏຊ஍จ݅ܥ统创ݐ该blockత临时จ݅ɼ

    4. 对该block㐪ٴతॴ༗parityจ݅ɼ获औ对应తsourceจ݅ɼ௨过 Encoderॏ৽encodeɼࡏຊ஍ੜ੒parity਺ɻ 5. কຊ஍ੜ੒తblock਺ਾ发ૹ౸Ұ࿽datanode্ɼdatanodeత选औ 规则ੋဓू܈தআݪblockॴଐ节఺֎ਵص选औҰ࿽ɻ发ૹ过ఔಉ 时ੜ੒blockతmetaจ݅ɻ Friday, December 21, 12
  6. Parity File parityจ݅తम䐾处ཧ૬对简单ɿ 1. ࡏຊ࣍创ݐlost blockత临时จ݅ 2. 获औparityจ݅తݯจ݅ɼ௨过Encoderॏ৽encodeɼࡏຊ ஍ੜ੒parityจ݅తblock 3.

    选औҰ࿽dnʢ选औ规则࿨har parityจ݅म䐾Ұகʣɼক block਺ਾ发ૹ౸该dn্ɼኂಉ时ੜ੒metaจ݅ Friday, December 21, 12