CINXE.COM
The data platform cluster operator service for Hadoop cluster management
<!doctype html> <html class="theme--pink " lang="en-us" prefix="og: http://ogp.me/ns#"> <head><script type="text/javascript" src="/_static/js/bundle-playback.js?v=HxkREWBo" charset="utf-8"></script> <script type="text/javascript" src="/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("https://blog.twitter.com/engineering/en_us/topics/infrastructure/2023/the-data-platform-cluster-operator-service-for-hadoop-cluster-management","20240305045200","https://web.archive.org/","web","/_static/", "1709614320"); </script> <link rel="stylesheet" type="text/css" href="/_static/css/banner-styles.css?v=S1zqJCYt" /> <link rel="stylesheet" type="text/css" href="/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <meta charset="utf-8"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>The data platform cluster operator service for Hadoop cluster management</title> <meta name="description" content="As any team and its infrastructure grows, the risk of an unplanned service outage and potential data loss will grow."/> <link rel="canonical" href="https://web.archive.org/web/20240305045200/https://blog.x.com/engineering/en_us/topics/infrastructure/2023/the-data-platform-cluster-operator-service-for-hadoop-cluster-management"/> <meta property="og:url" content="https://web.archive.org/web/20240305045200/https://blog.x.com/engineering/en_us/topics/infrastructure/2023/the-data-platform-cluster-operator-service-for-hadoop-cluster-management"/> <meta property="og:type" content="article"/> <meta property="og:title" content="The data platform cluster operator service for Hadoop cluster management"/> <meta property="og:description" content="As any team and its infrastructure grows, the risk of an unplanned service outage and potential data loss will grow."/> <meta property="og:image" content="https://web.archive.org/web/20240305045200im_/https://cdn.cms-twdigitalassets.com/content/dam/blog-twitter/engineering/en_us/main-template-assets/Eng_EXPLORE_Pink.png.twimg.768.png"/> <meta name="twitter:card" content="summary"/> <meta name="twitter:widgets:new-embed-design" content="on"/> <meta name="twitter:widgets:csp" content="on"/> <link rel="mask-icon" sizes="any" href="https://web.archive.org/web/20240305045200im_/https://abs.twimg.com/responsive-web/client-web/icon-svg.ea5ff4aa.svg" color="#FF7A00"/> <link rel="shortcut icon" href="//web.archive.org/web/20240305045200im_/https://abs.twimg.com/favicons/twitter-orange.3.ico"/> <link rel="apple-touch-icon" sizes="192x192" href="https://web.archive.org/web/20240305045200im_/https://abs.twimg.com/responsive-web/client-web/icon-ios.77d25eba.png"/> <script type="application/json" id="analytics-settings">{"google":{"accounts":[],"options":{"displayAdvertisingFeatures":false}},"scribe":{"scribeSectionWithImpression":false},"trackingPixel":{},"bing":{}}</script> <!-- <link rel="stylesheet" href="/etc/designs/blog-twitter/public/css/main.css" media="all" /> --> <link rel="stylesheet" href="https://web.archive.org/web/20240305045200cs_/https://cdn.cms-twdigitalassets.com/etc/designs/blog-twitter/public/css/main.css.twhash.a.f.93323ee71362f24d52dcf9de0c08e7ee.css" media="screen" type="text/css"/> <link rel="stylesheet" href="https://web.archive.org/web/20240305045200cs_/https://cdn.cms-twdigitalassets.com/etc/designs/blog-twitter/public/css/print.css.twhash.a.f.35e55183669dbbc296574ccc045aa706.css" media="print" type="text/css"/> </head> <body class="page page basic-post-page " data-analytics-page="blog" data-analytics-component="the-data-platform-cluster-operator-service-for-hadoop-cluster-management" data-analytics-element="page"> <div class="nav sticky theme-bg-color--dark" data-hidden="true" data-current-level="0"> <div class="nav--wrapper"> <header class="nav__header"> <div class="nav--header-left"> <div class="nav--header-title"> <a href="/web/20240305045200/https://blog.twitter.com/engineering/en_us" class="logo-title"> <span class="logo"> <svg viewbox="0 0 1200 1227" xmlns="http://www.w3.org/2000/svg"> <path d="M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z"/> </svg> </span> <span class="title color--neutral-white">Engineering</span> </a> <button type="button" aria-expanded="false" class="nav-icon" href="#" aria-label="Blog"> <svg xmlns="http://www.w3.org/2000/svg" width="34" height="20" viewbox="0 0 34 20"><path d="M17 12.758L5.121.879a2.998 2.998 0 0 0-4.242 0 2.998 2.998 0 0 0 0 4.242l14 14a2.998 2.998 0 0 0 4.242 0l14-14C33.707 4.535 34 3.768 34 3s-.293-1.535-.879-2.121a2.998 2.998 0 0 0-4.242 0L17 12.758z"/></svg> </button> <a class="nav-back nav__link" href="#" data-nav-back="true"> <span class="title type--bold-16 color--neutral-white">Back</span> </a> </div> </div> <ul class="nav--menu" data-level="1"> <li class="nav--mobile-item nav--menu__list-item" data-show-sub-level="false"> <a href="/web/20240305045200/https://blog.twitter.com/engineering/en_us" class="nav__link color--neutral-white--has-hover ">Engineering</a> </li> <li class="nav--menu__list-item " data-show-sub-level="false"> <a href="/web/20240305045200/https://blog.twitter.com/engineering/en_us/topics/insights" class="color--neutral-white nav__link js-open-sub-menu " data-go-to-sub-level="false"> <span class="nav--menu__list-item-text color--neutral-white" data-go-to-sub-level="false">Insights</span> </a> </li> <li class="nav--menu__list-item " data-show-sub-level="false"> <a href="/web/20240305045200/https://blog.twitter.com/engineering/en_us/topics/infrastructure" class="color--neutral-white nav__link js-open-sub-menu active-link" data-go-to-sub-level="false"> <span class="nav--menu__list-item-text color--neutral-white" data-go-to-sub-level="false">Infrastructure</span> </a> </li> <li class="nav--menu__list-item " data-show-sub-level="false"> <a href="/web/20240305045200/https://blog.twitter.com/engineering/en_us/topics/open-source" class="color--neutral-white nav__link js-open-sub-menu " data-go-to-sub-level="false"> <span class="nav--menu__list-item-text color--neutral-white" data-go-to-sub-level="false">Open source</span> </a> </li> </ul> <div class="region-selector-mobile"> <div class="nav__header-item--profile-mobile"> <div class="u04"> <a href="https://web.archive.org/web/20240305045200/https://twitter.com/signup" class="u04__cta is-hidden atc-button atc-button--white-outline">Sign Up</a> <a href="https://web.archive.org/web/20240305045200/https://twitter.com/" class="u04__profile is-hidden"> <img class="u04__profile-img" alt="Profile Image" src="https://web.archive.org/web/20240305045200im_/https://pbs.twimg.com/profile_images/880136122604507136/xHrnqf1T_normal.jpg"/> </a> </div> </div> </div> <div class="nav--header-right"> <div class="nav__header-item--profile"> <div class="u04"> <a href="https://web.archive.org/web/20240305045200/https://twitter.com/signup" class="u04__cta is-hidden atc-button atc-button--white-outline">Sign Up</a> <a href="https://web.archive.org/web/20240305045200/https://twitter.com/" class="u04__profile is-hidden"> <img class="u04__profile-img" alt="Profile Image" src="https://web.archive.org/web/20240305045200im_/https://pbs.twimg.com/profile_images/880136122604507136/xHrnqf1T_normal.jpg"/> </a> </div> </div> <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewbox="0 0 40 40"><path d="M24.242 20L39.121 5.121a2.998 2.998 0 0 0 0-4.242 2.998 2.998 0 0 0-4.242 0l-14.88 14.879L5.122.879a2.998 2.998 0 0 0-4.242 0 2.998 2.998 0 0 0 0 4.242L15.758 20 .879 34.879A2.998 2.998 0 0 0 3.001 40a2.99 2.99 0 0 0 2.121-.879L20 24.242l14.879 14.879a2.987 2.987 0 0 0 2.12.879 2.998 2.998 0 0 0 2.121-5.121L24.242 20z"/></svg> </div> </header> </div> </div> <div class="transparent-masthead"></div> <div id="component-wrapper"> <div class="bl18-left-rail-blog-container"> <div class="container left-rail-container"> <div class="column column-6"> <div class="bl02-blog-post-text-masthead"> <div> <div class="b02-blog-post-no-masthead" data-author="783214"> <h4 class="b02-blog-post-no-masthead__topic type--bold-14 color--neutral-light-gray">Infrastructure</h4> <h1 class="b02-blog-post-no-masthead__title type--bold-48 color--neutral-black">The data platform cluster operator service for Hadoop cluster management</h1> <div class="b02-blog-post-no-masthead__info color--neutral-light-gray type--roman-14 "> <span class="b02-blog-post-no-masthead__info-first-line"> <span class="color--neutral-light-gray type--roman-14"> By <div class="blog__author--link bl02__author" data-navigation-path="/content/blog-twitter/engineering/en_us" data-element-classes="type--roman-14 theme-color--dark theme-color--dark--hover" data-account-id="783214" data-account-handle="Twitter" data-account-name="Twitter"> </div> </span> </span> <div class="b02-blog-post-no-masthead__info-second-line"> <span class="b02-blog-post-no-masthead__date color--neutral-light-gray type--roman-14 ">Wednesday, 8 February 2023</span> <div class="post__live-region visuallyhidden" aria-live="polite" aria-atomic="true" data-link-copy-success-text="Link copied successfully"></div> <div class="b02-blog-post-no-masthead__share--icons "> <a href="#" class="sharing-popup-twitter" data-share-text="The data platform cluster operator service for Hadoop cluster management" data-share-url="https://blog.x.com/engineering/en_us/topics/infrastructure/2023/the-data-platform-cluster-operator-service-for-hadoop-cluster-management" aria-label="Share on Twitter"> <svg viewbox="-300 -100 1500 1327" xmlns="http://www.w3.org/2000/svg"> <path d="M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z"/> </svg> </a> <a href="#" class="sharing-popup-facebook" data-share-url="https://blog.x.com/engineering/en_us/topics/infrastructure/2023/the-data-platform-cluster-operator-service-for-hadoop-cluster-management" aria-label="Share on Facebook"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24"><path d="M16.75,9H13.5V7a1,1,0,0,1,1-1h2V3H14a4,4,0,0,0-4,4V9H8v3h2v9h3.5V12H16Z"/></svg> </a> <a href="#" class="sharing-popup-linkedin" data-share-url="https://blog.x.com/engineering/en_us/topics/infrastructure/2023/the-data-platform-cluster-operator-service-for-hadoop-cluster-management" aria-label="Share on LinkedIn"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24"><rect height="11" width="4" x="3" y="9"/><circle cx="5" cy="5" r="2"/><path d="M16.5,8.25A4.47251,4.47251,0,0,0,13,9.95343V9H9V20h4V13a2,2,0,0,1,4,0v7h4V12.75A4.5,4.5,0,0,0,16.5,8.25Z"/></svg> </a> <a href="#" class="post__share--copy-link" aria-label="Copy URL"> <svg xmlns="http://www.w3.org/2000/svg" width="56" height="72" viewbox="0 0 56 72"><path d="M29.518 12.25l-8.705 8.704a13.624 13.624 0 0 0-2.881 4.26 13.617 13.617 0 0 0-1.128 5.377c0 5.48 3.076 8.778 4.01 9.77 2.346 2.494 7.014 3.983 7.416 3.674.637-.49 2.665-3.002.174-5.764-.452-.502-3.605-.852-5.154-4.667-.836-2.059-.753-4.129.076-6.055a7.8 7.8 0 0 1 1.647-2.434l8.705-8.704c3.057-3.057 8.032-3.057 11.089 0 3.057 3.057 3.057 8.032 0 11.089l-4.175 4.174a17.549 17.549 0 0 1 2.37 5.947l5.963-5.962c5.35-5.351 5.35-14.057 0-19.408C43.574 6.9 34.869 6.9 29.518 12.25z"/><path d="M26.357 59.768l9.01-9.01a13.624 13.624 0 0 0 2.881-4.26 13.617 13.617 0 0 0 1.128-5.377c0-5.48-3.076-8.778-4.01-9.77-2.346-2.494-7.014-3.983-7.416-3.674-.637.49-2.665 3.002-.174 5.764.452.502 3.605.852 5.154 4.667.836 2.059.753 4.129-.076 6.055a7.8 7.8 0 0 1-1.647 2.434l-9.01 9.01c-3.057 3.057-8.032 3.057-11.089 0-3.057-3.057-3.057-8.032 0-11.089l4.479-4.479a17.549 17.549 0 0 1-2.37-5.947L6.95 40.36c-5.35 5.351-5.35 14.057 0 19.408 5.351 5.35 14.057 5.35 19.407 0z"/></svg> <div class="post__share--copy-link-popup type--bold-14 bg-color--neutral-white"> <span class="post__share--copy-link-popup-content type--bold-14">Link copied successfully</span> <svg xmlns="http://www.w3.org/2000/svg" width="30" height="20" viewbox="0 0 30 20"><path d="M0 0 L15 20 L30 0 Z" fill="none"/></svg> </div> </a> </div> </div> </div> </div> </div> </div> <div class="bl13-rich-text-editor"><h2>Authors</h2> <p>Ashwin Poojary, Head of Platform Services SRE, <a href="https://web.archive.org/web/20240305045200/https://twitter.com/ash_win_p" class="has-hover-card">@ash_win_p</a><br/> Lakshman Ganesh Rajamani, Staff Site Reliability Engineer, <a href="https://web.archive.org/web/20240305045200/https://twitter.com/lakshmanganesh" class="has-hover-card">@lakshmanganesh</a><br/> Sampath Kumar, Senior Site Reliability Engineer, <a href="https://web.archive.org/web/20240305045200/https://twitter.com/realsampat" class="has-hover-card">@realsampat</a></p> <h2>Introduction</h2> <p>Twitter uses <a href="https://web.archive.org/web/20240305045200/https://hadoop.apache.org/">Apache Hadoop</a> and does not utilize any enterprise Hadoop solutions. The lack of standard cluster management tools was a challenge at the scale we operate on. To address this, we have created our own automation and management tool, the Data Platform Cluster Operator (DCO) service, built in Python, which aims to make SRE operations efficient and provide robust solutions for managing Hadoop clusters across all our data centers and in the cloud.</p> <p>As SREs in the Data platform team, we previously spent a vast majority of our time managing and maintaining Hadoop cluster operations, such as adding or removing hosts to clusters, addressing capacity requirements from users, draining hosts before removal, maintaining the life cycle of the hosts, and ensuring cluster health. The DCO service streamlined these processes and made cluster management a seamless experience.</p> <div class="tweet-error-text">This post is unavailable</div> <div class="bl13-tweet-template"> <div class="embedded-tweet"> <div class="embedded-tweet__loader fill-color--light-blue"> <svg viewbox="-300 -100 1500 1327" xmlns="http://www.w3.org/2000/svg"> <path d="M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z"/> </svg> </div> <div class="embedded-tweet__container"></div> <div class="embedded-tweet__deleted"> <div class="tweet deleted-tweet border-color--neutral-extra-light-gray border-style-dots"> <div class="tweet__container"> <header class="tweet__header"> <div class="tweet__logo"> <svg viewbox="-300 -100 1500 1327" xmlns="http://www.w3.org/2000/svg"> <path d="M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z"/> </svg> </div> </header> <div class="tweet__copy color--neutral-dark-gray type--bold-24"> This post is unavailable. </div> </div> </div> </div> </div> </div> </div> <div class="bl13-rich-text-editor"><h2>High Level Architecture</h2> <div class="tweet-error-text">This post is unavailable</div> <div class="bl13-tweet-template"> <div class="embedded-tweet"> <div class="embedded-tweet__loader fill-color--light-blue"> <svg viewbox="-300 -100 1500 1327" xmlns="http://www.w3.org/2000/svg"> <path d="M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z"/> </svg> </div> <div class="embedded-tweet__container"></div> <div class="embedded-tweet__deleted"> <div class="tweet deleted-tweet border-color--neutral-extra-light-gray border-style-dots"> <div class="tweet__container"> <header class="tweet__header"> <div class="tweet__logo"> <svg viewbox="-300 -100 1500 1327" xmlns="http://www.w3.org/2000/svg"> <path d="M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z"/> </svg> </div> </header> <div class="tweet__copy color--neutral-dark-gray type--bold-24"> This post is unavailable. </div> </div> </div> </div> </div> </div> </div> <div class="bl14-image"> <div> <div class="image image--single b-lazy atc-icon--lazy-load atc-placeholder"> <img class="b-lazy atc-placeholder__spacer atc-placeholder__spacer--height-40" data-src="https://web.archive.org/web/20240305045200/https://cdn.cms-twdigitalassets.com/content/dam/blog-twitter/engineering/en_us/infrastructure/2023/hadoop-cluster-management/hadoop-cluster.png.img.fullhd.medium.png"/> <div class="image__footer border-color--neutral-extra-light-gray "> <span class="image__caption type--roman-14 color--neutral-light-gray"> Figure 1: High level architecture of the DCO service </span> </div> </div> </div> </div> <div class="bl13-rich-text-editor"><p>The DCO service is implemented using <a href="https://web.archive.org/web/20240305045200/https://flask.palletsprojects.com/en/2.2.x/">Flask</a>, a Python web framework. It is used to expose API endpoints and interact with the database backend. We have a load balancer and web server gateway interface. DCO handles execution orchestration via an internally managed reliable workflow engine for managing hardware servers. One approach that we considered to handle requests is that a request from hadoop administration will be parsed, stored in the database and forwarded to the orchestration engine, which will use a callback feature to update the job state in DCO’s database. In case that the DCO is not available at callback time, there will be a service periodically polling the orchestration engine for plan status. The orchestration engine will implement workflows as plans with sets of tasks that need to be executed on a specific host. Each of these tasks will be retriable for a configured number of times. The orchestration engine will also handle failure scenarios for specific tasks and try different sets of tasks based on failures. A MySQL database will store data and metadata of clusters currently being managed by DCO. The database will receive input from the request management controller which will be responsible for receiving API requests and executing and dispatching tasks. The database is implemented with sharding to allow horizontal scaling if the request volume requires it.</p> <h2>The DCO Tech Stack</h2> <p>The tech stack for the DCO service includes the following components:</p> <ul> <li>Python web server <a href="https://web.archive.org/web/20240305045200/https://flask.palletsprojects.com/en/2.2.x/">Flask</a></li> <li>MySQL database backend</li> <li>Infrastructure for deploying the services</li> <li>Workflow engine for cluster operations use cases.</li> </ul> <h2>Features</h2> <h3>hadoop-admin</h3> <p>hadoop-admin is a python based library which contains the logic to perform hadoop administration operations, look up the status of clusters and the services running on clusters. It also has the ability to execute per-node tasks such as service changes using on-node binaries.</p> <h3>Adding hosts</h3> <p>Adding hosts to a Hadoop Cluster can be a complex task, requiring the installation of various packages, modification of configuration files, and restarting of relevant services. However, with the use of the DCO service, this process can be streamlined into a single step operation. The Site Reliability Engineers can provide a file containing the host names, along with relevant cluster variables, to DCO, which will then proceed to add the hosts to the cluster. The SREs can monitor the progress of this operation through the use of the job ID provided by DCO. This approach enhances efficiency and reduces the likelihood of errors. </p> <h3>Removing hosts</h3> <p>Just like adding hosts, removing hosts is a one step process using the hadoop-admin tool. It not only removes hosts from the cluster but also sends them through the reinstallation process and makes them ready to add to another cluster. </p> <h3><a href="https://web.archive.org/web/20240305045200/https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html">HDFS</a> & <a href="https://web.archive.org/web/20240305045200/https://yarnpkg.com/">YARN</a> quota management</h3> <p>Allocating and deallocating storage space and compute resources can be done via the hadoop-admin tool and DCO stores the history of the changes. This data can be used for charge back for customers. </p> <h3>Keytab Management</h3> <p>All Twitter hadoop clusters use <a href="https://web.archive.org/web/20240305045200/https://web.mit.edu/kerberos/">kerberos</a> authentication. The DCO provisions and manages the lifecycle of the keytabs of each node of every cluster. </p> <h3>Feature Flags</h3> <p>Various feature flags are developed to release the features based on requirement. DCO reads the yaml file of each cluster to check what features that cluster needs. </p> <h3>High Availability</h3> <p>The DCO service runs in each datacenter serving the cluster and cluster operations use cases within that datacenter. DCO does not control or manage the critical data path on hdfs or compute capacity on top of yarn so it does not have a very high uptime SLO. </p> <h2>Conclusion</h2> <p>In conclusion, the new Data Platform Cluster Operator (DCO) service for Hadoop cluster management brings significant advancements in terms of operations, maintenance, and scalability for the SRE team. The service has undergone comprehensive testing and has been successfully deployed on production clusters, making our infrastructure more robust and reliable.</p> <h2>Acknowledgements</h2> <p><i>We thank Dave Beckett, Jeremy Inn, Sudhir Srinivas, Tihomir Elek and many others who were involved in the design, development and deployment of the Data Platform Cluster Operator service at Twitter.</i></p> <div class="tweet-error-text">This post is unavailable</div> <div class="bl13-tweet-template"> <div class="embedded-tweet"> <div class="embedded-tweet__loader fill-color--light-blue"> <svg viewbox="-300 -100 1500 1327" xmlns="http://www.w3.org/2000/svg"> <path d="M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z"/> </svg> </div> <div class="embedded-tweet__container"></div> <div class="embedded-tweet__deleted"> <div class="tweet deleted-tweet border-color--neutral-extra-light-gray border-style-dots"> <div class="tweet__container"> <header class="tweet__header"> <div class="tweet__logo"> <svg viewbox="-300 -100 1500 1327" xmlns="http://www.w3.org/2000/svg"> <path d="M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z"/> </svg> </div> </header> <div class="tweet__copy color--neutral-dark-gray type--bold-24"> This post is unavailable. </div> </div> </div> </div> </div> </div> </div> </div> <div class="column column-4"> <div class="bl18__horizontal-rule"></div> <div> <div class="bl07-author-card" data-primary-author="783214" data-primary-author-description="Your official source for what’s happening. " data-primary-author-fullname="Twitter"> </div> </div> <div> <div class="only-on-twitter"> <div class="only-on-twitter__key-line"></div> <div class="only-on-twitter__tag--title">Only on X</div> <ul> <li> <a href="https://web.archive.org/web/20240305045200/https://twitter.com/Twitter" class="only-on-twitter__tag theme-color--dark theme-color--dark--hover type--roman-14 has-hover-card" rel="noopener" target="_blank">@Twitter</a> </li> <li> <a href="https://web.archive.org/web/20240305045200/https://twitter.com/hashtag/OnlyOnTwitter" class="only-on-twitter__tag theme-color--dark theme-color--dark--hover type--roman-14 " rel="noopener" target="_blank">#OnlyOnTwitter</a> </li> </ul> </div> </div> <div> <div class="container"> <div class="tweet__composer" data-component-enabled="true"> <a href="https://web.archive.org/web/20240305045200/https://twitter.com/intent/tweet?text=&url=https://blog.x.com/engineering/en_us/topics/infrastructure/2023/the-data-platform-cluster-operator-service-for-hadoop-cluster-management"> <div class="tweet__composer--logo"> <svg viewbox="-300 -100 1500 1327" xmlns="http://www.w3.org/2000/svg"> <path d="M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z"/> </svg> <span class="tweet__composer--text theme-color--dark type--bold-14">Post</span> <span class="screen-reader">Twitter logo icon</span> </div> </a> </div> </div> </div> </div> <div class="column column-2"></div> </div> </div> <div class="bl10-post-tags-share"> <div class="post__key-line"></div> <div class="container"> <div class="post"> <div class="post__tags"> <div class="post__tags--title type--bold-14">Tags:</div> <ul> <li class="type--roman-14"> <a href="/web/20240305045200/https://blog.twitter.com/engineering/en_us/tags.eng--infrastructure" class="theme-color--dark theme-color--dark--hover type--roman-14">infrastructure</a> </li> </ul> </div> <div class="post__live-region visuallyhidden" aria-live="polite" aria-atomic="true" data-link-copy-success-text="Link copied successfully"></div> <div class="post__share--icons"> <a href="#" class="sharing-popup-twitter" data-share-text="The data platform cluster operator service for Hadoop cluster management" data-share-url="https://blog.x.com/engineering/en_us/topics/infrastructure/2023/the-data-platform-cluster-operator-service-for-hadoop-cluster-management" aria-label="Share on Twitter"> <svg viewbox="-300 -100 1500 1327" xmlns="http://www.w3.org/2000/svg"> <path d="M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z"/> </svg> </a> <a href="#" class="sharing-popup-facebook" data-share-url="https://blog.x.com/engineering/en_us/topics/infrastructure/2023/the-data-platform-cluster-operator-service-for-hadoop-cluster-management" aria-label="Share on Facebook"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24"><path d="M16.75,9H13.5V7a1,1,0,0,1,1-1h2V3H14a4,4,0,0,0-4,4V9H8v3h2v9h3.5V12H16Z"/></svg> </a> <a href="#" class="sharing-popup-linkedin" data-share-url="https://blog.x.com/engineering/en_us/topics/infrastructure/2023/the-data-platform-cluster-operator-service-for-hadoop-cluster-management" aria-label="Share on LinkedIn"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24"><rect height="11" width="4" x="3" y="9"/><circle cx="5" cy="5" r="2"/><path d="M16.5,8.25A4.47251,4.47251,0,0,0,13,9.95343V9H9V20h4V13a2,2,0,0,1,4,0v7h4V12.75A4.5,4.5,0,0,0,16.5,8.25Z"/></svg> </a> <a href="#" class="post__share--copy-link" aria-label="Copy URL"> <svg xmlns="http://www.w3.org/2000/svg" width="56" height="72" viewbox="0 0 56 72"><path d="M29.518 12.25l-8.705 8.704a13.624 13.624 0 0 0-2.881 4.26 13.617 13.617 0 0 0-1.128 5.377c0 5.48 3.076 8.778 4.01 9.77 2.346 2.494 7.014 3.983 7.416 3.674.637-.49 2.665-3.002.174-5.764-.452-.502-3.605-.852-5.154-4.667-.836-2.059-.753-4.129.076-6.055a7.8 7.8 0 0 1 1.647-2.434l8.705-8.704c3.057-3.057 8.032-3.057 11.089 0 3.057 3.057 3.057 8.032 0 11.089l-4.175 4.174a17.549 17.549 0 0 1 2.37 5.947l5.963-5.962c5.35-5.351 5.35-14.057 0-19.408C43.574 6.9 34.869 6.9 29.518 12.25z"/><path d="M26.357 59.768l9.01-9.01a13.624 13.624 0 0 0 2.881-4.26 13.617 13.617 0 0 0 1.128-5.377c0-5.48-3.076-8.778-4.01-9.77-2.346-2.494-7.014-3.983-7.416-3.674-.637.49-2.665 3.002-.174 5.764.452.502 3.605.852 5.154 4.667.836 2.059.753 4.129-.076 6.055a7.8 7.8 0 0 1-1.647 2.434l-9.01 9.01c-3.057 3.057-8.032 3.057-11.089 0-3.057-3.057-3.057-8.032 0-11.089l4.479-4.479a17.549 17.549 0 0 1-2.37-5.947L6.95 40.36c-5.35 5.351-5.35 14.057 0 19.408 5.351 5.35 14.057 5.35 19.407 0z"/></svg> <div class="post__share--copy-link-popup bg-color--neutral-white"> <span class="post__share--copy-link-popup-content type--bold-14">Link copied successfully</span> <svg xmlns="http://www.w3.org/2000/svg" width="30" height="20" viewbox="0 0 30 20"><path d="M0 0 L15 20 L30 0 Z" fill="none"/></svg> </div> </a> </div> </div> </div> </div> <div class="bl09-related-posts"> <div class=" bg-color--neutral-white"> <div class="bl09-related bg-color--neutral-extra-extra-light-gray"> <div class="container "> <div class="bl09-related__title type--bold-24">More from Infrastructure</div> <div class="bl09-related__list"> <div class="bl09-related__post"> <a class="bl09-related__post-title color--neutral-dark-gray color--neutral-dark-gray--has-hover type--bold-24" href="/web/20240305045200/https://blog.twitter.com/engineering/en_us/topics/infrastructure/2020/how_we_fortified_twitters_real_time_ad_spend_architecture" rel="noopener">How we fortified Twitter's real time ad spend architecture </a> <div class="bl09-related__post-info color--neutral-light-gray type--roman-14"> <span class="color--neutral-light-gray type--roman-14"> By <div class="blog__author--link bl09__author" data-navigation-path="/content/blog-twitter/engineering/en_us" data-element-classes="type--roman-14 theme-color--dark theme-color--dark--hover" data-account-id="TwitterEng" data-account-handle="TwitterEng" data-account-name="Revenue Platform"> </div> </span> on Monday, 2 November 2020 </div> </div> <div class="bl09-related__post"> <a class="bl09-related__post-title color--neutral-dark-gray color--neutral-dark-gray--has-hover type--bold-24" href="/web/20240305045200/https://blog.twitter.com/engineering/en_us/topics/infrastructure/2020/rebuild_twitter_public_api_2020" rel="noopener">Rebuilding Twitter’s public API</a> <div class="bl09-related__post-info color--neutral-light-gray type--roman-14"> <span class="color--neutral-light-gray type--roman-14"> By <div class="blog__author--link bl09__author" data-navigation-path="/content/blog-twitter/engineering/en_us" data-element-classes="type--roman-14 theme-color--dark theme-color--dark--hover" data-account-id="jqiu" data-account-handle="jqiu" data-account-name="Jenny Qiu Hylbert"> </div> </span> and <div class="blog__author--link bl09__author" data-navigation-path="/content/blog-twitter/engineering/en_us" data-element-classes="type--roman-14 theme-color--dark theme-color--dark--hover" data-account-id="scosenza" data-account-handle="scosenza" data-account-name="Steve Cosenza"> </div> on Wednesday, 12 August 2020 </div> </div> <div class="bl09-related__post"> <a class="bl09-related__post-title color--neutral-dark-gray color--neutral-dark-gray--has-hover type--bold-24" href="/web/20240305045200/https://blog.twitter.com/engineering/en_us/topics/infrastructure/2020/accelerating-ad-product-development-at-twitter" rel="noopener">Accelerating ad product development at Twitter</a> <div class="bl09-related__post-info color--neutral-light-gray type--roman-14"> <span class="color--neutral-light-gray type--roman-14"> By <div class="blog__author--link bl09__author" data-navigation-path="/content/blog-twitter/engineering/en_us" data-element-classes="type--roman-14 theme-color--dark theme-color--dark--hover" data-account-id="cdharini" data-account-handle="cdharini" data-account-name="Dharini Chandrasekaran"> </div> </span> and <div class="blog__author--link bl09__author" data-navigation-path="/content/blog-twitter/engineering/en_us" data-element-classes="type--roman-14 theme-color--dark theme-color--dark--hover" data-account-id="_pawanv" data-account-handle="_pawanv" data-account-name="Pawan Valluri"> </div> on Monday, 3 August 2020 </div> </div> <div class="bl09-related__post"> <a class="bl09-related__post-title color--neutral-dark-gray color--neutral-dark-gray--has-hover type--bold-24" href="/web/20240305045200/https://blog.twitter.com/engineering/en_us/topics/infrastructure/2020/building-twitters-ad-platform-architecture-for-the-future" rel="noopener">Building Twitter’s ad platform architecture for the future</a> <div class="bl09-related__post-info color--neutral-light-gray type--roman-14"> <span class="color--neutral-light-gray type--roman-14"> By <div class="blog__author--link bl09__author" data-navigation-path="/content/blog-twitter/engineering/en_us" data-element-classes="type--roman-14 theme-color--dark theme-color--dark--hover" data-account-id="TwitterEng" data-account-handle="TwitterEng" data-account-name="Revenue Platform"> </div> </span> on Monday, 6 July 2020 </div> </div> </div> </div> </div> </div> </div> </div> <div id="twBearerToken" data-value="AAAAAAAAAAAAAAAAAAAAACHguwAAAAAAaSlT0G31NDEyg%2BSnBN5JuyKjMCU%3Dlhg0gv0nE7KKyiJNEAojQbn8Y3wJm1xidDK7VnKGBP4ByJwHPb" style="display:none"></div> <div id="twAuthenticationFlag" data-value="guest" style="display:none"></div> <div id="twGeoLocationRegion" data-value="eu" style="display:none"></div> <div><footer class="footer theme-bg-color--dark"> <div class="footer__row container"> <div class="footer-col"> <a href="#" title="X platform" target="_blank" class="footer-col__parent type--bold-14 theme-color--extra-light theme-color--extra-light--hover"> X platform <span class="icon-container js-accordion theme-fill-color--extra-light"> <svg xmlns="http://www.w3.org/2000/svg" width="34" height="20" viewbox="0 0 34 20"><path d="M17 12.758L5.121.879a2.998 2.998 0 0 0-4.242 0 2.998 2.998 0 0 0 0 4.242l14 14a2.998 2.998 0 0 0 4.242 0l14-14C33.707 4.535 34 3.768 34 3s-.293-1.535-.879-2.121a2.998 2.998 0 0 0-4.242 0L17 12.758z"/></svg> </span> </a> <ul class="footer-col__list"> <li> <a href="https://web.archive.org/web/20240305045200/https://x.com/" title="X.com" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">X.com</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://status.twitterstat.us/" title="Status" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Status</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://help.twitter.com/resources/accessibility" title="Accessibility" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Accessibility</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://publish.twitter.com/" title="Embed a post" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Embed a post</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://privacy.twitter.com/" title="Privacy Center" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Privacy Center</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://transparency.twitter.com/" title="Transparency Center" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Transparency Center</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://help.twitter.com/using-x/download-the-x-app" title="Download the X app" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Download the X app</a></li> </ul> </div> <div class="footer-col"> <a href="#" title="X Corp." target="_blank" class="footer-col__parent type--bold-14 theme-color--extra-light theme-color--extra-light--hover"> X Corp. <span class="icon-container js-accordion theme-fill-color--extra-light"> <svg xmlns="http://www.w3.org/2000/svg" width="34" height="20" viewbox="0 0 34 20"><path d="M17 12.758L5.121.879a2.998 2.998 0 0 0-4.242 0 2.998 2.998 0 0 0 0 4.242l14 14a2.998 2.998 0 0 0 4.242 0l14-14C33.707 4.535 34 3.768 34 3s-.293-1.535-.879-2.121a2.998 2.998 0 0 0-4.242 0L17 12.758z"/></svg> </span> </a> <ul class="footer-col__list"> <li> <a href="https://web.archive.org/web/20240305045200/https://about.twitter.com/en/who-we-are/our-company.html" title="About the company" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">About the company</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://blog.twitter.com/" title="Company news" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Company news</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://about.twitter.com/en/who-we-are/brand-toolkit.html" title="Brand toolkit" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Brand toolkit</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://careers.twitter.com/" title="Jobs and internships" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Jobs and internships</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://investor.twitterinc.com/" title="Investors" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Investors</a></li> </ul> </div> <div class="footer-col"> <a href="#" title="Help" target="_blank" class="footer-col__parent type--bold-14 theme-color--extra-light theme-color--extra-light--hover"> Help <span class="icon-container js-accordion theme-fill-color--extra-light"> <svg xmlns="http://www.w3.org/2000/svg" width="34" height="20" viewbox="0 0 34 20"><path d="M17 12.758L5.121.879a2.998 2.998 0 0 0-4.242 0 2.998 2.998 0 0 0 0 4.242l14 14a2.998 2.998 0 0 0 4.242 0l14-14C33.707 4.535 34 3.768 34 3s-.293-1.535-.879-2.121a2.998 2.998 0 0 0-4.242 0L17 12.758z"/></svg> </span> </a> <ul class="footer-col__list"> <li> <a href="https://web.archive.org/web/20240305045200/https://help.twitter.com/" title="Help Center" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Help Center</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://help.twitter.com/en/using-twitter" title="Using X" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Using X</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://create.twitter.com/" title="X for creators" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">X for creators</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://business.twitter.com/en/help.html" title="Ads Help Center" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Ads Help Center</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://help.twitter.com/en/managing-your-account" title="Managing your account" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Managing your account</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://preferencecenter.twitter.com/" title="Email Preference Center" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Email Preference Center</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://help.twitter.com/en/rules-and-policies" title="Rules and policies" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Rules and policies</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://help.twitter.com/en/forms.html" title="Contact us" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Contact us</a></li> </ul> </div> <div class="footer-col"> <a href="#" title="Developer resources" target="_blank" class="footer-col__parent type--bold-14 theme-color--extra-light theme-color--extra-light--hover"> Developer resources <span class="icon-container js-accordion theme-fill-color--extra-light"> <svg xmlns="http://www.w3.org/2000/svg" width="34" height="20" viewbox="0 0 34 20"><path d="M17 12.758L5.121.879a2.998 2.998 0 0 0-4.242 0 2.998 2.998 0 0 0 0 4.242l14 14a2.998 2.998 0 0 0 4.242 0l14-14C33.707 4.535 34 3.768 34 3s-.293-1.535-.879-2.121a2.998 2.998 0 0 0-4.242 0L17 12.758z"/></svg> </span> </a> <ul class="footer-col__list"> <li> <a href="https://web.archive.org/web/20240305045200/https://developer.twitter.com/en" title="Developer home" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Developer home</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://developer.twitter.com/en/docs" title="Documentation" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Documentation</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://twittercommunity.com/" title="Forums" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Forums</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://developer.twitter.com/en/community" title="Communities" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Communities</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://blog.twitter.com/developer/" title="Developer blog" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Developer blog</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://blog.twitter.com/engineering/en_us.html" title="Engineering blog" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Engineering blog</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://developer.twitter.com/en/more/developer-terms" title="Developer terms" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Developer terms</a></li> </ul> </div> <div class="footer-col"> <a href="#" title="Business resources" target="_blank" class="footer-col__parent type--bold-14 theme-color--extra-light theme-color--extra-light--hover"> Business resources <span class="icon-container js-accordion theme-fill-color--extra-light"> <svg xmlns="http://www.w3.org/2000/svg" width="34" height="20" viewbox="0 0 34 20"><path d="M17 12.758L5.121.879a2.998 2.998 0 0 0-4.242 0 2.998 2.998 0 0 0 0 4.242l14 14a2.998 2.998 0 0 0 4.242 0l14-14C33.707 4.535 34 3.768 34 3s-.293-1.535-.879-2.121a2.998 2.998 0 0 0-4.242 0L17 12.758z"/></svg> </span> </a> <ul class="footer-col__list"> <li> <a href="https://web.archive.org/web/20240305045200/https://business.twitter.com/en/advertising.html" title="Advertise" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Advertise</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://business.twitter.com/" title="X for business" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">X for business</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://business.twitter.com/en/resources.html" title="Resources and guides" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Resources and guides</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://marketing.twitter.com/" title="X for marketers" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">X for marketers</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://marketing.twitter.com/en/insights" title="Marketing insights" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Marketing insights</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://marketing.twitter.com/en/success-stories" title="Brand inspiration" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Brand inspiration</a></li> <li> <a href="https://web.archive.org/web/20240305045200/https://www.xadsacademy.com/sl/5c3e29ed" title="X Ads Academy" target="_blank" class="footer-col__link type--roman-14 theme-color--extra-light theme-color--extra-light--hover">X Ads Academy</a></li> </ul> </div> </div> <div class="footer__row container"> <div class="footer-col"> <p class="footer-col__footnote type--roman-14 theme-color--extra-light">‎© 2024 X Corp.‎</p> </div> <div class="footer-col"> <a href="https://web.archive.org/web/20240305045200/https://help.twitter.com/rules-and-policies/twitter-cookies" title="Cookies" target="_blank" class="footer-col__footnote type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Cookies</a> </div> <div class="footer-col"> <a href="https://web.archive.org/web/20240305045200/https://twitter.com/privacy" title="Privacy" target="_blank" class="footer-col__footnote type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Privacy</a> </div> <div class="footer-col"> <a href="https://web.archive.org/web/20240305045200/https://twitter.com/tos" title="Terms and conditions" target="_blank" class="footer-col__footnote type--roman-14 theme-color--extra-light theme-color--extra-light--hover">Terms and conditions</a> </div> </div> </footer> </div> <script src="https://web.archive.org/web/20240305045200js_/https://static.ads-twitter.com/oct.js"></script> <script src="https://web.archive.org/web/20240305045200js_/https://platform.twitter.com/widgets.js"></script> <script type="text/javascript" src="https://web.archive.org/web/20240305045200js_/https://cdn.cms-twdigitalassets.com/etc/designs/blog-twitter/public/js/common.js.twhash.a.f.6faba5512d6318d6d297fa23835eddb8.js"></script> <script type="text/javascript" src="https://web.archive.org/web/20240305045200js_/https://cdn.cms-twdigitalassets.com/etc/designs/blog-twitter/public/js/critical.js.twhash.a.f.dca3d3e035056f8f21e88f36ecf1097f.js"></script> <script type="text/javascript" src="https://web.archive.org/web/20240305045200js_/https://cdn.cms-twdigitalassets.com/etc/designs/blog-twitter/public/js/app.js.twhash.a.f.9371de9c6b16290c3c35b018fc8fea9c.js"></script> <script type="text/javascript" src="https://web.archive.org/web/20240305045200js_/https://cdn.cms-twdigitalassets.com/etc/designs/blog-twitter/public/js/content.js.twhash.a.f.95d6562d87423297958b52dea41a0701.js"></script> <script type="text/javascript" src="https://web.archive.org/web/20240305045200js_/https://cdn.cms-twdigitalassets.com/etc/designs/blog-twitter/public/js/universal.js.twhash.a.f.cd8a119491a1717465e94211c946ba3b.js"></script> <div id="u12" class="u12-data-protection-notice"> <div class="u12-data-protection-notice__item u12-data-protection-notice__item--b is-hidden"> <div class="u12b-opt-in" id="u12b" data-cname="twtr_pixel_opt_in"> <div class="u12b-opt-in__item u12-data-protection-notice__notice"> <div class="u12b-opt-in__content"> <div class="u12b-opt-in__copy"> <p class="mtc-font twtr-font"> <b>Did someone say … cookies?</b><br/><br/> X and its partners use cookies to provide you with a better, safer and faster service and to support our business. Some cookies are necessary to use our services, improve our services, and make sure they work properly. <a href="https://web.archive.org/web/20240305045200/https://help.twitter.com/rules-and-policies/twitter-cookies" target="_blank">Show more about your choices</a>. </p> </div> <div class="u12b-opt-in__choice twtr-scribe-clicks-within"> <ul class="u12b-opt-in__choice-list"> <li class="u12b-opt-in__choice-list-item"> <button class="u12b-opt-in__button is-blue u12b-opt-in__button--accept mtc-font twtr-font js-accept twtr-scribe-clicks" data-twtr-scribe-section="u12-data-protection-notice" data-twtr-scribe-element="RNAH" data-twtr-scribe-component="data-protection-notice"> Accept all cookies </button> </li> <li class="u12b-opt-in__choice-list-item"> <button class="u12b-opt-in__button is-naked u12b-opt-in__button--decline mtc-font twtr-font js-decline twtr-scribe-clicks" data-twtr-scribe-section="u12-data-protection-notice" data-twtr-scribe-element="RNAH" data-twtr-scribe-component="data-protection-notice"> Refuse non-essential cookies </button> </li> </ul> </div> </div> </div> </div> </div> </div> <link rel="stylesheet" href="https://web.archive.org/web/20240305045200cs_/https://cdn.cms-twdigitalassets.com/etc/designs/common-twitter/clientlib-u12-data-protection-notice.min.twhash.a.cl.8d93205985d36dea4268f79e373e2b02.css" type="text/css"> <script src="https://web.archive.org/web/20240305045200js_/https://cdn.cms-twdigitalassets.com/etc/designs/common-twitter/clientlib-u12-data-protection-notice.min.twhash.a.cl.501f18538b42ea9632cc9f75e7edcab4.js"></script> </body> </html> <!-- FILE ARCHIVED ON 04:52:00 Mar 05, 2024 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 16:08:58 Nov 27, 2024. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 1.885 exclusion.robots: 0.037 exclusion.robots.policy: 0.021 esindex: 0.013 cdx.remote: 13.696 LoadShardBlock: 116.56 (3) PetaboxLoader3.datanode: 108.17 (4) PetaboxLoader3.resolve: 347.54 (2) load_resource: 365.618 -->