Google File Systemの中身を紹介
The Google File SystemSDDษڧձ@r-n-i2018/10/19
View Slide
֓ཁ• Google ͷϓϩμΫτ෦ͰΘΕ͍ͯͨ େنσʔλ͚ͷϑΝΠϧγεςϜ• ΦʔϓϯιʔεͰͳ͍• HadoopͷࢄϑΝΠϧεςϜ͕ࢀߟʹͨ͠• ઍ ͷαʔό͔ͨͪΒΔ
※2003ͷจͰ͢
࣌ͷঢ়گ(จ͔Βൈਮ)• Dual 1.4GHz Pentium III Processor• 2GB Memory• 80GB 5400 rpm disk ×2• 100Mbps full-duplex Ethernet
ϋʔυΣΞͷલఏ• γεςϜΛߏ͢Δύʔπ յΕΔ• ࣓ؾσΟεΫ• ωοτϫʔΫέʔϒϧ• ͰϥοΫյ• ҆ՁͳͷΛར༻ͯ͠ͳΜͱ͔͍ͨ͠
Ϣʔεέʔεͷલఏ• Read ΫΤϦ >> WriteΫΤϦ• ॻ͖͑ຆͲͳ͍ɺAppend(ه) ͷΈ
ΫϥΠΞϯτ͔ΒݟͨGoogle File System
ϑΝΠϧγεςϜʁ• ԾతͳπϦʔσΟϨΫτϦΛ࣋ͭ• ΫϥΠΞϯτ͔Βී௨ͷϑΝΠϧʹݟ͍͑ͯΔ• ϑΝΠϧͷ࣮ମ֤αʔόʹࢄஔ• POSIXޓͰͳ͍͕ͦΕͬΆ͍APIΛ࣋ͭ• GFS্ͷ(ΫϥΠΞϯτ͔Βݟͨ)ϑΝΠϧͷ͜ͱΛҎ߱ ԾϑΝΠϧ ͱݺͿ͜ͱʹ͠·͢
ߏཁૉͷհ
ΞʔΩςΫνϟ
νϟϯΫ / Chunk• 1ԾϑΝΠϧ has many νϟϯΫ• 1νϟϯΫ = 64MB• ෳͷϨϓϦΧ͕νϟϯΫαʔόʹଘࡏ• 1ͭͷϓϥΠϚϦʔ• NݸͷηΧϯμϦʔ
νϟϯΫαʔό / Chunk server• νϟϯΫͨͪΛ࣮ࡍʹཧతʹ࣋ͭ• ΫϥΠΞϯτ͕σʔλऔಘ࣌ʹ ͰΞΫηε͢Δ• ଳҬͷઅͷͨΊ
Ϛελʔαʔό / Master server• ԾϑΝΠϧ(ͱͦͷΦϑηοτ)ͱνϟϯΫͷϚοϓ• ֤νϟϯΫ͕ͲͷνϟϯΫαʔόʹ͋Δ͔• νϟϯΫαʔόͷࢮ׆ࢹ• ૢ࡞ϩάΛه• Ϋϥογϡͯ͠෮ݩͰ͖ΔΑ͏ʹ
Read Operation
खॱ1. (ԾϑΝΠϧ໊,νϟϯΫ൪߸) Λ ϚελʔʹϦΫΤετ2. ֘νϟϯΫ͕͋ΔαʔόͷॴΛڭ͑ͯΒ͏3. νϟϯΫαʔόʹ (νϟϯΫϋϯυϧ, νϟϯΫͰཉ͍͠byteͷൣғ)ΛϦΫΤετ4. νϟϯΫαʔό͔Βσʔλ͕Β͑Δ
Write Operation
खॱ1. νϟϯΫϋϯυϧ ΛϚελʔʹϦΫΤετ2. ֘νϟϯΫͷϓϥΠϚϦʔϨϓϦΧͱ ηΧϯμϦʔϨϓϦΧͷॴΛڭ͑ͯΒ͏3. σʔλΛҙͷϨϓϦΧʹૹΔ σʔλΛड͚औͬͨϨϓϦΧ࣍ͷϨϓϦΧʹྲྀ͢4. શϨϓϦΧ͕σʔλΛೝࣝͨ͠Βɺ WriteϦΫΤετΛϓϥΠϚϦʔʹૹΔ
खॱ5. ϓϥΠϚϦʔWriteϦΫΤετΛडɺ ϦΫΤετʹγϦΞϧ൪߸Λ͚ͭΔ(ૢ࡞ͷॱংΛܾఆ) ·ͣϓϥΠϚϦʔͰૢ࡞Λ࣮ߦ6. ϓϥΠϚϦʔ͕WriteϦΫΤετΛଞͷϨϓϦΧʹૹΔɻ ֤ϨϓϦΧϦΫΤετΛγϦΞϧ൪߸ॱʹॲཧ7. ηΧϯμϦʔૢ࡞͕ऴΘͬͨΒͦͷࢫΛ ϓϥΠϚϦʔʹ͑Δ8. ϓϥΠϚϦʔ͕ૢ࡞ྃΛΫϥΠΞϯτʹ͑Δ
Write Operationͷࣦഊ• ॻ͖ࠐΈʹࣦഊͨ͠ϨϓϦΧ͕͋Δͱ͖ ΫϥΠΞϯτ σʔλૹ৴ૢ࡞͔ΒΓ͢• ֤ͦͦϨϓϦΧͷbyteྻ͕ಉҰͰ͋Δ͜ͱΛ อূ͍ͯ͠ͳ͍• Appendͷͱ͖֤ϨϓϦΧͷ࠷େoffsetΛΈΔ
Snapshot Operation
Snapshot Operation• ԾϑΝΠϧσΟϨΫτϦͷίϐʔΛ࡞Δ• Copy-on-Writeઓུ• ରνϟϯΫʹ Write Operation ͕དྷͨͱ͖ ৽νϟϯΫ͕ݩνϟϯΫͱಉҰͷॴʹ࡞ΒΕΔ• νϟϯΫσʔλ͕ωοτϫʔΫΛඈͼަ͏͜ͱΛ͍Ͱ͍Δ
ࢀߟจݙ• The Google File System