αααα»αααΆαααΆα
α ααα»α’αααΈααΆαααΆααααααα―αααΆααααααααααΆααααΌαααΆα?
ααΆαααΆααααααααααΎαααΆαααααααΆαααααααΆαααααααα·ααΈαααααααΎαααΆα HDFS ααΌα ααΆ MapReduce αα·α Spark ααΊααΆαααααααΆαααααΆααααΌαααΆαααΎααααΈααααααα α’αΆα αα·αααααααα·ααααααα αααα αΆααΆαααααααααΌαααΆαααααα‘αΎααααααΆαααααΆααααα»αααΆαααααααααααααα»ααα·αααααααα ααααα·αααΎααΎαααΆααααααααΆααααα·ααααααΆααΆαααΆααααααααα α¬ααααα·αααΎααΆαα§ααααααα½αα ααα½αα
ααααΎαααΆααα·αααααααααααααΎαααΆααααα»ααα ααΎααααααααααααΆααααα»α - Hadoop αααααΆαα»ααα·ααααααααααααααααΌαααΆαααΎααααΈαααααα ααΆαααΌαααΆαα’ααα±αααα α»αα ααααααααΈααΎααΆα ααααααααααααΎαααΆα αααααΆα αααααααααααα αΌα/αα·ααααα αα·αα’αααΈαααααααααααααΌαααΆααααα»αα αα ααααααααα·ααΆααα·ααααααααΎαα‘αΎα ααΆαα αααΆαααΎααααΎαααΆα αα·ααααααΆαα»αααΆααααΌα ααααΆαααα
αααααααααΆαα―αααΆααααααααα
αααα»α
- αααααααΆα’αΆαααΏαααΆααα»αα
- αααααααΆααααΏαααΆααα»αα
- α―αααΆααααααΆαα αααααααα
- ααΆαααΆαααααααααΆααααΆααα·αααααααααααααΆαααα
- αααααΈαααΆαααΆααααααΆααααα αΆααα
ααααααα―αααΆααα½αα ααα½αααααΌαααΆαααααα»ααα»ααααααΆααααΆαααααΎααααΆααααΌαα αααααααααααααΆααααΆαααααΎααααΆααααΆααααΆααααααααααα αα·ααα½αα ααα½ααααααααΌαααΆααα ααΆα‘αΎαααΎααααΈαααααααΆααααααααα·ααααααααΆααααΆααα ααΌα αααααααααΎαααΊαα·αααΆααααΆααα
αααααααααΆαα―αααΆα Avro
αααααΆαα ααααααα·αααααα Avro ααααΌαααΆαααααααΎαααΆαααΌααααΌααΆα - ααΆα ααααα’αααααααααΆαααΌαααααΆααααααΊααΆαααααααααα»ααα·ααααααααααα’αααααα αααα»α Hadoop α ααΆαααααΆαα»ααααααααΆαααααΆαααααα JSON αααααααΎα±ααααΆααΆααααα½ααααα»αααΆαα’αΆα αα·αααααααΆαααααααααα·ααΈααΆαα½αα αα·αααααααααα½αααΆαααα·ααα αααα»ααααααααααααΈα ααααα½α αα·αααΆαααααα·αααααΆαα
ααααααααααααααααα Avro ααΊααΆααΆα’ααααΆααααΉαα α―αααΆαα’αΆα ααααΌαααΆαααααΎαααΆαααΆααΆααΆααααααααααΆ αα αα α»αααααα C, C++, C#, Java, Python αα·α Ruby α
ααααααααααΆαααααα Avro ααΊααΆαααΆααααααααΉαααΆαααααααΆαααααΆαααααααααΆααααα·αααααααααααααΆααααααΌαααΆααααααααΆ αααααΊαα·ααααα Avro αααααΈααΆαααααΆααααααΌααααααααΆααα - ααΆααα»α ααΆααααααα α¬ααΆαααααΆααααααΌαααΆαα
Avro ααΆαααααα ααΆαααααααααα·ααααααααααααααααΆα ααΆα§ααΆα ααα α’αααα’αΆα αααααΎααααααααααΆαααααΆαα’αΆαα αααααααααααΆαααΆαααααα αΌα αα·ααααααααααΆααα
αααααααααααΊααα’αααααΆααααΆαααααααα
ααΆαααααααα
α»αα
α (ααΆαααααΆααααααΌα) ααααΉααα·αααααα (
ααΌα αααα αααααααααααΊαααααα·αααααα»ααααααΆααααΆαααααααα ααΆαααααααα α»αα αααααΉααα·αααααααααααΆααα ααα»ααααΆααααααα
- αα·ααααααααΈααααααααααΆααααααΆααααΌαααΆαα’αΆαααΆαααααα»ααααααΆααααααΎαααΆααααααααααααααααααα α»αααααα α αΎααααααααααααα’ααααΎαα½ααααααΆαααααα·αααααΆαααΆααααα»αααααΈαααα
- ααααααααα α»ααααααα’αΆα ααΆαααααΆααΆααααααααΆαααααΈα―αααΆααααΆαααΆααααα½α - αα·αα αΆαααΆα ααααααΆαα»ααααααααΆαααααΆα ααααα‘ααααΈααααΆαα αααα»αααΆααααα»αααααΆααΆααααα ααα
- ααΆααααΆαααααΆααααααΌααα αααααααΆαααααΎαααααΌαααΆαααααΎαααΆααααΆαααΆααααα½α (ααΆααα·αααααααααααααΆααα) α
ααααααα―αααΆα parquet
Parquet ααΊααΆααααααα―αααΆααααααααΎαα αα αααααΆαα Hadoop ααααααααΆαα»α αα ααΆαααααααααα·αααααααααααΆαααΆαααααα»αααααααααΆαα½αααααΆαααααΎ.
ααΎαααααααααα ααΉααα·ααΈααΆααααααα½ααααααααααααααΈ ααΆαααΈαααΆαααααα·αααααΆαααΆααα αααα»αααααααααααααΆααααα»α αα·αααααΎαααΆαα
ααΆααΆαααααααααααΆαα·ααααααααΆαααααα½ααααα’αΆααα½αααααΆααααΆααααΈααΆααΆαααααΌααΆα (αα½αααααΆα αααΎα) α ααΌαα’ααα»αα ααααααααααα―αααΆα ααΆααααα½αααα αΆαααΆα αααα»ααααααααααααΌαααΆαα’αΆα ααΌα αααα I/O ααααΌαααΆααααααΆαα»αα±αααα·α αααα»αα
ααΆαααααααΆα αα·αααΆαααααααααΌα αα½αα ααΎααααΈαααααΆααααα αααΆααα’αααΈααααααα―αααΆα Parquet αα αααα»α Hadoop ααΌαααΎαααΆααΎαααααααααααΆαααΌαααααΆαααΎαα½ααα - i.e. columnar - format α αααααααααΆαααααααααΆαα»ααααααααααααααααΆαααααΆαααα½αααααΈαα½ααααΆαα½αααααΆα
ID
ααααα
ααΆααααααΆα
1
α’αα α‘α’α£α€α₯α¦
d1
2
α’αα α‘α’α£α€α₯α¦
d2
3
α’αα α‘α’α£α€α₯α¦
d3
ααΆααααααααααα’αααα αα·ααααααααΉαααααΌαααΆααααααΆαα»αααΌα ααΆααααααα
1
α’αα α‘α’α£α€α₯α¦
d1
2
α’αα α‘α’α£α€α₯α¦
d2
3
α’αα α‘α’α£α€α₯α¦
d3
αααα»αααααααα―αααΆα columnar αα·ααααααααΌα ααααΆααΉαααααΌαααΆααααααΆαα»αααΌα αααα
1
2
3
α’αα α‘α’α£α€α₯α¦
α’αα α‘α’α£α€α₯α¦
α’αα α‘α’α£α€α₯α¦
d1
d2
d3
αααααααα½αααααΆαααααα·αααααΆαααΆα αα ααααααα’αααααααΌαααΆααα½ααα½αααα αααΎαααΈααΆααΆααα½αα ααΆααΉαα’αΆααααα½ααααααααααΌαααΆα αααααααΆαα ααΆααααααΆα ααΆαααααααα ααααα·ααααα·ααΆα I/O ααααΌαααΆααααααΆαα»ααααα»αααααα·αα’αααααααΆα
α§ααΆα ααα α’αααααααΆααααααααΌαααΆααα½ααα NAME ααα»αααααα IN
ααΌα αααα αααααααα½αααααααΎα±ααααααΎαααΆααααα½ααααααΎαα‘αΎα αααααααΆααααΌαααΆααααααααΆααααααααα·α ααΆααα»α ααΎααααΈαα ααααα½ααααααααΌαααΆα αα·αααΆαααααααα ααα½αααααα·ααααα·ααΆα I/O ααΈαααααααΆααααα½ααααααα ααααΆαααα»ααααααααααααΌαααΆαα’αΆαα
αααααααα·ααααααα½αααα
ααΎααααΈαααααΈααααααα―αααΆα Parquet αα
αααα»α Hadoop α’αααααααΌαααΉαααΈααααααααααΆααααααα
- αααα»αααααααα’αααα (row group) : logical horizontal division of data into row. αααα»ααα½αααααα½αααΆαααααααααα½αααααΈαα½αααα αααα»ααααα»ααα·ααααααα
- ααααααα½ααα (column chunk) : ααααααααα½αααααΆααααΆαααα½αα ααααααα½αααααΆαααααααααα αααα»ααααα»αααΆααααΆαααααα½αααα α αΎαααααΌαααΆαααΆααΆααΆααΆααααααΆαα αααα»αα―αααΆαα
- ααααα (ααααα)α ααααααα½αααααααΌαααΆααααα αααα ααΆαααααααααααααααΈαα½ααα αα½αα αααααααΆαα αααααΎαααΌαα ααΌα ααααα’αααα’αΆα αααααααααααααα·αα αΆαααΆα ααα αααα’αΆαα
αα
ααΈαααα
αααααΎαααααΆααααααΆαααααααααααααα»αααααα PAR1 (4 αα) ααααααααα’ααααααααΆαα―αααΆαααΆα―αααΆα Parquet α
ααΆααααΆαα·ααΆαααΌα ααΆααααααα
- αα·ααααααααααΆα―αααΆααααααΆαααΌα’αααααα αΆααααααΎααααα·ααααααααααΆαααααα½αααααΈαα½ααα αα αααα’αΆα α’αααααααΌαααα’αΆααα·ααααααααααΆααααα―αααΆαααΆαα»ααα·α ααΎααααΈαααααααααααααα½αααααΆααα’αααααα αΆααα’αΆααααααα αααααΆααααααααααα½ααααα½αααααααΌαααΆαα’αΆαααΆαααααααααΆααα αα·ααααααααααΆαααααααααα½αααΆααααααααααα αααααααΆααα αα·αααΌαααααααααααααααΆαα½αα
- αααααααα·ααααααααααΆ (4 αα) α
- αααααααααα PAR1 (4 αα) α
αααααααααΆαα―αααΆα ORC
ααααααα―αααΆααα½α-αα½ααααααΆαααααΎα±αααααααΎα (αα½αβαα½αβαααβαααβααΆαβααααΎβα±ααβαααααΎαβα‘αΎα,
αα»ααααααααα·αααααααα ORCα
- α―αααΆααα½αααΊααΆαααααααααα·α αα ααΆαααΈαα½αα αααααΆαααααααααΆααααα»ααα ααΎ NameNode (ααααΆααααααα)α
- ααΆαααΆαααααααααΆαααααααααα·αααααα Hive αα½αααΆαα DateTime αααααααα·ααααααααααΆα αα·ααααα»αααααΆα (αα ααΆαααααααα αααααΈ αααααΈ αα·ααα ααΈα)α
- ααΆαα’αΆαα―αααΆαααΌα ααααΆαααα»ααααααααΆαααααΆαααααααΎαααΆα RecordReader αααααααααΆα
- αααααααΆααααα»αααΆααααααα―αααΆαααααα·αα αΆαααΆα αααααααααααααΆαααααΆααα
- ααΆααααΆαααααααΆαααααΆααααα ααα’αααα αα αΆα heap α’αα·ααααΆαααα’αΆα ααααΎαα ααΆααααααΆααααααΎαααΆαα’αΆα/ααααααααααα’ααααΎααααααΆααα αααα»αααΆααααΆα―αααΆαα
- αα·ααααααααααΆααααΌαααΆααααααΆαα»ααααα»αααααααααααααααααααααααααΈα Protocol Buffers αααα’αα»ααααΆαα±αααααα αΌα αα·ααα»αααΆαα
ORC αααααΆαα»αααααα»αααααααα’αααααααα»αα―αααΆααααα½α α αΎααα
αααα»αααααα»α αα·ααααααααααα’ααααααααΌαααΆααααααΆαα»αααΆαααααααα½αααα
α―αααΆα ORC αααααΆαα»ααααα»ααααααααΆαααααα α ααΆααααΌα αα·αααααααΆααααα½ααα αααα»αααΆααααΆααα―αααΆαα Postscript αα α α»ααααα ααααα―αααΆαααΆααααΆαααΆαααααααααα αΆαα αα·αααα αααααΆααααΆαααααΆααααα αΆααα
ααα αααααΌαααααΆαααΎαααΊ 250 ααααΆααα αααααΆαααααααΌααααααααα ααΆαα’αΆαααΈ HDFS ααααΌαααΆαα’αα»ααααααΆααααααΆαααααα·αααααΆαα αα αααα»ααααα»αααΆααααααΆαααα
ααΆααααΆα―αααΆααααααααΆαααααΈααααΌααααα»αα―αααΆα α ααα½ααα½αααααααα»ααα½ααα½α αα·ααααααααα·αααααααααα½αααΈαα½ααα αααααααααααααα ααα½αααΆαα α’αααααααΆ α’αα·ααααΆ αα·αααααΌααααααΆαααα½αααααΈαα½ααααααααΌαααΆαααααααα ααΈααααααααα
ααΆααααΆαααααααααΆαααααΈααΆααααααααΈαα
αα·αααααααα½ααααααααΌαααΆαααααΎαα ααααααααααΆααΆαα
αα·αααααααα·αα·αααααα½ααααα αΌααααααα’αααααααΆ αα·αα’αα·ααααΆαααααΆαααα½αααααΈαα½αα αα·αααΈααΆαααααα½αααααααα»ααα½αααααΈαα½ααα αα·αα·αααα ORC ααααΌαβααΆαβααααΎβαααααΆααβααβααΆαβααααΎαααΎαβααααΌα αα·αβαααα»αβαα½αβααα αα·ααααβαααααΆααβααΆαβααααΎαβαααα½αβααα
ααΆααααααααααααααααααΆαα―αααΆααααααα
Avro ααααααααααΆαα½α parquet
- Avro ααΊααΆαααααααααα»ααα½αααα ααααααααα Parquet αααααΆαα»ααα·αααααααααα»ααα½αααα
- Parquet ααΊαααααα·ααααΆααααααΆαααααα½ααα·ααΆα ααΆααααααΆ ααααα·ααααα·ααΆαα’αΆα αα·ααααα½ααα·ααααααααΆαααααα·αααααΆαααΆαααΆααααααα
- ααααα·ααααα·ααΆαααααααα αααα»α Avro ααααΌαααΆαα’αα»αααααααΆαααΆαααααα·αααααΆαααΆααα αααα»α Parquet α
- Avro αααααααΆαααΆαα½αααΉαααΆααα·ααααααααααααΈααΆααααα αΆαααα»αα Parquet ααΆααααααααΆααααααααααααααΆααα ααααααααα Avro ααΆααααααΆααα·αααααααα α»αα»αααΆα αααααΊααΆααααααα α¬ααααΆααααααΌααα½αααα
- Parquet ααΊααα’αααααΆααααΆαααΆααα½ααααα»ααααααα½ααααααα»αααΆααΆααα α»αα½αα Avro ααΊαααααααααααΆααααααα·ααααα·ααΆα ETL αααααΎααα½ααα½αααααΆααα’ααα
ORC αααααΉα Parquet
- Parquet αααααΆαα»ααα·αααααααααααΆαααΆααααΆααααααΎαααΆααα»αα
- ORC ααΊαααααα·ααααΆααααα»αααΆαααααΆααααααΈααΆααα»αα αααΆαα
- ORC ααΆαααααααααααααααααα· ACID α
- ORC ααααα½ααα·ααααααααΆααααααΎαααΆααα»αα
ααΎααΆαα’αααΈααααααααααΌαα’αΆαααΎαααααΆααα:
ααΆααα·ααΆααα·αααααααααα αααα»ααααα ααααααααααα»αα αα»αα’αΆα ααααΆαααΆαα·αααααααααααααα·α .ααΆαααααΆαααααΆαααΆαα αααααααααααΆαααααΌαααααΆααα·αααααα .ααα»αααα·αααΌααααααααααΎαα’αααΈααΆαααααΆααααααΌαααΈααΈαα .
ααααα: www.habr.com