Changeset 40002 for trunk/doc/release.2015/ps1.datasystem/datasystem.tex
- Timestamp:
- Mar 16, 2017, 9:41:23 AM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/doc/release.2015/ps1.datasystem/datasystem.tex
r40001 r40002 1026 1026 the rest of the pipeline. 1027 1027 1028 \subsection{Nebulous} 1029 \label{subsec: nebulous} 1030 Storing the large volume of data that is generated by the GPC1 camera 1031 was recognized early in the Pan-STARRS project as a major concern. 1032 The \ippprog{Nebulous} system was designed to organize this data. The 1033 main components of this system is a database storing the locations of 1034 the files, with a Simple Object Access Protocol interface between the 1035 database and the other IPP programs. The actual files are stored on 1036 NFS mounted partitions on a series of storage nodes in the IPP cluster 1037 that can be accessed throughout the cluster. This distribution of 1038 files is useful to balance the disk I/O, as this parallelizes the 1039 load. 1040 1041 The original design of \ippprog{Nebulous} was intended to aid in the 1042 targetted processing of data, by having specific image data (such as 1043 all the images from one OTA device) located on a single storage node. 1044 This would allow any jobs involving that data to be assigned to the 1045 storage node, eliminating network I/O. Important data could be 1046 duplicated to additional data nodes, with the alternate locations 1047 stored in the database. In practice, however, hardware failures and 1048 increases in hard drive storage volumes and network bandwidth have 1049 reduced the degree to which the IPP processing is targeted. 1050 1051 When a program creates a new file in \ippprog{Nebulous}, it supplies 1052 an URI of the form \code{neb://HOST.VOLUME/PATH/FILENAME}. The host 1053 and volume specifiers are optional, and allow a file to be created on 1054 a specific node. The path and filename appear similar to a standard 1055 full file location, and are used internally as the ``external id''. A 1056 storage object entry is then created in the database for this id, and 1057 an instance of the file created on the specified node (or at random 1058 from available nodes if left empty). This instance is created in a 1059 deterministic filename location. The external id is hashed using the 1060 SHA-1 function, and the first four hexadecimal digits of this hash are 1061 separated into two two-digit strings and used as the top and second 1062 level directory location for the disk file. The disk file is created 1063 using the database instance id, and a transformed version of the 1064 external id, which has colons replacing any forward slash characters, 1065 to convert the external id path into a filename. For the example URI 1066 above, this results in a file located on disk in a location like 1067 \code{/data/HOST.VOLUME/nebulous/d5/d8/9244993440.PATH:FILENAME}. 1068 This file naming structure is useful, as it duplicates database 1069 contents on disk. 1070 1071 The storage volumes that contain the data on disk are defined in the 1072 \ippprog{Nebulous} database in a number of ways. First, the locations 1073 and mount points for the actual NFS storage are listed in the 1074 \ippdbtable{volume} table. This table contains columns indicating if 1075 the volume should be used for reading (\ippdbcolumn{available}) and 1076 writing (\ippdbcolumn{allocate}), allowing these properties to be 1077 manually set, which is useful in scheduling downtime for hardware 1078 issues. Another column, \ippdbcolumn{xattr}, is used to control the 1079 behavior of this volume, with specific values used to denote desired 1080 behavior. For instance, the value of $1$ is used to indicate that a 1081 volume should only be used as a backup volume (which accepts only 1082 replicated copies), and the value of $5$ is used to indicate that the 1083 volume is permanently unavailable, and should be ignored. 1084 1085 In addition to this permanent table describing the volumes, a 1086 \ippdbtable{mountedvol} table also exists that only lists those 1087 volumes that are currently visible and accessible from the 1088 \ippprog{Nebulous} database server. This table also lists the total 1089 and currently available disk space on each volume, allowing the 1090 \ippprog{Nebulous} load balancing routines to prioritize those volumes 1091 with large unused disk space before filling the volumes with only 1092 small amounts remaining. This table is regenerated every ten to 1093 twenty minutes, after a scan of each of the volumes listed in the 1094 \ippdbtable{volume} table. 1095 1096 The final table controlling the operations of the \ippprog{Nebulous} 1097 volumes is the \ippdbtable{cabinet} table, which organizes the 1098 individual volumes into ``cabinets,'' a concept loosly based on the 1099 physical arrangement of the storage servers in the data center. These 1100 cabinets are used to prevent the replication of a storage object 1101 within a group of volumes where all instances of the object could be 1102 taken off line by a single failure. As the data center cabinets share 1103 power supplies among the servers they contain, ensuring physical 1104 distance between replicated copies is important to guarantee that a 1105 temporary failure of one of these devices does not significantly 1106 impact processing. 1028 \section{Post-Processing : Database Ingest \& Calibration} 1107 1029 1108 1030 \subsection{DVO} … … 1403 1325 analysis \citep[][see]{magnier2017a}. 1404 1326 1405 \subsection{Datastore repositories} 1406 \label{subsec: datastore} 1407 1408 Transferring data between the IPP and other parts of the Pan-STARRS 1409 system is generally accomplished via a ``datastore'', an http service 1410 that exposes data in a common form. One of the main datastores used 1411 by the IPP is the one located at the summit. This datastore exposes, 1412 a list of the exposures obtained since the start of the PS1 1413 operations. Requests to this server may restrict to the latest by 1414 time. Each row in the listing includes basic information about the 1415 exposure: an exposure identifier (e.g., o5432g0123o; 1416 see~\ref{GPC1.names} for details), the date and time of the exposure, 1417 the telescope commanded pointing, the filter and exposure time, and 1418 the observation comment for that exposure. The row also provides a 1419 link to a listing of the chips associated with that exposure. This 1420 listing includes a link to the individual chip FITS files as well as 1421 an md5 checksum. Systems which are allowed access may download chip 1422 FITS files via http requests to the provided links. 1423 1424 The IPP also uses datastores to provide access to its own data 1425 products. The detections identified in the \ippstage{diff} stage 1426 images are organized by the \ippstage{publish} stage, which writes 1427 output files containing those detections to a datastore that is 1428 monitored by the Moving Object Processing System 1429 \citep[][MOPS]{2013PASP..125..357D}, which analyses the detections to 1430 identify asteroids. Separate datastores are also used by the 1431 \ippstage{distribution} stage to provide access to data products to 1432 the Pan-STARRS Science Consortium members. 1327 \subsection{Addstar : DVO Ingest} 1328 \label{subsec: addstar} 1329 \note{CZW: This should be reviewed.} 1330 1331 Upon completion of the processing of each stage, the results of the 1332 photometry analysis are isolated in a large number of individual 1333 catalogs, with little connection between the separate measurements of 1334 astronomical sources. Unifying these measurements in a DVO database 1335 is the purpose of the \ippstage{addstar} processing. The catalogs for 1336 the \ippstage{camera}, \ippstage{staticsky}, \ippstage{skycal}, 1337 \ippstage{fullforce}, and \ippstage{diff} are processed in this 1338 fashion, although not every measurement in each catalog are included 1339 in the final DVO that is constructed. 1340 1341 The construction of this final DVO is performed in a hierarchical 1342 process. The individual catalogs are added to a \ippmisc{minidvo}, 1343 which is simply a DVO database defined over some subset of possible 1344 inputs. These \ippmisc{minidvos} are then merged into larger 1345 databases to construct the final completely catalog. \note{describe 1346 database tables} 1347 1348 Each catalog that is to be added to DVO has an entry created in the 1349 \ippdbtable{addRun} database table. This entry notes which 1350 \ippdbcolumn{stage} is the source of the catalog, and links to the 1351 appropriate database table with the \ippdbcolumn{stage\_id} field. As 1352 some stages, such as the \ippstage{diff} stage, create more than a 1353 single catalog, multiple entries with the \ippdbcolumn{stage\_id} are 1354 created, with the \ippdbcolumn{stage\_extra1} field containing an 1355 index to the individual components. The catalog specified by the 1356 entry is added to the target \ippmisc{minidvo} by the 1357 \ippprog{addstar} program, \note{describe what's done?}. When this 1358 completes, an entry containing the statistics of the job is added to 1359 the \ippdbtable{addProcessedExp} table. 1360 1361 \subsection{Calibration Operations} 1362 \label{subsec: calibration} 1363 1364 \subsection{IPP to PSPS} 1365 \label{subsec: ipp2psps} 1366 \note{Default to pointing to Flewelling et al 2017?} 1367 1368 \subsection{PSPS Load \& Merge} 1369 \label{subsec: psps} 1370 \note{Default as well to pointing to Flewelling et al 2017?} 1371 1372 \section{Operations \& Automation} 1433 1373 1434 1374 \subsection{Pantasks \& Parallel Processing} … … 1592 1532 \ippdbcolumn{projection\_cell}. 1593 1533 1534 \subsection{Nebulous} 1535 \label{subsec: nebulous} 1536 Storing the large volume of data that is generated by the GPC1 camera 1537 was recognized early in the Pan-STARRS project as a major concern. 1538 The \ippprog{Nebulous} system was designed to organize this data. The 1539 main components of this system is a database storing the locations of 1540 the files, with a Simple Object Access Protocol interface between the 1541 database and the other IPP programs. The actual files are stored on 1542 NFS mounted partitions on a series of storage nodes in the IPP cluster 1543 that can be accessed throughout the cluster. This distribution of 1544 files is useful to balance the disk I/O, as this parallelizes the 1545 load. 1546 1547 The original design of \ippprog{Nebulous} was intended to aid in the 1548 targetted processing of data, by having specific image data (such as 1549 all the images from one OTA device) located on a single storage node. 1550 This would allow any jobs involving that data to be assigned to the 1551 storage node, eliminating network I/O. Important data could be 1552 duplicated to additional data nodes, with the alternate locations 1553 stored in the database. In practice, however, hardware failures and 1554 increases in hard drive storage volumes and network bandwidth have 1555 reduced the degree to which the IPP processing is targeted. 1556 1557 When a program creates a new file in \ippprog{Nebulous}, it supplies 1558 an URI of the form \code{neb://HOST.VOLUME/PATH/FILENAME}. The host 1559 and volume specifiers are optional, and allow a file to be created on 1560 a specific node. The path and filename appear similar to a standard 1561 full file location, and are used internally as the ``external id''. A 1562 storage object entry is then created in the database for this id, and 1563 an instance of the file created on the specified node (or at random 1564 from available nodes if left empty). This instance is created in a 1565 deterministic filename location. The external id is hashed using the 1566 SHA-1 function, and the first four hexadecimal digits of this hash are 1567 separated into two two-digit strings and used as the top and second 1568 level directory location for the disk file. The disk file is created 1569 using the database instance id, and a transformed version of the 1570 external id, which has colons replacing any forward slash characters, 1571 to convert the external id path into a filename. For the example URI 1572 above, this results in a file located on disk in a location like 1573 \code{/data/HOST.VOLUME/nebulous/d5/d8/9244993440.PATH:FILENAME}. 1574 This file naming structure is useful, as it duplicates database 1575 contents on disk. 1576 1577 The storage volumes that contain the data on disk are defined in the 1578 \ippprog{Nebulous} database in a number of ways. First, the locations 1579 and mount points for the actual NFS storage are listed in the 1580 \ippdbtable{volume} table. This table contains columns indicating if 1581 the volume should be used for reading (\ippdbcolumn{available}) and 1582 writing (\ippdbcolumn{allocate}), allowing these properties to be 1583 manually set, which is useful in scheduling downtime for hardware 1584 issues. Another column, \ippdbcolumn{xattr}, is used to control the 1585 behavior of this volume, with specific values used to denote desired 1586 behavior. For instance, the value of $1$ is used to indicate that a 1587 volume should only be used as a backup volume (which accepts only 1588 replicated copies), and the value of $5$ is used to indicate that the 1589 volume is permanently unavailable, and should be ignored. 1590 1591 In addition to this permanent table describing the volumes, a 1592 \ippdbtable{mountedvol} table also exists that only lists those 1593 volumes that are currently visible and accessible from the 1594 \ippprog{Nebulous} database server. This table also lists the total 1595 and currently available disk space on each volume, allowing the 1596 \ippprog{Nebulous} load balancing routines to prioritize those volumes 1597 with large unused disk space before filling the volumes with only 1598 small amounts remaining. This table is regenerated every ten to 1599 twenty minutes, after a scan of each of the volumes listed in the 1600 \ippdbtable{volume} table. 1601 1602 The final table controlling the operations of the \ippprog{Nebulous} 1603 volumes is the \ippdbtable{cabinet} table, which organizes the 1604 individual volumes into ``cabinets,'' a concept loosly based on the 1605 physical arrangement of the storage servers in the data center. These 1606 cabinets are used to prevent the replication of a storage object 1607 within a group of volumes where all instances of the object could be 1608 taken off line by a single failure. As the data center cabinets share 1609 power supplies among the servers they contain, ensuring physical 1610 distance between replicated copies is important to guarantee that a 1611 temporary failure of one of these devices does not significantly 1612 impact processing. 1613 1614 \subsection{Datastore repositories} 1615 \label{subsec: datastore} 1616 1617 Transferring data between the IPP and other parts of the Pan-STARRS 1618 system is generally accomplished via a ``datastore'', an http service 1619 that exposes data in a common form. One of the main datastores used 1620 by the IPP is the one located at the summit. This datastore exposes, 1621 a list of the exposures obtained since the start of the PS1 1622 operations. Requests to this server may restrict to the latest by 1623 time. Each row in the listing includes basic information about the 1624 exposure: an exposure identifier (e.g., o5432g0123o; 1625 see~\ref{GPC1.names} for details), the date and time of the exposure, 1626 the telescope commanded pointing, the filter and exposure time, and 1627 the observation comment for that exposure. The row also provides a 1628 link to a listing of the chips associated with that exposure. This 1629 listing includes a link to the individual chip FITS files as well as 1630 an md5 checksum. Systems which are allowed access may download chip 1631 FITS files via http requests to the provided links. 1632 1633 The IPP also uses datastores to provide access to its own data 1634 products. The detections identified in the \ippstage{diff} stage 1635 images are organized by the \ippstage{publish} stage, which writes 1636 output files containing those detections to a datastore that is 1637 monitored by the Moving Object Processing System 1638 \citep[][MOPS]{2013PASP..125..357D}, which analyses the detections to 1639 identify asteroids. Separate datastores are also used by the 1640 \ippstage{distribution} stage to provide access to data products to 1641 the Pan-STARRS Science Consortium members. 1642 1594 1643 \subsection{ippTools and ippScripts} 1595 1644 \label{subsec: ipptools} … … 1693 1742 1694 1743 \note{This likely needs cleaning up and more information.} 1695 1696 \subsection{Addstar : DVO Ingest}1697 \label{subsec: addstar}1698 \note{CZW: This should be reviewed.}1699 1700 Upon completion of the processing of each stage, the results of the1701 photometry analysis are isolated in a large number of individual1702 catalogs, with little connection between the separate measurements of1703 astronomical sources. Unifying these measurements in a DVO database1704 is the purpose of the \ippstage{addstar} processing. The catalogs for1705 the \ippstage{camera}, \ippstage{staticsky}, \ippstage{skycal},1706 \ippstage{fullforce}, and \ippstage{diff} are processed in this1707 fashion, although not every measurement in each catalog are included1708 in the final DVO that is constructed.1709 1710 The construction of this final DVO is performed in a hierarchical1711 process. The individual catalogs are added to a \ippmisc{minidvo},1712 which is simply a DVO database defined over some subset of possible1713 inputs. These \ippmisc{minidvos} are then merged into larger1714 databases to construct the final completely catalog. \note{describe1715 database tables}1716 1717 Each catalog that is to be added to DVO has an entry created in the1718 \ippdbtable{addRun} database table. This entry notes which1719 \ippdbcolumn{stage} is the source of the catalog, and links to the1720 appropriate database table with the \ippdbcolumn{stage\_id} field. As1721 some stages, such as the \ippstage{diff} stage, create more than a1722 single catalog, multiple entries with the \ippdbcolumn{stage\_id} are1723 created, with the \ippdbcolumn{stage\_extra1} field containing an1724 index to the individual components. The catalog specified by the1725 entry is added to the target \ippmisc{minidvo} by the1726 \ippprog{addstar} program, \note{describe what's done?}. When this1727 completes, an entry containing the statistics of the job is added to1728 the \ippdbtable{addProcessedExp} table.1729 1730 \subsection{Calibration Operations}1731 \label{subsec: calibration}1732 1733 \subsection{IPP to PSPS}1734 \label{subsec: ipp2psps}1735 \note{Default to pointing to Flewelling et al 2017?}1736 1737 \subsection{PSPS Load \& Merge}1738 \label{subsec: psps}1739 \note{Default as well to pointing to Flewelling et al 2017?}1740 1744 1741 1745 \section{IPP Hardware Systems}
Note:
See TracChangeset
for help on using the changeset viewer.
