Big Data Processing Technologies Chentao Wu Associate Professor Dept. of Computer Science and Engineering wuct@cs.sjtu.edu.cn
Schedule • lec1: Introduction on big data and cloud computing • Iec2: Introduction on data storage • lec3: Data reliability (Replication/Archive/EC) • lec4: Data consistency problem • lec5: Block storage and file storage • lec6: Object-based storage • lec7: Distributed file system • lec8: Metadata management
Collaborators
Contents Metadata in DFS 1
Metadata • Metadata = structural information File/Objects: attributes in inode/onode Main problem for metadata in DFS: indexing
Metadata Server in DFS (Lustre)
Metadata Server in DFS (Ceph)
Metadata Server in DFS (GFS)
Metadata Server in DFS (HDFS)
NameNode Metadata in HDFS • Metadata in Memory The entire metadata is in main memory No demand paging of meta-data • Types of Metadata List of files List of Blocks for each file List of DataNodes for each block File attributes, e.g creation time, replication factor • A Transaction Log Records file creations, file deletions. etc
Metadata level in DFS (Azure) Partition Layer – Index Range Partitioning • Split index into Blob Index RangePartitions based on Account Account Container Container Blob Blob Storage Stamp Name Name Name Name Name Name load A-H: PS1 aaaa aaaa aaaa aaaa aaaaa aaaaa Partition H’ -R: PS2 • Split at PartitionKey …….. …….. …….. ……… ……… ……… Master R’ -Z: PS3 boundaries …….. …….. …….. ……… ……… ……… Partition Partition Account …….. Container …….. Blob …….. Map harry pictures sunrise A-H • Server PartitionMap tracks Index Name Name Name …….. Front-End …….. …….. PS 1 harry pictures sunset RangePartition assignment Server …….. …….. …….. ……… ……… ……… to partition servers …….. …….. …….. A-H: PS1 Partition Partition ……… ……… ……… …….. …….. …….. • H’ -R: PS2 Front-End caches the Account Container Blob Server Server R’ -Z H’ -R richard videos soccer Name Name Name R’ -Z: PS3 …….. …….. …….. PartitionMap to route user PS 3 richard videos tennis PS 2 …….. …….. …….. Partition requests ……… ……… ……… Map …….. …….. …….. ……… ……… ……… • Each part of the index is …….. …….. …….. zzzz zzzz zzzzz assigned to only one zzzz zzzz zzzzz Partition Server at a time
Metadata level in DFS (Pangu) Partition layer LB LVS Load Balancing Access Layer Protocol Manager & Restful Protocol Access Control Partition Layer Partition & Index Key-Value Engine Persistent Layer Persistent, Redundancy Pangu FS & Fault-Tolerance
Contents 2 ISAM & B+ Tree
Tree Structures Indexes • Recall: 3 alternatives for data entries k*: • Data record with key value k • < k , rid of data record with search key value k > • < k , list of rids of data records with search key k > • Choice is orthogonal to the indexing technique used to locate data entries k*. • Tree-structured indexing techniques support both range searches and equality searches . ISAM (Indexed Sequential Access Method) : static structure B+ tree : dynamic, adjusts gracefully under inserts and deletes.
Range Searches • Choose `` Find all students with gpa > 3.0 ’’ If data is in sorted file, do binary search to find first such student, then scan to find others. Cost of binary search can be quite high. • Simple idea: Create an `index’ file. Level of indirection again! Index File kN k2 k1 Data File Page N Page 3 Page 1 Page 2 Can do binary search on (smaller) index file!
index entry ISAM P0 K 1 P 1 K 2 P m P 2 K m • Index file may still be quite large. But we can apply the idea repeatedly! Non-leaf Pages Leaf Pages Overflow page Primary pages Leaf pages contain data entries
Comments on ISAM Data Pages • File creation : Leaf (data) pages allocated sequentially, sorted by search key. Index Pages Then index pages allocated. Then space for overflow pages. • Index entries : <search key value, page id>; they `direct’ Overflow pages search for data entries , which are in leaf pages. • Search : Start at root; use key comparisons to go to leaf. Cost log F N ; F = # entries/index pg, N = # leaf pgs • Insert : Find leaf where data entry belongs, put it there. (Could be on an overflow page). • Delete : Find and remove from leaf; if empty overflow page, de-allocate. Static tree structure : inserts/deletes affect only leaf pages .
Example ISAM Tree • Each node can hold 2 entries; no need for `next- leaf- page’ pointers. Root 40 20 33 51 63 46* 55* 40* 51* 97* 10* 15* 20* 27* 33* 37* 63*
After Inserting 23*, 48*, 41*, 42* ... Root 40 Index Pages 20 33 51 63 Primary Leaf 10* 15* 20* 27* 46* 55* 33* 37* 40* 51* 97* 63* Pages 41* 48* 23* Overflow Pages 42*
... then Deleting 42*, 51*, 97* Root 40 20 33 51 63 40* 46* 55* 10* 15* 20* 27* 33* 37* 63* 48* 41* 23* Note that 51 appears in index levels , but 51* not in leaf!
Pros, Cons & Usage • Pros Simple and easy to implement • Cons Unbalanced overflow pages Index redistribution • Usage MS Access Berkeley DB MySQL (before 3.23) MyISAM (not real ISAM)
B+ Tree: The Most Widely Used Index • Insert/delete at log F N cost; keep tree height-balanced . (F = fanout, N = # leaf pages) • Minimum 50% occupancy (except for root). Each node contains d <= m <= 2d entries. The parameter d is called the order of the tree. • Supports equality and range-searches efficiently. Index Entries (Direct search) Data Entries ("Sequence set")
Example B+ Tree • Search begins at root, and key comparisons direct it to a leaf (as in ISAM). • Search for 5*, 15*, all data entries >= 24* ... Root 30 13 17 24 33* 34* 38* 39* 3* 5* 19* 20* 22* 24* 27* 29* 2* 7* 14* 16* Based on the search for 15*, we know it is not in the tree!
B+ Tree in Practice • Typical order: 100. Typical fill-factor: 67%. • average fanout = 133 • Typical capacities: • Height 4: 133 4 = 312,900,700 records • Height 3: 133 3 = 2,352,637 records • Can often hold top levels in buffer pool: • Level 1 = 1 page = 8 Kbytes • Level 2 = 133 pages = 1 Mbyte • Level 3 = 17,689 pages = 133 MBytes
Inserting a Data Entry into a B+ Tree • Find correct leaf L. • Put data entry onto L . • If L has enough space, done ! • Else, must split L (into L and a new node L2) • Redistribute entries evenly, copy up middle key. • Insert index entry pointing to L2 into parent of L . • This can happen recursively • To split index node, redistribute entries evenly, but push up middle key. (Contrast with leaf splits.) • Splits “grow” tree; root split increases height. • Tree growth: gets wider or one level taller at top.
Example B+ Tree - Inserting 8* Root 30 13 17 24 33* 34* 38* 39* 3* 5* 19* 20* 22* 24* 27* 29* 2* 7* 14* 16*
Example B+ Tree - Inserting 8* Root 17 24 5 13 30 2* 3* 33* 34* 38* 39* 5* 7* 8* 19*20*22* 24* 27* 29* 14* 16* Notice that root was split, leading to increase in height. In this example, we can avoid split by re-distributing entries; however, this is usually not done in practice.
Inserting 8* into Example B+ Tree Entry to be inserted in parent node. • Observe how (Note that 5 is s copied up and 5 minimum occupancy continues to appear in the leaf.) … is guaranteed in both leaf and index pg 3* 5* splits. 2* 7* 8* • Note difference between copy-up and push-up ; be sure you understand the Entry to be inserted in parent node. reasons for this. (Note that 17 is pushed up and only 17 appears once in the index. Contrast this with a leaf split.) … 5 13 24 30
Deleting a Data Entry from a B+ Tree • Start at root, find leaf L where entry belongs. • Remove the entry. • If L is at least half-full, done! • If L has only d-1 entries, • Try to re-distribute, borrowing from sibling (adjacent node with same parent as L) . • If re-distribution fails, merge L and sibling. • If merge occurred, must delete entry (pointing to L or sibling) from parent of L . • Merge could propagate to root, decreasing height.
Example Tree (including 8*) Delete 19* and 20* ... Root 17 24 5 13 30 33* 34*38* 39* 2* 3* 5* 7* 8* 19*20*22* 24* 27*29* 14* 16* • Deleting 19* is easy.
Example Tree (including 8*) Delete 19* and 20* ... Root 17 27 5 13 30 2* 3* 33* 34*38* 39* 5* 7* 8* 22*24* 27* 29* 14* 16* • Deleting 19* is easy. • Deleting 20* is done with re-distribution. Notice how middle key is copied up .
... And Then Deleting 24* • Must merge. 30 • Observe ` toss ’ of index entry (on right), and ` pull down ’ of index entry 39* 22* 27* 29* 33* 34* 38* (below). Root 5 13 17 30 3* 39* 2* 5* 7* 8* 22* 34* 38* 27* 33* 14* 16* 29*
Recommend
More recommend