Условия использования сервиса «Платформа Яндекс.Облако»

1.1. ООО «Яндекс.Облако» или ТОО «Яндекс.Облако Казахстан» (далее — «Яндекс») предлагает пользователю сети Интернет (далее — «Пользователь») использовать сервис «Платформа Яндекс.Облако», доступный по адресу: https://cloud.yandex.ru, https://console.cloud.yandex.ru, https://cloud.yandex.сom, https://console.cloud.yandex.com (далее — «Платформа»).

1.2. Обязательным условием использования Платформы является принятие и соблюдение Пользователем, требований и положений следующих документов:

  • Специальные условия использования Сервисов (далее — «Специальные условия»), размещенные в сети «Интернет» по адресу: https://yandex.ru/legal/cloud_specialterms;

  • Соглашение об обработке данных, размещенное в сети «Интернет» по адресу: https://yandex.ru/legal/cloud_dpa;

  • Правила допустимого использования Сервисов по адресу: https://yandex.ru/legal/cloud_aup

  • Пользовательским соглашением сервисов Яндекса по адресу: https://yandex. ru/legal/rules;

  • Политикой конфиденциальности по адресу: https://yandex.ru/legal/confidential.

1.3. Размещенные на Сайте Инструкции, касающиеся вопросов функционирования Платформы и использования Сервисов, предназначенные для Пользователя, обязательны для соблюдения.

1.4. Начиная использовать Платформу, её отдельные функции, Пользователь считается принявшим настоящие Условия, а также условия всех указанных выше документов, в полном объеме, без всяких оговорок и исключений. В случае несогласия Пользователя с положениями указанных документов, Пользователь не вправе использовать Платформу.

1.5. Настоящие Условия, равно указанные выше документы, могут быть изменены Яндексом и ООО «ЯНДЕКС» соответственно без какого-либо специального уведомления, новая редакция Условий и указанных документов вступает в силу с момента их размещения в сети Интернет по указанным в настоящем пункте и п.1.2 настоящих Условий адресам, если иное не предусмотрено новой редакцией Условий и указанных документов. Действующая редакция Условий всегда находится на странице по адресу: https://yandex.ru/legal/cloud_termsofuse.

1.6. Если Яндексом были внесены какие-либо изменения в настоящие Условия в порядке, предусмотренном п.1.5. настоящих Условий, с которыми Пользователь не согласен, он обязан прекратить использование Платформы.

1.7. Посредством Платформы Пользователю может быть доступна возможность заключить отдельный договор или соглашение, в том числе возмездный (-ое), между Яндексом и Пользователем либо лицом, от чьего имени выступает или действует Пользователь, по поводу использования веб-служб, услуг или программных продуктов, позволяющих удаленно использовать отдельные категории ресурсов Платформы, при этом если таким лицом не указано иное, Пользователь считается выступающим и действующим от имени такого лица.

1.8. С момента заключения указанного в п.1.7 настоящий Условий договора или соглашения, все отношения по поводу использования Платформы Пользователем либо лицом, от чьего имени выступает или действует Пользователь, за исключением тех, которые не урегулированы таким договором или соглашением, регулируются условиями такого договора или соглашения.

1.9. Используя Платформу, Пользователь дает свое согласие на получение сообщений рекламного и информационного характера. Пользователь вправе отказаться от получения сообщений путем использования соответствующего функционала Платформы или следуя инструкциям, указанным в полученном сообщении.

1.10. Яндекс может предоставить Пользователю перевод настоящих Условий с русского на другие языки, однако в случае противоречия между положениями Условий на русском языке и их переводом, юридическую силу имеет исключительно русскоязычная версия Условий.

1.11. К настоящим Условиям и отношениям по использованию Платформы подлежит применению право Российской Федерации, когда Пользователь является резидентом Российской Федерации и право Республики Казахстан, когда Пользователь является резидентом Республики Казахстан. Любые претензии или иски, возникающие из настоящих Условий или использования Платформы, должны быть поданы и рассмотрены в суде по месту нахождения Яндекса.

2. 1. Платформа предлагает Пользователю возможность бесплатно ознакомиться с информацией о Платформе и сервисах, доступных через Платформу, а также воспользоваться явными функциями Платформы, состоящей из технических и программных средств, размещенных на инфраструктуре Яндекса, с учетом положений п.1.7 и п.1.8 настоящих Условий.

2.2. Для использования всех или некоторых функций Платформы Пользователю необходимо использовать аккаунт, путем авторизации на Платформе с помощью учетной записи Пользователя на сервисах ООО «ЯНДЕКС».

2.3. Использование Платформы возможно только при наличии доступа к сети Интернет. Пользователь самостоятельно получает и оплачивает такой доступ на условиях и по правилам своего оператора связи или провайдера доступа к сети Интернет.

2.4. Платформа должна использоваться исключительно для достижения Пользователем законных и добросовестных целей. Любое использование Платформы в нарушении настоящего пункта, включая размещение в сети Интернет или на виртуальных серверах Яндекса информации и материалов, которые нарушают действующее законодательство, права третьих лиц или указанные в п. 1.2 настоящих Условий документы, запрещено и является основанием для применения к Пользователю мер ответственности, указанных в настоящих Условиях.

2.5. Пользователю могут быть доступны возможности создания и управления сервисами и программным обеспечением Пользователя, как самим Пользователем, так и лицами, которым Пользователь предоставил доступ к таким функциональным возможностям Платформы. При этом Пользователь обязан довести до сведения указанных лиц положения настоящих Условий и документов, указанных в п.1.2. настоящих Условий, если иное не предусмотрено с учетом п.1.7 и п.1.8 настоящий Условий.

2.6. Использование указанных в п.2.5. настоящих Условий сервисов и программного обеспечения Пользователя третьими лицами обеспечивается и контролируется Пользователем без участия Яндекса.

2.7. Пользователь соглашается с тем, что при использовании Платформы для создания и управления указанными в п.2.5. настоящих Условий сервисами и программным обеспечением Пользователя, такие сервисы и программное обеспечение, как и весь входящий в них контент, могут размещаться на программно-аппаратных ресурсах Яндекса как с указанием на автора и/или правообладателя, так и без этого, без обязанности предоставлять отчеты об использовании таких сервисов и программного обеспечения, без необходимости получения специального разрешения Пользователя и без выплаты какого-либо вознаграждения, без ограничении по территории, с которой указанные сервисы и программное обеспечение могут быть доступны Пользователю и третьим лицам, и территории нахождения ресурсов Яндекса, на которой могут размещаться копии таких сервисов и программного обеспечения, в течение срока с момента размещения таких сервисов и программного обеспечения Пользователем на ресурсах Яндекса, до момента удаления таких сервисов и программного обеспечения с ресурсов Яндекса, могут размешаться совместно с результатами интеллектуальной деятельности любых лиц, вне зависимости от художественной ценности таких результатов, в любой последовательности. При этом Пользователь признает и соглашается, что Яндекс не обязан просматривать и ознакомиться с такими сервисами и программным обеспечением (не обязан осуществлять их модерацию). В случае если Пользователь не вправе предоставлять Яндексу указанные права использования какого-либо сервиса, программного обеспечения, их компонентов или входящего в их состав контента, он обязан воздержаться от размещения таких сервиса, программного обеспеченияю.

3.1. Платформа предоставляется на условиях «как есть» (as is). Яндекс не предоставляет никаких гарантий в отношении безошибочной и бесперебойной работы Платформы или отдельных её компонентов и/или функций, соответствия Платформы конкретным целям Пользователя, не предоставляет никаких иных гарантий, прямо не указанных в настоящих Условиях.

3.2. Яндекс не несет ответственности за какие-либо прямые или косвенные последствия какого-либо использования или невозможности использования Платформы и/или убытки, причиненные Пользователю и/или третьим сторонам в результате какого-либо использования, неиспользования или невозможности использования Платформы или отдельных её компонентов и/или функций, в том числе из-за возможных ошибок или сбоев в их работе, за исключением случаев, прямо предусмотренных законодательством.

3.3. Яндекс вправе устанавливать любые лимиты и ограничения на использование Платформы, и может менять их по собственному усмотрению, без предварительного уведомления Пользователя.

3.4. Яндекс вправе на свое усмотрение ограничить или полностью заблокировать доступ Пользователя к использованию Платформы (или к использованию определенных функциональных возможностей Платформы, если это возможно технологически) при нарушении настоящих Условий, либо применить к Пользователю иные меры с целью соблюдения требований законодательства, прав и законных интересов Яндекса и третьих лиц.

3.5. Яндекс вправе по своему усмотрению без уведомления Пользователя и без объяснения причин в любое время заблокировать доступ лиц, указанных в п.2.5 настоящих Условий, если иное не предусмотрено с учетом п.1.7 и 1.8 настоящих Условий.

4.1 Персональная информация Пользователя обрабатывается на условиях Политики конфиденциальности, размещенной по адресу: https://yandex.ru/legal/confidential.

4.2. Начиная использовать Платформу, Пользователь дает Яндексу и его аффилированным лицам согласие на обработку персональной информации Пользователя, как этот термин определен в Политике конфиденциальности (https://yandex.ru/legal/confidential), и лиц, указанных в п.2.5. настоящих Условий, Яндексом для целей предоставления функциональных возможностей Платформы, на передачу Яндексом (в том числе трансграничной) персональной информации Пользователя и указанных лиц в ООО «ЯНДЕКС», его аффилированным лицам, лицам, действующим по поручению и заказу Яндекса, ООО «ЯНДЕКС» и его аффилированных лиц, а также третьим лицам для тех же целей, равно как и получение такой информации от ООО «ЯНДЕКС» и его аффилированных лиц, а также третьих лиц для тех же целей, а также целей, предусмотренных законом, в том числе для целей осуществления прав и законных интересов Яндекса и третьих лиц. Яндекс передаёт лишь ту персональную информацию Пользователя и указанных лиц, которая необходима для указанных целей.

4.3. Пользователь с настоящим уведомлен, понимает и соглашается с тем, что в случае, если Пользователь получает доступ к Платформе от организации (юридическое лицо или индивидуальный предприниматель), который оплачивает стоимость Сервисов, в соответствии с заключенным между такой организацией и Яндексом договором, то такая организация может получить доступ к персональным данным Пользователя, используемым на Платформе.

4.4. Пользователь настоящим уведомлен, понимает и соглашается с тем, что Яндекс может собирать статистические данные об использовании Платформы.

5.1. Стороны признают юридическую силу электронной переписки, электронных сообщений, копии текста, содержащегося в электронных документах (файлах), направляемых Сторонами при условии, что такая переписка осуществляется способами, указанными в настоящем разделе.

5.2. Яндекс вправе направлять любые уведомления, сообщения и документы Пользователю по электронной почте, указанной Пользователем при регистрации на Платформе или путем размещения таких уведомлений, сообщений и документов в Консоли управления и/или Блоге и/или посредством СМС-сообщения по номеру мобильного телефона, указанного Пользователем в Консоли управления.

5.3. Все вопросы и претензии, связанные с использованием/невозможностью использования Сервиса, а также возможным нарушением Пользователем Сервиса законодательства и/или прав третьих лиц, должны направляться на электронный почтовый адрес [email protected].

5.4. Если по тем или иным причинам одно или несколько положений Условий или любого документа, на который даны ссылки в Условиях, будут признаны недействительными или не имеющими юридической силы, это не оказывает влияния на действительность или применимость остальных положений Условий или документов, на которые даны ссылки в Условиях.

 

Дата публикации: 14.04.2023 г.

Адрес размещения документа: https://yandex.ru/legal/cloud_termsofuse

Предыдущая версия документа https://yandex.ru/legal/cloud_termsofuse/22042019.

Предыдущая версия документа https://yandex.ru/legal/cloud_termsofuse/04092018.

Event — Платформа умного дома Яндекса

devices. properties.event

Отображение показаний свойств устройства (свойства могут иметь одно из заданных состояний).

  1. Описание свойства
  2. Текущее состояние свойства

Структура используется в ответе операции Информация об устройствах пользователя.

  1. Параметры свойства
  2. Пример использования
ПараметрТипОписаниеОбязательный
typeCтрока, выделяется кавычками, например "Hello world"
.»}}»>
Тип свойства.Да
retrievableЛогическое значение без кавычек: true (истина) или false (ложь).
«}}»>
Доступен ли для свойства устройства запрос состояния. Допустимые значения:

Нет
reportableЛогическое значение без кавычек: true (истина) или
false
(ложь).»}}»>
Оповещает ли свойство об изменении состояния платформу умного дома, используя сервис уведомлений. Допустимые значения:
  • true — оповещение включено. Производитель оповещает платформу умного дома о каждом изменении состояния свойства;

  • false — оповещение выключено. Производитель не оповещает платформу об изменении состояния свойства. Является значением по умолчанию.

Нет
parametersСписок пар "ключ": значение, разделенных запятой. Выделяется фигурными скобками {}.
{\n "name": "John",\n "surname": "Smith"\n}
«}}»>
Объект parameters.Да
Объект parameters
instance
Cтрока, выделяется кавычками, например "Hello world".»}}»>Название функции для свойства. Допустимые значения можно посмотреть в разделе Список функций.Да
events
\n

Массив элементов, разделенных запятой. Элементом могут быть стандартные элементы JSON: строка, число, true, false, объект или массив. Массив выделяется квадратными скобками []:

\n
"cities": ["Moscow", "Tokyo", "New York"]
\n «}}»> of event objects

Массив объектов event, которые описывают события, поддерживаемые свойством. Минимальное количество событий в массиве: 1.

Да
Объект
event
, который входит в массив events
valueCтрока, выделяется кавычками, например "Hello world". «}}»>Значение режима работы функции, обрабатываемое на стороне провайдера. Допустимые значения можно посмотреть в разделе Список функций.Да

Платформа умного дома отправляет провайдеру запрос на получение информации об устройствах пользователя. Провайдер в ответ передает информацию о том, что у пользователя есть датчик с функцией отображений событий открытия окна/двери.

curl -i -X GET 'https://example.com/v1.0/user/devices' \
-H 'Authorization: Bearer 123qwe456a...' \
-H 'X-Request-Id: ff36a3cc-ec...'
HTTP/1.1 200 OK
{
    "request_id": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
    "payload": {
        "user_id": "user-001",
        "devices": [{
            "id": "sensor-001-snsr",
            "name": "Сенсор",
            "description": "Сенсор в спальне",
            "room": "Спальня",
            "type": "devices.
types.sensor", "custom_data": { "api_location": "rus" }, "capabilities": [], "properties": [{ "type": "devices.properties.event", "retrievable": true, "reportable": true, "parameters": { "instance": "open", "events": [{ "value": "opened" }, { "value": "closed" } ] } }], "device_info": { "manufacturer": "Provider-01", "model": "snsr 1", "hw_version": "1.2", "sw_version": "5.4" } }] } }

Структура используется в ответе операции Информация о состояниях устройств пользователя и в теле запроса операции Уведомление об изменении состояний устройств.

  1. Параметры свойства
  2. Пример использования

Платформа умного дома отправляет провайдеру запрос о состоянии устройств пользователя. Провайдер в ответ передает информацию о том, что свойство показывает открытие окна или двери.

curl -i -X POST 'https://example.com/v1.0/user/devices/query' \
-H 'Authorization: Bearer 123qwe456a...' \
-H 'X-Request-Id: ff36a3cc-ec...' \
-H 'Content-Type: application/json' \
-d '{
      "devices": 
      [
        {
            "id": "sensor-001-snsr",
            "custom_data": {
                "api_location": "rus"
            } 
        }
      ]
    }'
HTTP/1.1 200 OK
{
    "request_id": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
    "payload": {
        "devices": [{
            "id": "sensor-001-snsr",
            "properties": [{
                "type": "devices.properties.event",
                "state": {
                    "instance": "open",
                    "value": "opened"
                }
            }]
        }]
    }
}                                                  

Была ли статья полезна?

YTsaurus: Эксабайтная система хранения и обработки теперь с открытым исходным кодом | Максим Бабенко | Яндекс

Опубликовано в

·

Чтение: 15 мин.

·

20 марта

Здравствуйте, меня зовут Максим Бабенко, я руководитель отдела технологий распределенных вычислений в Яндексе. Сегодня мы рады сообщить, что выпустили платформу YTsaurus с открытым исходным кодом. YTsaurus — одна из ключевых инфраструктурных систем больших данных, разработанная в Яндексе и ранее известная как YT.

После почти десятилетия напряженной работы мы хотим поделиться YTsaurus со всем миром. В этой статье мы познакомим вас с историей развития YT, объясним, зачем нужен YTsaurus, опишем его основные возможности и наметим области, для которых он лучше всего подходит.

Репозиторий GitHub содержит код сервера для YTsaurus, инфраструктуру развертывания с использованием k8s, веб-интерфейс для системы и клиентские SDK для популярных языков программирования, таких как C++, Java, Go и Python. Все распространяется под лицензией Apache 2.0, что означает, что каждый может загрузить и модифицировать его в соответствии со своими потребностями.

История начинается в 2006 году. К тому времени Яндекс стал достаточно крупной компанией. Вопрос о том, где хранить и как обрабатывать данные компании, перестал быть простым. В то время основное внимание уделялось журналам из нескольких сервисов. Обработка журналов включала в себя множество аналитических средств, которые могли решать широкий спектр задач, от улучшения моделей машинного обучения до анализа поведения пользователей при внесении функциональных или интерфейсных изменений в сервисы.

Идея масштабируемой и эластичной системы хранения данных, которая могла бы выполнять параллельные вычисления, не заботясь о физическом расположении данных и отказоустойчивости физических компонентов кластера, уже витала в воздухе.

В 2004 году Джеффри Дин и Санджай Гемават из Google опубликовали книгу MapReduce: Simplified Data Processing on Large Clusters. Он во многом предсказал эволюцию индустрии распределенных вычислений на следующее десятилетие. Неудивительно, что похожая реализация парадигмы MapReduce появилась в Яндексе под названием YAMR — Yet Another MapReduce.

ЯМР был построен с нуля в рекордно короткие сроки и, несомненно, оказал огромное влияние на развитие внутренней инфраструктуры компании. Однако со временем стало ясно, что многие варианты дизайна, первоначально сделанные в YAMR, не позволяли системе эффективно развиваться и масштабироваться. Например, главный сервер YAMR был единственной точкой отказа и не масштабировался.

На первый взгляд может показаться, что решение построить собственную инфраструктуру — типичный случай синдрома НИЗ, а вариант использования готового решения вроде Apache Hadoop даже не рассматривался. Но это не совсем так. В сентябре 2015 года группа инженеров Яндекса отправилась в Калифорнию, чтобы встретиться с теми, кто использует стек Hadoop в продакшене. Они задавали вопросы об ограничениях, особенностях работы и ожидаемом развитии Hadoop.

Но потом стало ясно, что стек Hadoop значительно отстает, даже по сравнению с YAMR, который уже поддерживал кодирование стирания и возможность подключения по IPv6. Это были далеко не единственные проблемы.

Проанализировав всё, мы решили отказаться от использования Hadoop. При этом нам пришлось выбирать между эволюционным развитием ЯМР и революционным написанием новой системы, и мы выбрали последнее решение. За пять лет до этих событий небольшая группа энтузиастов, частью которой мне посчастливилось быть, начала работу над проектом под кодовым названием YT. При должной доработке YT имел все шансы заменить YAMR.

Важно понимать, что не было возможности немедленно заменить YAMR. На пике своего развития эта система управляла кластерами, насчитывающими в общей сложности тысячи узлов, и большое количество кода приложений было основано на API YAMR. В результате процесс доработки YT и миграции с YAMR занял много лет. Подробности этой истории интересны сами по себе и, вероятно, заслуживают отдельного поста.

С 2017 года в Яндексе действует единая система MapReduce, развитие которой, как по масштабам, так и по возможностям, продолжается и по сей день. Сегодня компания управляет несколькими кластерами YT размером от нескольких машин до десятков тысяч серверов. Крупнейшие установки хранят эксабайты данных, используя миллионы ядер ЦП и тысячи видеокарт для круглосуточных вычислений.

Нам потребовалось почти семь лет, чтобы ответить на вопрос: «Будет ли YT открытым исходным кодом?» Но вот оно: YT не будет с открытым исходным кодом, но YTsaurus будет!

Первоначально разработанная нами система называлась «YT». Та же аббревиатура появляется во многих частях кодовой базы. Из уст в уста в Яндексе говорят, что аббревиатура «YT» предназначалась для обозначения «Таблица Яндекса», возможно, вдохновленная известной системой Google Big Table, но мы не смогли найти никаких надежных доказательств, подтверждающих эту теорию. .

Когда мы решили выпустить систему с открытым исходным кодом, нам было сложно сохранить исходное название. Проблема заключалась не только в том, что это двухбуквенное сочетание часто ассоциируется с определенной популярной платформой для видеохостинга, но и в том, что сложно найти короткие названия для продуктов, которые выставлены на продажу.

В конце концов мы остановились на имени YTsaurus. У него такая же родная и знакомая приставка «YT», и наша команда всегда относилась к проекту как к живому существу. Теперь мы наконец-то знаем его расу!

В нашей кодовой базе и текстах мы часто сокращаем «YTsaurus» до «YT». Сами пока привыкаем к полному названию 🙂

Мы сделали систему гибкой и масштабируемой, и на данный момент ее возможности не ограничиваются классической технологией MapReduce. В этом разделе я опишу основные технические возможности, доступные в версии YTsaurus с открытым исходным кодом, от низкоуровневого хранилища до высокоуровневых вычислительных примитивов.

Cypress: надежное и эффективное хранилище данных

Ядром любой системы больших данных является хранилище различных журналов, статистики, индексов и других структурированных или неструктурированных данных. YTsaurus построен на основе Cypress, отказоустойчивого хранилища на основе дерева, возможности которого можно кратко описать следующим образом: данные) в виде узлов

  • Прозрачное разбиение больших табличных данных на фрагменты, позволяющее рассматривать таблицу как единое целое, не слишком беспокоясь о деталях физического хранения
  • Поддержка механизмов хранения табличных данных на основе столбцов и строк
  • Поддержка сжатого хранения с использованием различных кодеков кодирования, таких как lz4 и zstd, с различными уровнями сжатия
  • Поддержка кодирования стирания с использованием различных кодеков стирания с различной контрольной суммой стратегии расчета, имеющие разные параметры избыточности и допустимые типы потерь
  • Выразительная схематизация данных с поддержкой иерархических типов и знаков сортировки данных
  • Фоновая репликация и восстановление стертых данных без ручного вмешательства
  • Семантика транзакций с поддержкой вложенных транзакций и блокировок моментальных/общих/эксклюзивных уровней
  • Транзакции, которые могут повлиять на многие объекты Cypress и длиться неопределенно долго
  • Гибкая система учета квот
  • В основе Cypress лежит реплицированный и масштабируемый по горизонтали главный сервер, на котором хранятся метаданные о древовидной структуре Cypress, а также о составе и расположении реплик фрагментов для всех таблиц в кластере. Главные серверы реализованы как реплицированные конечные автоматы на основе Hydra, проприетарного алгоритма консенсуса, похожего на Raft.

    Cypress реализует отказоустойчивый эластичный уровень данных, который используется практически во всех аспектах системы, описанных ниже.

    Вычисления MapReduce и планировщик общего назначения

    Несмотря на то, что технология MapReduce уже не считается новой и необычной, ее реализация в нашей системе заслуживает внимания. Мы по-прежнему используем его для вычислений с петабайтами данных, где требуется высокая пропускная способность.

    MapReduce в YTsaurus имеет следующие особенности:

    • Богатая базовая модель операций: классический MapReduce (с различными стратегиями перетасовки и поддержкой многоэтапного разбиения), Map, Erase, Sort и некоторые расширения классической модели, учитывающие «сортированность» входных данных
    • Горизонтальная масштабируемость вычислений: операции разбиты на задания, которые выполняются на отдельных серверах
    • Поддержка сотен тысяч заданий в одной операции
    • Гибкая модель иерархических вычислительных пулов с мгновенными и целостными гарантиями, а также справедливой долевое распределение недоиспользованных ресурсов между потребителями без гарантий
    • Модель векторных ресурсов, позволяющая запрашивать различные вычислительные ресурсы (ЦП, ОЗУ, ГП) в разных пропорциях
    • Выполнение заданий на вычислительных узлах в контейнерах, изолированных ЦП, ОЗУ, файловой системой и пространством имен процессов с использованием механизма контейнеризации Porto
    • Масштабируемый планировщик, способный обслуживать кластеры с числом одновременных задач до миллиона
    • Практически весь ход вычислений сохраняется в случае обновлений или отказов узлов планировщика

    YT поддерживает не только выполнение операций MapReduce, но и развертывание в кластере произвольного пользовательского кода.

    В терминологии YT запуск произвольного кода с неопределенными побочными эффектами достигается с помощью «ванильных» операций. Мы используем эту возможность для ряда других компонентов нашей платформы, о которых я расскажу ниже.

    Динамические таблицы хранения k-v

    Парадигма MapReduce практически не подходит для создания конвейеров интерактивных вычислений с временем отклика менее секунды. Проблема заключается не только в том, как данные обрабатываются, но и в том, как они хранятся.

    Статические таблицы YT, как и набор файлов в HDFS, могут служить входными и выходными данными для вычислений MapReduce. Однако их нельзя использовать в интерактивном сценарии, поскольку они привязаны к медленному постоянному носителю данных. Для интерактивных сценариев приложения обычно используют хранилища ключей и значений. Они могут масштабироваться горизонтально, обеспечивая доступ для чтения и записи с малой задержкой.

    К счастью, в 2014 году мы начали работать над динамическими таблицами в рамках YT. Они частично основаны на модели Apache HBase. Они масштабируются горизонтально и используют нашу распределенную файловую систему в качестве базового хранилища. Однако, в отличие от Apache HBase, динамические таблицы органично интегрированы в общую экосистему: они представляют собой узлы Cypress и могут использоваться во многих сценариях, где ожидаются статические таблицы.

    Например, в YT можно создать динамическую таблицу в результате операции MapReduce и использовать ее для быстрого поиска и вставки на основе ключа. В то же время вы можете создать фоновый процесс MapReduce, который обрабатывает выборку данных из динамической таблицы и вычисляет по ней некоторую статистику.

    • Хранение данных в модели MVCC. Пользователи могут искать значения по ключу или по метке времени
    • Масштабируемость: динамические таблицы разбиты на планшеты (сегменты по диапазонам ключей), которые обслуживаются отдельными серверами
    • Транзакционность: динамические таблицы представляют собой хранилище OLTP, которое может изменять множество строк в разных сегментах из разных таблиц
    • Отказоустойчивость: отказ одного узла, обслуживающего планшет, приводит к перемещению этого планшета на другой узел без потери данных
    • Изоляция : узлы, обслуживающие планшеты, сгруппированы в пакеты, расположенные на отдельных машинах, что обеспечивает изоляцию нагрузки
    • Проверка конфликтов на уровне отдельных ключей или даже отдельных значений
    • Горячие ответы данных из ОЗУ
    • Встроенный SQL-подобный язык для сканирования и анализа запросов

    Помимо динамических таблиц с интерфейсом хранилища k-v, система поддерживает динамические таблицы, реализующие абстракцию очереди сообщений, а именно темы и потоки. Эти очереди также можно считать таблицами, поскольку они состоят из строк и имеют собственную схему. В транзакции вы можете одновременно изменять строки как в динамической таблице k-v, так и в очереди. Это позволяет вам строить потоковую обработку поверх динамических таблиц YT с семантикой ровно один раз.

    YQL

    YQL — это язык запросов на основе SQL; это первый высокоуровневый примитив, созданный поверх YT. YQL занимает примерно такое же положение по отношению к YT, как Hive по отношению к Hadoop. Эта технология позволяет пользователям писать простые запросы на языке SQL, а не создавать последовательность операций MapReduce с помощью пользовательского кода. Вот пример такого запроса:

     SELECT 
    region,
    AVG(age) AS avg_age_in_region,
    COUNT(DISTINCT ip) AS ips_count
    FROM `//home/production/users`
    СГРУППИРОВАТЬ ПО РЕГИОНУ
    ORDER BY avg_age_in_region;

    Сегодня многие задачи с большими данными можно кратко сформулировать в виде SQL-запросов. Без YQL наша экосистема была бы неполной. Это один из самых популярных инструментов как для специального анализа больших наборов данных, так и для регулярных производственных расчетов.

    Преимущества YQL включают:

    • Мощный механизм выполнения графов, который может создавать конвейеры MapReduce с сотнями узлов и адаптироваться во время вычислений
    • Возможность построения сложных конвейеров обработки данных с использованием SQL путем сохранения подзапросов в переменных в виде цепочек зависимых запросов и транзакций
    • Предсказуемое параллельное выполнение запросов любой сложности
    • Эффективная реализация соединений, подзапросов и оконных функций без ограничений по их топологии или вложенности
    • Обширная библиотека функций
    • Поддержка пользовательских функций на C++, Python и JavaScript
    • Поддержка использования моделей машинного обучения через CatBoost и TensorFlow
    • Автоматическое выполнение небольших частей запросов на подготовленных вычислительных экземплярах в обход MapReduce для уменьшения задержки

    CHYT

    Само собой разумеется, что большинство моих читателей слышали о ClickHouse. В 2016 году эта СУБД стала пионером среди открытых технологий Яндекса и оказалась настолько успешной, что в 2021 году была выделена в отдельную компанию под названием ClickHouse Inc. исполнительный движок и множество интеграций с системами BI. Одной из приятных особенностей ClickHouse является хорошее разделение частей хранения и вычислений в исходном коде, что позволило нам построить CHYT в 2018 году — интеграцию вычислительного движка ClickHouse с YTsaurus в качестве хранилища.

    В экосистеме YTsaurus CHYT предоставляет следующие возможности

    • Быстрые аналитические запросы к статическим таблицам в YT с задержкой менее секунды
    • Повторное использование существующих данных в кластере YTsaurus без необходимости их копирования в отдельный кластер ClickHouse
    • Возможность для интеграции (например, со сторонними системами визуализации) через собственные драйверы ODBC и JDBC ClickHouse

    Отмечу, что интеграция выполнена на достаточно низком уровне. Это позволяет нам использовать весь потенциал как YTsaurus, так и ClickHouse, а именно:

    • Поддержка для чтения как статических, так и динамических таблиц
    • Частичная поддержка транзакционной модели Ytsaurus
    • Поддержка распределенных встав кэширование данных, которое в некоторых случаях позволяет считывать данные выполнения запроса исключительно из памяти экземпляра

    Код сервера ClickHouse выполняется в вышеупомянутых ванильных операциях, используя те же вычислительные ресурсы, которые могут использоваться для вычислений MapReduce. В этом смысле кластер YTsaurus действует как вычислительное облако по отношению к кластерам CHYT внутри.

    Это позволяет разным пользователям или группам пользователей запускать несколько кластеров CHYT в одном кластере YT, полностью изолированных друг от друга, решая проблему разделения ресурсов облачным способом.

    SPYT

    В 2019 году Яндекс представил SPYT, систему, которая интегрирует Apache Spark в качестве вычислительного механизма для данных, хранящихся в YT. Подобно CHYT, ванильные операции YTsaurus предоставляют вычислительные ресурсы для кластера Spark. Apache Spark изначально был разработан для упрощения подключения к стороннему хранилищу в качестве источника данных.

    SPYT также хорошо зарекомендовал себя в экосистеме YTsaurus. Это один из основных способов написания процессов ETL благодаря богатым возможностям интеграции со сторонними системами. Под капотом Spark используется гибкий оптимизатор распределенных вычислений, который максимально увеличивает объем памяти для хранения промежуточных данных и может реализовывать вычислительные конвейеры с несколькими соединениями.

    Различные SDK

    Часто SDK для системы на определенном языке автоматически генерируются или пишутся кем-то из сообщества пользователей и давно не поддерживаются. В нашем случае мы сами разрабатываем все API на популярных языках (C++, Python, Java, Go). В каждом случае учитываются и продуманы все нюансы взаимодействия с системой.

    Наши клиентские библиотеки, написанные на разных языках, могут повторять запросы, включая чтение или запись больших объемов данных, несмотря на возможные сбои сети и другие ошибки. При создании каждой библиотеки мы учитывали особенности языков и использовали их, чтобы сделать взаимодействие с системой максимально удобным и простым.

    Веб-интерфейс

    Удобный веб-интерфейс является обязательным условием для системы, используемой тысячами пользователей. Более того, мы намеренно не стали создавать отдельные веб-интерфейсы для пользователей и администраторов, что уберегло нас от распространенной ситуации, когда административный веб-интерфейс делается наспех энтузиастами: ведь пользовательская сторона важнее, и не нужно стыдно перед админами 🙂

    Вот что вы можете делать с веб-интерфейсом YTsaurus:

    • Навигация по Cypress для просмотра файлов, таблиц и других объектов
    • Создание, переименование или удаление объектов Cypress и изменение их атрибутов
    • Выполнение и просмотр MapReduce вычисления
    • Выполнение и просмотр истории SQL-запросов по всем механизмам — YQL, CHYT, динамические таблицы SQL
    • Администрирование системы: мониторинг работоспособности компонентов кластера, создание, удаление или блокировка пользователей, управление правами доступа и квотами, просмотр компонентов кластера версии и многое другое

    Большая часть серверного кода написана на C++. Мы любим этот язык за его богатую функциональность и эффективный код. После выпуска YTsaurus с открытым исходным кодом мы надеемся поделиться большим количеством разработок, которые могут быть полезны в виде отдельных примитивов C++.

    Серверный код создается с использованием компилятора clang и системы сборки CMake.

    Отдельные части системы написаны на Go, Python и Java. Существует также API для разработки приложений, которые работают с YTsaurus на четырех упомянутых выше языках программирования.

    База кода автоматически синхронизируется с внутренним хранилищем. Таким образом, актуальная версия YTsaurus всегда доступна извне.

    YTsaurus работает на Linux x86–64.

    Развертывание и администрирование

    Внутри Яндекса установлено более 20 установок YTsaurus. Они сильно различаются по размеру и конфигурации: от 5 до 20 000+ хостов в одном кластере. YTsaurus также интегрирован с несколькими внутренними системами Яндекса, включая аутентификацию, контроль доступа, аудит, мониторинг, управление оборудованием и оркестрацию контейнеров. Все эти системы позволяют нам управлять кластерами с минимальными усилиями.

    Для удобства пользователей мы вложили средства в разработку нашего оператора второго уровня для автоматизированного развертывания кластера YTsaurus в Kubernetes с поддержкой стандартных механизмов обновления до новой версии с даунтаймом. Оператор позволяет за несколько минут развернуть ваш кластер YTsaurus на локальной машине в миникубе, общедоступном облаке или собственной локальной установке Kubernetes.

    Конфигурацией кластера можно управлять «на лету», изменяя системные узлы в дереве метаданных (Cypress). Используя основные команды Cypress, такие как list, get, set и remove, вы можете создать учетную запись, добавить пользователя или вычислительный пул, предоставить доступ к каталогу или удалить узлы кластера.

    Особо следует отметить возможность динамической настройки отдельных компонентов: изменяя специальные атрибуты, вы можете настроить размеры кэша, периоды подтверждения или параметры ведения журналов на узлах.

    YTsaurus — это вычислительная платформа, поэтому подразумевается выполнение пользовательского кода. Для запуска и изоляции ненадежного кода YTsaurus использует Porto — систему контейнеризации, разработанную в Яндексе. Для полной изоляции пользователей в мультитенантном кластере рекомендуется установить Porto в качестве CRI Kubernetes. Это откроет весь спектр возможностей YTsaurus для изоляции заданий и использования настраиваемых сред в различных операциях.

    И, конечно же, работа большой распределенной системы невозможна без инструментов наблюдаемости — логирования, количественного мониторинга и трассировки. YTsaurus ведет структурированные журналы для аудита и мониторинга действий пользователей, а также подробные журналы отладки для более глубокой диагностики проблем. Кроме того, система поддерживает экспорт метрик в формате Prometheus и доставку трассировки по протоколу Jaeger gRPC.

    Давайте рассмотрим несколько вариантов использования нашей системы в Яндексе.

    Одним из наиболее показательных и типичных вариантов использования YTsaurus является создание DWH. Например, заказы от Яндекс Такси, Яндекс Еда, Яндекс Гастроном и Яндекс Доставка поступают в динамические таблицы YTsaurus в необработанном виде с минимальной задержкой. Объем данных достигает сотен терабайт в месяц.

    Затем заказы обрабатываются с помощью различных инструментов: например, большинство аналитических витрин данных готовятся с использованием YQL и SPYT. Общий объем данных превышает 6 ПБ. CHYT используется для специального анализа, а в Yandex DataLens создаются различные визуализации. Аналогичные варианты использования существуют и для других сервисов Яндекса, таких как Яндекс Маркет, Яндекс Музыка и Яндекс Путешествия.

    Существуют также очень специфические варианты использования. Например, все три суперкомпьютера Яндекса управляются планировщиком YTsaurus. Многие узлы с различными типами графических процессоров подключены к YT и распределены по разным деревьям пулов. Это позволяет пользователям явно указывать требуемую модель графического процессора и использовать данные, хранящиеся в YTsaurus.

    В настоящее время динамические таблицы в YTsaurus хранят петабайты данных, и на их основе построено большое количество интерактивных сервисов. Один из крупнейших внутренних заказчиков — рекламная команда Яндекса. На конференции HighLoad++ 2022 мои коллеги рассказали о своем подходе к построению интерактивной потоковой обработки на основе YTsaurus.

    YTsaurus — большой проект с богатой историей. Приглашаем всех любознательных взглянуть на YTsaurus и найти для себя что-то полезное. Возможно, вы оцените технические решения, которые мы реализовали в коде, или найдете возможность развернуть установку YTsaurus и опробовать ее на практике.

    Если вы заинтересованы и хотите помочь нам в разработке системы, это было бы здорово. Поделитесь своим отзывом в Telegram-чате, а еще лучше — присылайте пулл-реквесты.

    Зарплата инженера-программиста Яндекса | $23K-$120K+

    ← Каталог компаний

    Работаете здесь?

    • Заработная плата
    • Инженер-программист

    Средняя заработная плата по уровням

    Добавить уровни CompCompare
    G1 4
    (начальный уровень)
    23 тысячи долларов
    22 тысячи долларов
    489 долларов
    404 $
    G15
    35 тысяч долларов
    32 тысячи долларов
    62
    3 тысячи долларов
    G16
    55 тысяч долларов
    47 тысяч долларов
    3 тысячи долларов
    5 тысяч долларов
    G17
    82 тысячи долларов
    58 тысяч долларов
    15 тыс.
    $
    9 тыс. $
    Посмотреть еще 4 уровняДобавить сравнениеСравнить уровни

    Получить деньги, а не играть

    Мы обсудили тысячи предложений и регулярно добиваемся повышения на 30 000 долларов (иногда на 300 000 долларов). Договаривайтесь о вашей зарплате или просматривайте ваше резюме настоящими экспертами — рекрутерами, которые делают это ежедневно.

    Последние отчеты о зарплате
    AddAdd CompAdd Компенсация

    Компания

    Местоположение | Дата

    Уровень Имя

    Тег

    Годы опыта

    Итого / В компании

    Общая компенсация (долл. США)

    База | Запас (год) | Бонус

    Зарплаты не найдены
    Разблокируйте, добавив свою зарплату!

    Анонимно добавьте свою зарплату менее чем за 60 секунд и продолжайте изучать все данные.

    ******

    *****, ** | ****/**/**

    ***

    **

    **
    $***,***

    ******

    *****, ** | ****/**/**

    ***

    **

    **
    $***,***

    ******

    *** **, ** | ****/**/**

    ***

    **

    **
    $***,***

    ******

    *** **, ** | ****/**/**

    ***

    **

    **
    $***,***

    ******

    *** **, ** | ****/**/**

    ***

    **

    **
    $***,***

    ******

    *****, ** | ****/**/**

    ***

    **

    **
    $***,***

    ******

    *** **, ** | ****/**/**

    ***

    **

    **
    $***,***

    ******

    *** **, ** | ****/**/**

    ***

    **

    **
    $***,***

    ******

    *****, ** | ****/**/**

    ***

    **

    **
    $***,***

    ******

    *** **, ** | ****/**/**

    ***

    **

    **
    $***,***

    Экспорт данных Открытые задания


    9000 4
    График вестинга

    25%

    1 9 лет0003

    25%

    YR 2

    25%

    YR 3

    25%

    YR 4

    Stock Type
    R SU

    В Яндексе основные RSU подчиняются 4-летнему графику наделения правами:

    • 25% присваивается в течение 1-го года (6,25% ежеквартально)

    • 25% присваивается во 2-м году (6,25% ежеквартально)

    • 25% присваивается в течение 3-го года (6,25 % ежеквартально)

    • 25% на 4-й год (6,25% ежеквартально)

    Условия RSU. В соответствии с наградой RSU вы будете иметь право получить некоторое количество акций Яндекса класса А бесплатно для вас, если вы удовлетворяете критериям, основанным на времени, в соответствии с вашей наградой. Например, если у вас есть награда RSU за 100 акций, 25% из которых принадлежат определенной дате, то в эту дату вы будете иметь право на бесплатное получение 25 акций. Цена исполнения, связанная с RSU, отсутствует.


    Подпишитесь на проверенные предложения инженера-программиста. Подробную информацию о компенсации вы получите по электронной почте. Узнать больше →

    Введите свой адрес электронной почты

    Введите свой адрес электронной почты

    Этот сайт защищен reCAPTCHA, к нему применяются Политика конфиденциальности и Условия обслуживания Google.

    FAQ

    Какая самая высокая зарплата инженера-программиста в Яндексе?

    Самый высокооплачиваемый пакет заработной платы для инженера-программиста в Яндексе составляет 101 645 долларов в год.