Calc dag failed: Calc DAG failed! | MiningClub.info

Содержание

Calc DAG failed! | MiningClub.info

Друзья, ахтунг, 1050ti gaming x, не создаётся даг.
Логи следующие:
23:37:33:705 227c ETH: Stratum — Connected (eth-br.dwarfpool.com:8008)
23:37:33:705 228c remove first packet 461
23:37:33:705 228c new buf size: 461
23:37:33:721 228c parse packet: 58
23:37:33:721 228c remove first packet 402
23:37:33:721 228c new buf size: 402
23:37:33:721 228c parse packet: 401
23:37:33:721 228c new buf size: 0
23:37:33:736 228c got 36 bytes
23:37:33:736 228c buf: {«id»:2,»result»:true,»error»:null}

23:37:33:736 228c parse packet: 35
23:37:34:064 228c DCR: Authorized
23:37:33:846 227c got 39 bytes
23:37:34:080 227c buf: {«id»:2,»jsonrpc»:»2.0″,»result»:true}

23:37:34:080 227c parse packet: 38
23:37:34:080 227c ETH: Authorized
23:37:34:080 228c new buf size: 0
23:37:34:080 227c send: {«worker»: «», «jsonrpc»: «2.0», «params»: [], «id»: 3, «method»: «eth_getWork»}

23:37:34:096 227c new buf size: 0
23:37:34:252 227c got 244 bytes
23:37:34:252 227c buf: {«result»:[«0x3a9b1fa699af04ff5f248e9e4edbfb08769ca395b977d96fb979feb1c1802fe7″,»0x08e704bf06ac983d776d734cacf1f611802b802efb5a5f5cb8086d6a0d966ac5″,»0x0000000225c17d04dad2965cc5a02a23e254c0c3f75d9178046aeb27ce1ca574″],»jsonrpc»:»2.0″,»id»:3}

23:37:34:252 227c parse packet: 242
23:37:34:268 227c ETH: job changed
23:37:34:268 227c new buf size: 0
23:37:34:299 2268 Setting DAG epoch #175…
23:37:36:862 2268 Setting DAG epoch #175 for GPU0
23:37:36:877 226c Setting DAG epoch #175 for GPU1

23:37:36:877 2278 Setting DAG epoch #175 for GPU2
23:37:36:877 2268 Create GPU buffer for GPU0
23:37:36:893 2278 Create GPU buffer for GPU2
23:37:36:893 226c Create GPU buffer for GPU1
23:37:40:112 227c got 244 bytes
23:37:40:112 227c buf: {«result»:[«0x1eaa7894fa1fe04d15955f6c2f00d5df54e49bd748b459e6c4fd385c5d3884a3″,»0x08e704bf06ac983d776d734cacf1f611802b802efb5a5f5cb8086d6a0d966ac5″,»0x0000000225c17d04dad2965cc5a02a23e254c0c3f75d9178046aeb27ce1ca574″],»jsonrpc»:»2.0″,»id»:0}

23:37:40:112 227c parse packet: 242
23:37:40:127 227c ETH: job changed
23:37:40:127 227c new buf size: 0
23:37:40:127 227c ETH: 03/17/18-23:37:40 — New job from eth-br.dwarfpool.com:8008

23:37:40:143 227c target: 0x0000000225c17d04 (diff: 2000MH), epoch 175(2.37GB)
23:37:40:143 227c ETH — Total Speed: 0.000 Mh/s, Total Shares: 0, Rejected: 0, Time: 00:00
23:37:40:143 227c ETH: GPU0 0.000 Mh/s, GPU1 0.000 Mh/s, GPU2 0.000 Mh/s
23:37:40:143 227c DCR — Total Speed: 0.000 Mh/s, Total Shares: 0, Rejected: 0
23:37:40:159 227c DCR: GPU0 0.000 Mh/s, GPU1 0.000 Mh/s, GPU2 0.000 Mh/s
23:37:41:909 2278 GPU 2, GpuMiner cu_kd failed 4 (1), unspecified launch failure
23:37:41:924 2278 GPU 2, Calc DAG failed!
23:37:41:956 226c GPU 1, GpuMiner cu_kd failed 4 (11), unspecified launch failure
23:37:41:956 226c GPU 1, Calc DAG failed!
23:37:42:003 2268 GPU 0, GpuMiner cu_kd failed 4 (11), unspecified launch failure
23:37:42:003 2268 GPU 0, Calc DAG failed!
23:37:43:518 227c got 244 bytes
23:37:43:518 227c buf: {«result»:[«0x6e5eac11d3fcbc0eadd82ecb973343ac4e21c8c17dff5c9cf4a51429cc7ead90″,»0x08e704bf06ac983d776d734cacf1f611802b802efb5a5f5cb8086d6a0d966ac5″,»0x0000000225c17d04dad2965cc5a02a23e254c0c3f75d9178046aeb27ce1ca574″],»jsonrpc»:»2.0″,»id»:0}

23:37:43:518 227c parse packet: 242
23:37:43:518 227c ETH: job changed
23:37:43:518 227c new buf size: 0
23:37:43:518 227c ETH: 03/17/18-23:37:43 — New job from eth-br.dwarfpool.com:8008

23:37:43:518 227c target: 0x0000000225c17d04 (diff: 2000MH), epoch 175(2.37GB)
23:37:43:518 227c ETH — Total Speed: 0.000 Mh/s, Total Shares: 0, Rejected: 0, Time: 00:00
23:37:43:518 227c ETH: GPU0 0.000 Mh/s, GPU1 0.000 Mh/s, GPU2 0.000 Mh/s
23:37:43:518 227c DCR — Total Speed: 0.000 Mh/s, Total Shares: 0, Rejected: 0
23:37:43:518 227c DCR: GPU0 0.000 Mh/s, GPU1 0.000 Mh/s, GPU2 0.000 Mh/s
23:37:44:253 2374 Quit, please wait…
23:37:45:440 2278 Set global fail flag, failed GPU2
23:37:45:440 2278 GPU 2 failed
23:37:45:472 226c Set global fail flag, failed GPU1
23:37:45:472 226c GPU 1 failed
23:37:45:518 2268 Set global fail flag, failed GPU0
23:37:45:518 2268 GPU 0 failed

В чём может быть проблема?
Заранее спасибо!
Дрова последние.
Файл подкачки более 16гб.

Nvidia Geforce GTX1050Ti 4Gb — решаем проблему CUDA error 11

Информация о материале
Опубликовано: 04.11.2019, 01:41

Владельцы видеокарт Nvidia Geforce GTX1050Ti c 4Gb видеопамяти начинают сталкиваться с проблемой нехватки этой самой памяти при создании DAG файлов в Windows 10. Причем сам DAG файл на начало ноября 2019 года имеет размер 3.3 Gb, что значительно меньше доступных 4Gb. Данная проблема известна давно и связана с Windows 10, которая утилизирует много видеопамяти. Решения этой проблемы так же хорошо известны еще со времен приближения DAG файла к размерам 2Gb и 3Gb. Далее рассмотрим все варианты, которые доступны, что бы продлить работу видеокарт с 4Gb GDDR памяти на майнинге криптовлюты Ethereum.

 

Самый эффективный и долгосрочный способ это перейти на Linux операционные системы, например, HiveOS, которые потребляют минимум видеопамяти. Такое кардинальное решение позволит владельца видеокарт с 4Gb памяти (GTX1050ti и RX480/RX580) оставаться в майнинге Ethereum до конца 2020 года.

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

Третий вариант это остаться на Windows 10, но нужно выполнить несколько действий, которые увеличат время работы на эфире еще на 6-7 месяцев.

  1. Установить драйвера Nvidia, которые меньше всего утилизируют видеопамяти: 388.13, 388.71, 419.35
  2. Увеличить файл подкачки по формуле DAG*количество видеокарт+4Gb. Для четырех видеокарт GTX1050Ti  уже сейчас нужно минимум 17Gb виртуальной памяти. Лучше сразу установить с запасом вперед на несколько месяцев в районе 25Gb.
  3. Вместо майнера Claymore запускать Phoenix, т.к. ему требуется меньше видеопамяти для создания DAG файлов
  4. В первый слот поставить видеокарту с 8Gb или 6Gb видеопамяти если есть. В Bat файл добавить команды — lidag 1 и — eres 0 (Claymore)
  5. В Windows 10 отключить все украшательства рабочего стола по максимуму, сделать классическую стиль рабочего стола с одним цветом, удалить все файлы с рабочего стола.
  6. В Bat файл добавить следующие строчки:

setx GPU_FORCE_64BIT_PTR 0
setx GPU_MAX_HEAP_SIZE 100
setx GPU_USE_SYNC_OBJECTS 1
setx GPU_MAX_ALLOC_PERCENT 100
setx GPU_SINGLE_ALLOC_PERCENT 100

Выполнив все эти рекомендации Вы продлите майнинг Ethereum с помощью видеокарт Geforce GTX1050Ti 4Gb на Windows 10 как минимум еще на пол года.

 

RaveOS News and Updates – Telegram

🇷🇺16.08.2021

☄️Майнеры добавлены в RaveOS

Nbminer 39.0
Новый режим LHR ethash для майнинга на графических процессорах LHR серии RTX 30, способный получать ~70% от максимального разблокированного хэшрейта.
— Этот режим можно настроить с помощью аргумента -lhr, сейчас он работает только для ethash.
— -lhr по умолчанию равно 0, что означает, что даже если -lhr не установлен, режим с -lhr 68 будет применен к графическим процессорам LHR, если они будут обнаружены.
— Настройте режим LHR, установив -lhr <значение>, например при -lhr 68 ожидается получить 68% хэшрейта как для той же модели без блокировки. -lhr с более высоким значением приведет к более высокому хэшрейту, но имеет более высокую вероятность перехода в состояние блокировки, что приведет к гораздо меньшему хэшрейту. Оптимальное значение начальной настройки составляет 68, которое было протестировано на стабильность в большинстве конфигураций рига.
— значение lhr может быть установлено для каждого графического процессора с помощью списка, разделенного запятыми,-lhr 65,68,0, -1, где -1 означает отключение режима LHR.

🇬🇧08/16/2021

☄️Miners added in RaveOS

Nbminer 39.0
Ethash New LHR mode for ETH mining on RTX 30 series LHR GPUs, able to get ~70% of maximum unlocked hashrate.
— This mode can be tuned by argument -lhr, only works for ethash right now.
— -lhr default to 0, meaning even if -lhr is not set, LHR mode with -lhr 68 will be applied to LHR GPUs if certain GPUs are detected.
— Tune LHR mode by setting -lhr <value>, a specific value will tell miner try to reach value percent of maximum unlocker hashrate, e.g. -lhr 68 will expect to get 68% of hashrate for same model non-LHR GPU. Higher -lhr value will results in higher hashrate, but has higher possibility to run into lock state, which will leads to much less hashrate. A good start tuning value is 68, which has been tested to be stable on most rig configurations.
— -lhr value can be set for each GPU by using comma separeted list, -lhr 65,68,0,-1, where -1 means turn off LHR mode.

Полный нуб для майнинга здесь: Ubiq

Кажется, я не могу заставить Claymore майнить UBIQ. Я всю ночь получал одни и те же ошибки и совершенно не знал, что делать. Это моя видеокарта? Заранее спасибо.

C: \ Users \ Packard bell \ Desktop \ Claymore’s Dual Ethereum + Decred_Siacoin_Lbry_Pascal AMD + NVIDIA GPU Miner v9.6 — Catalyst 15.12-17.x — CUDA 8.0_7.5_6.5 \ Claymore’s Dual Ethereum + Decred_Siacoin_ AMDLbry_Pascal + NVIDIA GPU Miner v9.6> EthDcrMiner64.exe -epool eu.ubiqpool.io: 8008 -ewal 0x98ab790E692bbD64996A6d37612B72728Fe7A6a0 -epsw x -eworker ubiq -allpools 1 -allcoins 1 -mode 1

ETH: указан 1 пул.

Драйвер 368.81 рекомендуется для лучшей производительности и совместимости. Будьте осторожны с разгоном, используйте тактовые частоты по умолчанию для первых тестов. Нажмите «s» для текущей статистики, «0» .. «9» для включения / выключения карт, «r» для перезагрузки пулов. , «e» или «d» для выбора текущего пула инициализации CUDA…

Доступные карты NVIDIA: 1 версия драйвера CUDA / версия среды выполнения: 7.5 / 7.5 GPU # 0: GeForce GT 630M, доступно 2048 МБ, 2 вычислительных блока, возможности: 2,1

Всего карт: 1 ETHEREUM- ТОЛЬКО РЕЖИМ МАЙНИНГА ВКЛЮЧЕН (-mode 1) ETH: установлена ​​опция «-allpools» для режима eth-proxy stratum, пулы по умолчанию могут использоваться для devfee, подробности смотрите в файле «Readme». Опция «-allcoins» установлена, пулы по умолчанию будут использоваться для devfee, подробности смотрите в файле «Readme». Сторожевой таймер включен Удаленное управление (РЕЖИМ ТОЛЬКО ДЛЯ ЧТЕНИЯ) включено на порту 3333

ETH: Stratum — подключение к ‘eu.ubiqpool.io ‘<209.222.30.133> порт 8008 ETH: Stratum — Connected (eu.ubiqpool.io:8008) ETH: Авторизованная установка эпохи # 5 DAG … Установка эпохи # 5 DAG для GPU0 Создание буфера графического процессора для GPU0 GPU 0 , GpuMiner cu_kd не удалось 8 (0), недопустимая функция устройства GPU 0, Calc DAG не удалось! Ошибка GPU 0 Установка эпохи # 5 DAG для GPU0 GPU 0, GpuMiner cu_kd failed 8 (0), недопустимая функция устройства GPU 0, Calc DAG не удалось! Сбой графического процессора 0 GPU0 t = 59C fan = 0% WATCHDOG: ошибка графического процессора, необходимо перезапустить майнер 🙁 Перезапуск ОК, выход…

Определение рабочего процесса — документация Digdag 0.10.2

Рабочий процесс digdag определяется в файле с суффиксом .dig . Имя файла — это имя рабочего процесса.

Например, если вы создаете рабочий процесс hello_world , вы создадите файл hello_world.dig . Содержимое файла выглядит так:

Часовой пояс
: UTC

+ step1:
  ш>: задачи / shell_sample.sh

+ step2:
  py>: tasks.MyWorkflow.step2
  param1: это param1

+ step3:
  rb>: MyWorkflow.шаг 3
  требуется: tasks / ruby_sample.rb
 

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

UTC . Некоторые примеры других действующих часовых поясов: America / Los_Angeles , Europe / Berlin , Asia / Tokyo и т. Д.

Имена ключей, начинающиеся со знака + — задача. Задачи выполняются сверху вниз по порядку. Задача может быть вложена как дочерняя по отношению к другой задаче.В приведенном выше примере + step2 запускается после + step1 как дочерний для задачи + main .

Задача с параметром type>: command или _type: NAME выполняет действие. Вы можете выбрать различные типы операторов, такие как запуск сценариев оболочки, методы Python, отправка электронной почты и т. Д. Список встроенных операторов см. На странице «Операторы».

Примечание

Установка параметра foo>: bar эквивалентна установке параметров _type: foo и _command: bar .Это синтаксический сахар установки 2 параметров в 1 строку.

Рабочий процесс может встраивать переменные с использованием синтаксиса $ {...} . Вы можете использовать встроенные переменные или определять свои собственные переменные.

Вот список встроенных переменных:

Имя

Описание

Пример

часовой пояс

Часовой пояс этого рабочего процесса

Америка / Лос-Анджелес

id_проекта

Идентификатор проекта этого рабочего процесса

12345

session_uuid

Уникальный UUID этой сессии

414a8b9e-b365-4394-916a-f0ed9987bd2b

session_id

Целочисленный идентификатор этого сеанса

2381

session_time

Время этой сессии с часовым поясом

2016-01-30T00: 00: 00-08: 00

session_date

Дата, часть времени сеанса

2016-01-30

session_date_compact

Часть даты session_time (компактная)

20160130

session_local_time

Формат местного времени session_time

2016-01-30 00:00:00

session_tz_offset

Часть смещения часового пояса в session_time

-0800

session_unixtime

Секунды с момента времени

1454140800

имя_задачи

Название задачи

+ my_workflow + parent_task + child_task0

ID попытки

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

7

Если задана опция schedule:, last_session_time и next_session_time также доступны следующим образом:

Имя

Пример (почасовой график)

Пример (суточный график)

last_session_time

2016-01-29T23: 00: 00-08: 00

2016-01-29T00: 00: 00-08: 00

дата_последней_сессии

2016-01-29

2016-01-29

last_session_date_compact

20160129

20160129

last_session_local_time

2016-01-29 23:00:00

2016-01-29 00:00:00

last_session_tz_offset

-0800

-0800

last_session_unixtime

1454137200

1454054400

last_executed_session_time

2016-01-29T23: 00: 00-08: 00

2016-01-29T00: 00: 00-08: 00

last_executed_session_unixtime

1454137200

1454054400

next_session_time

2016-01-30T01: 00: 00-08: 00

2016-01-31T00: 00: 00-08: 00

next_session_date

2016-01-30

2016-01-31

next_session_date_compact

20160130

20160131

next_session_local_time

2016-01-30 01:00:00

2016-01-31 00:00:00

next_session_tz_offset

-0800

-0800

next_session_unixtime

1454144400

1454227200

last_session_time — отметка времени последнего расписания.Если расписание ежечасное, это последний час. Если расписание ежедневное, значит, это вчера. Не имеет значения, было ли последнее расписание запущено на самом деле или нет. Просто устанавливается последняя метка времени, рассчитанная на основе времени текущего сеанса. Переменная last_executed_session_time — время ранее выполненного сеанса.

Для вычисления переменных можно использовать базовые сценарии JavaScript в синтаксисе $ {...} .

Распространенным вариантом использования является форматирование метки времени в другом формате. Digdag включает в себя Moment.js для расчета времени.

Часовой пояс
: America / Los_Angeles

+ format_session_time:
  # "2016-09-24 00:00:00 -0700"
  echo>: $ {moment (session_time) .format ("ГГГГ-ММ-ДД ЧЧ: мм: сс Z")}

+ format_in_utc:
  # "2016-09-24 07:00:00"
  echo>: $ {moment (session_time) .utc (). format ("ГГГГ-ММ-ДД ЧЧ: мм: сс")}

+ format_tomorrow:
  # "24 сентября 2016 г., 12:00"
  echo>: $ {moment (session_time) .add (1, 'days'). format ("LLL")}

+ get_execution_time:
  # "2016-09-24 05:24:49 -0700"
  эхо>: $ {момент ().format ("ГГГГ-ММ-ДД ЧЧ: мм: сс Z")}
 

Вы можете определять переменные тремя способами:

  • Использование параметра _export в YAML

  • Программируемая установка переменной с использованием API

  • Запуск сеанса с переменными

Примечание

Вы не можете перезаписать встроенные переменные.

Использование _export: параметр

В файле YAML директива _export: определяет переменные.Это полезно для загрузки статических конфигураций, таких как имя хоста базы данных.

Если задача имеет директиву _export , задача и ее дочерние элементы могут использовать переменные, поскольку она определяет переменные в области видимости. В следующем примере все задачи могут использовать foo = 1 , но только + step1 (и + analysis) могут использовать bar = 2 .

 _экспорт:
  foo: 1

+ подготовить:
  py>: tasks.MyWorkflow.prepare

+ проанализировать:
  _export:
    бар: 2

  + step1:
    py>: tasks.MyWorkflow.analysis_step1

+ дамп:
  py>: tasks.MyWorkflow.dump
 

Использование API

Вы можете программировать переменные с помощью языкового API. Например, Python API предоставляет digdag.env.export и digdag.env.store :

.
 импорт digdag

класс MyWorkflow (объект):
  def подготовить (самостоятельно):
    digdag.env.store ({"my_param": 2})

  def analysis (self, my_var):
    print ("my_var должно быть 2:% d"% my_var)
 

digdag.env.store (dict) хранит переменные, чтобы все последующие задачи (включая задачи, не являющиеся дочерними по отношению к задаче) могли их использовать.

 импорт digdag

класс MyWorkflow (объект):
  def export_and_call_child (сам):
    digdag.env.export ({"my_param": 2})
    digdag.env.add_subtask ({'_ type': 'call', '_command': 'child1.dig'})
 

digdag.env.export (dict) совпадает с директивой «_export» в файле YAML. Он определяет переменные для их детей.

Подробнее см. В документации по языковому API:

Запуск сеанса с переменными

Вы можете установить переменные при запуске нового сеанса рабочего процесса.Чтобы установить переменные, используйте -p KEY = VALUE несколько раз:

 $ digdag запустить -p my_var1 = foo -p my_var2 = abc
 

Вы можете разделить файл YAML на небольшие файлы, чтобы организовать сложный рабочий процесс. Для сбора этих файлов используется директива ! Include :

 _экспорт:
  mysql:
    ! включают: 'config / mysql.dig'
  улей:
    ! включают: 'config / hive.dig'

! include: 'tasks / foo.dig'
 

Примечание

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

Если _parallel: true параметр установлен для группы, дочерние задачи в группе выполняются параллельно (внуки не затрагиваются):

 + подготовить:
  # + data1, + data2 и + data3 выполняются параллельно.
  _parallel: true

  + data1:
    sh>: tasks / prepare_data1.sh

  + data2:
    sh>: tasks / prepare_data2.sh

  + data3:
    sh>: tasks / prepare_data3.sh

+ проанализировать:
  sh>: задачи / analysis_prepared_data_sets.sh
 

Если _parallel: {limit: N} (N — целое число: 1, 2, 3,…) параметр установлен для группы, параллельное выполнение дочерних задач в группе ограничено N (на внуков не влияет):

 + подготовить:
  # + data1 и + data2 выполняются параллельно, затем + data3 и + data4 выполняются параллельно.# (+ data1 и + data2 должны быть успешными.)
  _parallel:
    предел: 2

  + data1:
    sh>: tasks / prepare_data1.sh

  + data2:
    sh>: tasks / prepare_data2.sh

  + data3:
    sh>: tasks / prepare_data3.sh

  + data4:
    sh>: tasks / prepare_data4.sh

+ проанализировать:
  sh>: задачи / analysis_prepared_data_sets.sh
 

Если _background: true параметр установлен для задачи или группы, задача или группа выполняются параллельно с предыдущими задачами. Следующей задачей дождитесь завершения фоновой задачи или группы.

 + подготовить:
  + data1:
    sh>: tasks / prepare_data1.sh

  # + data1 и + data2 работают параллельно.
  + data2:
    _background: true
    sh>: tasks / prepare_data2.sh

  # + data3 запускается после + data1 и + data2.
  + data3:
    sh>: tasks / prepare_data3.sh

+ проанализировать:
  sh>: задачи / analysis_prepared_data_sets.sh
 

Если параметр _retry: N (N является целым числом: 1, 2, 3,…) установлен для группы, он пытается выполнить группу с самого начала, когда один или несколько дочерних элементов потерпели неудачу.

 + подготовить:
  # Если + erase_table, + load_data или + check_loaded_data завершились неудачно, выполняется повторная попытка с
  # + снова erase_table._retry: 3

  + erase_table:
    ш>: задачи / erase_table.sh

  + load_data:
    ш>: задачи / load_data.sh

  + check_loaded_data:
    sh>: tasks / check_loaded_data.sh

+ проанализировать:
  sh>: задачи / analysis_prepared_data_sets.sh
 

Задачи также поддерживают параметр _retry: N для повторной попытки выполнения конкретной задачи. Обратите внимание, что некоторые операторы не поддерживают общий параметр _retry , но имеют свои собственные параметры для управления поведением при повторной попытке. Операторы, использующие внешние системы, могут повторно использовать предыдущие результаты.Чтобы гарантировать повторение внешней задачи, вы можете использовать _retry на уровне группы.

Вы можете установить интервал для _retry следующим образом.

 + подготовить:
  _retry:
    предел: 3
    интервал: 10
    interval_type: экспоненциальный
 

лимит — количество повторов. интервал — интервал времени (в секундах). Дополнительно вы можете выбрать interval_type как constant или exponential . Если вы установите константу (по умолчанию), время интервала будет постоянным, как установлено пределом .(счетчик-1) . В приведенном выше примере интервал первой попытки составляет 10 секунд, второй — 20 секунд, третий — 40 секунд.

Если в конфигурации оператора задан параметр _error: , оператор запускается при сбое рабочего процесса.

 # эта задача запускается при сбое рабочего процесса.
_ошибка:
  sh>: tasks / run_when_workflow_failed.sh

+ проанализировать:
  sh>: задачи / analysis_prepared_data_sets.sh
 

Для отправки писем вы можете использовать почту> оператор.

Ethereum: пожалуйста, решите мою проблему cuda error 77 — FindCrypto.нетто

Обновление Ethereum: пожалуйста, решите проблему с шахтой, ошибка cuda 77

C: UsersSAAD MULLAM Двойной Ethereum от MusicClaymore + Decred_Siacoin_Lbry_Pascal_Blake2s_Keccak AMD + NVIDIA GPU Miner v11.9> EthDcrMiner64.exe -epool tpool eu1.ethermine.org:4444 -ewal 0xD69af2A796A563sp03cp0xD69af2A796A763af03c03 3252 -dwal Redhex.my -dpsw x

╔═══════════════════════════════════════════════. ════════════════╗

║ Майнер с двумя графическими процессорами Claymore — v11.9 ║

║ ETH + DCR / SIA / LBC / PASC / BLAKE2S / KECCAK

╚═══════════════════════════════════════════════. ════════════════╝

Вы указали адрес кошелька по умолчанию, он годен только для тестов, для обычного майнинга вы должны изменить его на адрес своего кошелька!

ETH: указан 1 пул

Основной пул Ethereum: eu1.ethermine.org:4444

DCR: указан 1 пул

Главный пул Decred — dcr.suprnova.куб.см: 3252

Платформа AMD OpenCL не найдена

Будьте осторожны с разгоном, используйте для первых тестов частоты по умолчанию

Нажмите «s» для текущей статистики, «0» .. »9 ″ для включения / выключения карт,« r »для перезагрузки пулов,« e »или« d »для выбора текущего пула,« x »для выбора GPU

Инициализация CUDA…

Доступных карт NVIDIA: 1

Версия драйвера CUDA / Версия среды выполнения: 9.2 / 8.0

GPU # 0: GeForce GTX 1060 6 ГБ, доступно 6144 МБ, 10 вычислительных блоков, возможности: 6.1 (автобус pci 1: 0: 0)

Всего карт: 1

РЕЖИМ ДВОЙНОГО МАЙНИНГА ВКЛЮЧЕН: ETHEREUM + DECRED

ETH: режим слоя eth-proxy

Сторожевой таймер включен

Удаленное управление (РЕЖИМ ТОЛЬКО ДЛЯ ЧТЕНИЯ) включено на порт 3333

ETH: Stratum — подключение к «eu1.ethermine.org» <35.234.119.196> порт 4444 (незащищенный)

DCR: Stratum — подключение к «dcr.suprnova.cc» <149.202.215.198> порт 3252 (незащищенный)

DCR: Stratum — Connected (dcr.suprnova.cc:3252) (небезопасный)

ETH: Stratum — Connected (eu1.ethermine.org:4444) (небезопасно)

DCR: авторизованный

ETH: авторизовано

Установка эпохи DAG # 201…

Установка эпохи # 201 DAG для GPU0

Создать буфер GPU для GPU0

ETH: 26.07.18-05: 40: 40 — Новая работа от eu1.ethermine.org:4444

ETH — общая скорость: 0,000 Mh / s, общее количество долей: 0, отклонено: 0, время: 00:00

GPU 0, сбой GpuMiner cu_kd 77 (0), обнаружен незаконный доступ к памяти

GPU 0, Calc DAG не удалось!

ETH: GPU0 0.000 Mh / s

DCR — Общая скорость: 0,000 Mh / s, Всего долей: 0, отклонено: 0

DCR: GPU0 0,000 Mh / s

Установка эпохи # 201 DAG для GPU0

GPU 0, ошибка CUDA 77 — невозможно записать буфер для DAG

Сбой графического процессора 0

DCR: 26.07.18-05: 40: 44 — Новое задание от dcr.suprnova.cc:3252

Сбой графического процессора 0

ETH: 26.07.18-05: 40: 51 — Новая работа от eu1.ethermine.org:4444

ETH — общая скорость: 0,000 Mh / s, общее количество долей: 0, отклонено: 0, время: 00:00

ETH: GPU0 0.000 Mh / s

DCR — Общая скорость: 0,000 Mh / s, Всего долей: 0, отклонено: 0

DCR: GPU0 0,000 Mh / s

GPU0 t = 33C вентилятор = 40%

ETH: 26.07.18-05: 41: 02 — Новая работа от eu1.ethermine.org:4444

ETH — общая скорость: 0,000 Mh / s, общее количество долей: 0, отклонено: 0, время: 00:00

ETH: GPU0 0,000 Mh / s

DCR — Общая скорость: 0,000 Mh / s, Всего долей: 0, отклонено: 0

DCR: GPU0 0,000 Mh / s

WATCHDOG: ошибка графического процессора, необходимо перезапустить майнер 🙁

Перезапуск ОК, выход…

╔═══════════════════════════════════════════════. ════════════════╗

║ Майнер с двумя графическими процессорами Claymore — v11.9 ║

║ ETH + DCR / SIA / LBC / PASC / BLAKE2S / KECCAK

╚═══════════════════════════════════════════════. ════════════════╝

Вы указали адрес кошелька по умолчанию, он годен только для тестов, для обычного майнинга вы должны изменить его на адрес своего кошелька!

ETH: указан 1 пул

Основной пул Ethereum: eu1.ethermine.org:4444

DCR: указан 1 пул

Главный пул Decred — dcr.suprnova.куб.см: 3252

Платформа AMD OpenCL не найдена

Будьте осторожны с разгоном, используйте для первых тестов частоты по умолчанию

Нажмите «s» для текущей статистики, «0» .. »9 ″ для включения / выключения карт,« r »для перезагрузки пулов,« e »или« d »для выбора текущего пула,« x »для выбора GPU

Инициализация CUDA…

Доступных карт NVIDIA: 1

Версия драйвера CUDA / Версия среды выполнения: 9.2 / 8.0

GPU # 0: GeForce GTX 1060 6 ГБ, доступно 6144 МБ, 10 вычислительных блоков, возможности: 6.1 (автобус pci 1: 0: 0)

Всего карт: 1

ETH: Stratum — подключение к «eu1.ethermine.org» <35.234.119.196> порт 4444 (незащищенный)

РЕЖИМ ДВОЙНОГО МАЙНИНГА ВКЛЮЧЕН: ETHEREUM + DECRED

ETH: режим слоя eth-proxy

DCR: Stratum — подключение к «dcr.suprnova.cc» <149.202.215.198> порт 3252 (незащищенный)

Сторожевой таймер включен

Удаленное управление (РЕЖИМ ТОЛЬКО ДЛЯ ЧТЕНИЯ) включено на порт 3333

DCR: Stratum — Connected (dcr.suprnova.cc:3252) (небезопасный)

ETH: Stratum — Connected (eu1.ethermine.org:4444) (небезопасно)

DCR: авторизованный

ETH: авторизовано

Установка эпохи DAG # 201…

Установка эпохи # 201 DAG для GPU0

Создать буфер GPU для GPU0

GPU 0, сбой GpuMiner cu_kd 77 (0), обнаружен незаконный доступ к памяти

GPU 0, Calc DAG не удалось!

ETH: 26.07.18-05: 41: 29 — Новая работа от eu1.ethermine.org:4444

ETH — Общая скорость: 0.000 Mh / s, Всего раздач: 0, Отклонено: 0, Время: 00:00

ETH: GPU0 0,000 Mh / s

DCR — Общая скорость: 0,000 Mh / s, Всего долей: 0, отклонено: 0

Сбой графического процессора 0

Установка эпохи # 201 DAG для GPU0

DCR: GPU0 0,000 Mh / s

GPU 0, ошибка CUDA 77 — невозможно записать буфер для DAG

ETH: 26.07.18-05: 41: 31 — Новая работа от eu1.ethermine.org:4444

ETH — общая скорость: 0,000 Mh / s, общее количество долей: 0, отклонено: 0, время: 00:00

ETH: GPU0 0.000 Mh / s

DCR — Общая скорость: 0,000 Mh / s, Всего долей: 0, отклонено: 0

DCR: GPU0 0,000 Mh / s

Перейти по ссылке

Об Ethereum


Ethereum — это децентрализованная платформа, на которой работают смарт-контракты: приложения, которые работают точно так, как запрограммировано, без какой-либо возможности простоя, цензуры, мошенничества или стороннего вмешательства.
Автор: saad2319
Оценка: 3
Не забудьте поделиться публикацией, если она вам нравится!

DAG — документация по воздушному потоку

A DAG (направленный ациклический граф) — это основная концепция Airflow, объединяющая задачи вместе, организованные с помощью зависимостей и отношений, чтобы указать, как они должны работать.

Вот базовый пример DAG:

Он определяет четыре задачи — A, B, C и D — и определяет порядок, в котором они должны выполняться, и какие задачи зависят от других. Также будет указано, как часто запускать DAG — возможно, «каждые 5 минут, начиная с завтрашнего дня» или «каждый день с 1 января 2020 года».

Сама группа DAG не заботится о том, что происходит внутри задач; это просто касается , как их выполнять — порядок их выполнения, сколько раз повторять их, есть ли у них тайм-ауты и так далее.

Объявление DAG

Есть три способа объявить DAG — либо вы можете использовать диспетчер контекста, либо который неявно добавит DAG ко всему внутри:

 с DAG ("my_dag_name") как dag:
    op = DummyOperator (task_id = "task")
 

Или вы можете использовать стандартный конструктор, передав даг в любой операторов, которых вы используете:

 my_dag = DAG ("my_dag_name")
op = DummyOperator (task_id = "task", dag = my_dag)
 

Или вы можете использовать декоратор @dag , чтобы превратить функцию в генератор DAG:

 @dag (start_date = days_ago (2))
def generate_dag ():
    op = DummyOperator (task_id = "task")

dag = generate_dag ()
 
Группы

DAG — это ничто без задач для запуска, которые обычно имеют форму операторов, датчиков или TaskFlow.

Зависимости задач

Задача / Оператор обычно не живет одна; у него есть зависимости от других задач (те вышестоящих, его), и другие задачи зависят от него (те нижестоящих, его). Объявление этих зависимостей между задачами составляет структуру DAG ( ребер ориентированного ациклического графа ).

Есть два основных способа объявить зависимости отдельных задач. Рекомендуется использовать операторы >> и << :

 первая_задача >> [вторая_задача, третья_задача]
третья_задача << четвертая_задача
 

Или вы также можете использовать более явные методы set_upstream и set_downstream :

 first_task.set_downstream (вторая_задача, третья_задача)
третья_задача.set_upstream (четвертая_задача)
 

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

 из airflow.models.baseoperator import cross_downstream

# Заменяет
# [op1, op2] >> op3
# [op1, op2] >> op4
cross_downstream ([op1, op2], [op3, op4])
 

И если вы хотите связать зависимости вместе, вы можете использовать цепочку :

 от воздушного потока.цепочка импорта models.baseoperator

# Заменяет op1 >> op2 >> op3 >> op4
цепочка (op1, op2, op3, op4)

# Вы также можете делать это динамически
цепочка ([DummyOperator (task_id = 'op' + i) для i в диапазоне (1, 6)])
 

Chain также может выполнять попарных зависимостей для списков одинакового размера (это отличается от перекрестных зависимостей , выполняемых cross_downstream !):

 из цепочки импорта airflow.models.baseoperator

# Заменяет
# op1 >> op2 >> op4 >> op6
# op1 >> op3 >> op5 >> op6
цепочка (op1, [op2, op3], [op4, op5], op6)
 

Загрузка DAG-файлов

Airflow загружает DAG из исходных файлов Python, которые он ищет внутри настроенного DAG_FOLDER .Он возьмет каждый файл, выполнит его, а затем загрузит любые объекты DAG из этого файла.

Это означает, что вы можете определить несколько групп DAG для каждого файла Python или даже распределить одну очень сложную группу DAG по нескольким файлам Python с помощью импорта.

Однако обратите внимание, что когда Airflow загружает группы DAG из файла Python, он извлекает только любые объекты на верхнем уровне , которые являются экземпляром DAG. Например, возьмите этот файл DAG:

 dag_1 = DAG ('this_dag_will_be_discovered')

def my_function ():
    dag_2 = DAG ('но_это_dag_will_not')

моя_функция ()
 

Хотя оба конструктора DAG вызываются при доступе к файлу, только dag_1 находится на верхнем уровне (в глобальных объектах () ), и поэтому только он добавляется в Airflow. dag_2 не загружается.

Примечание

При поиске DAG внутри DAG_FOLDER Airflow в качестве оптимизации рассматривает только файлы Python, содержащие строки airflow и dag (без учета регистра).

Чтобы вместо этого рассматривать все файлы Python, отключите флаг конфигурации DAG_DISCOVERY_SAFE_MODE .

Вы также можете предоставить файл .airflowignore внутри вашего DAG_FOLDER или любой из его подпапок, в котором описаны файлы, которые загрузчик игнорирует.Он охватывает каталог, в котором находится, плюс все подпапки под ним, и должно быть по одному регулярному выражению на строку, с # , обозначающими комментарии.

Работающие DAG-файлы

группы DAG будут работать одним из двух способов:

  • Когда они срабатывают либо вручную, либо через API

  • По определенному расписанию , которое определено как часть DAG

DAG не требует расписания , но очень часто его определяют.Вы определяете его через аргумент schedule_interval , например:

 с DAG ("my_daily_dag", schedule_interval = "@ daily"):
    ...
 

Аргумент schedule_interval принимает любое значение, которое является допустимым значением расписания Crontab, поэтому вы также можете:

 с DAG ("my_daily_dag", schedule_interval = "0 * * * *"):
    ...
 

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

В качестве примера того, почему это полезно, рассмотрите возможность написания группы DAG, которая обрабатывает ежедневный набор экспериментальных данных. Он был переписан, и вы хотите запустить его на данных за предыдущие 3 месяца - нет проблем, поскольку Airflow может залить DAG и запускать его копии для каждого дня в течение этих предыдущих 3 месяцев, все сразу.

Все эти прогоны DAG будут запущены в один и тот же фактический день, но их значения execution_date будут охватывать эти последние 3 месяца, и это то, на что все задачи, операторы и датчики внутри DAG смотрят при запуске.

Примерно так же, как DAG создает экземпляр DAG Run каждый раз, когда он запускается, Задачи, указанные внутри DAG, также создают экземпляры Task Instance вместе с ним.

Назначение DAG

Обратите внимание, что каждый оператор / задача должна быть назначена группе доступности базы данных для запуска. У Airflow есть несколько способов вычисления DAG без его явной передачи:

  • Если вы объявляете своего оператора внутри с блоком DAG

  • Если вы объявляете своего Оператора внутри декоратора @dag ,

  • Если вы помещаете своего оператора выше или ниже по потоку от оператора, имеющего DAG

В противном случае вы должны передать его каждому оператору с dag = .

Аргументы по умолчанию

Часто многим операторам внутри группы DAG требуется один и тот же набор аргументов по умолчанию (например, их start_date ). Вместо того, чтобы указывать это индивидуально для каждого оператора, вы можете вместо этого передать default_args в группу DAG при ее создании, и она автоматически применит их к любому оператору, привязанному к нему:

 default_args = {
    'start_date': datetime (2016, 1, 1),
    'владелец': 'воздушный поток'
}

с DAG ('my_dag', default_args = default_args) как dag:
    op = DummyOperator (task_id = 'dummy')
    печать (указ.owner) # "воздушный поток"
 

Декоратор DAG

Наряду с более традиционными способами объявления одного DAG с помощью диспетчера контекста или конструктора DAG () , вы также можете украсить функцию с помощью @dag , чтобы превратить ее в функцию генератора DAG:

 @dag (default_args = DEFAULT_ARGS, schedule_interval = None, start_date = days_ago (2), tags = ['example'])
def example_dag_decorator (электронная почта: str = '[email protected]'):
    "" "
    DAG для отправки IP-адреса сервера на электронную почту.: param email: Электронная почта для отправки IP. По умолчанию [email protected].
    : введите адрес электронной почты: str
    "" "
    get_ip = GetRequestOperator (task_id = 'get_ip', url = "http://httpbin.org/get")

    @task (multiple_outputs = Истина)
    def prepare_email (raw_json: Dict [str, Any]) -> Dict [str, str]:
        external_ip = raw_json ['происхождение']
        возвращение {
            'subject': f'Сервер подключен с {external_ip} ',
            'body': f 'Похоже, что сегодня ваш сервер, на котором выполняется Airflow, подключен с IP-адреса {external_ip} 
', } email_info = prepare_email (get_ip.выход) EmailOperator ( task_id = 'send_email', to = email, subject = email_info ['subject'], html_content = email_info ['body'] ) dag = example_dag_decorator ()

Помимо того, что это новый способ создания чистых групп DAG, декоратор также устанавливает любые параметры, которые у вас есть в вашей функции, как параметры DAG, позволяя вам устанавливать эти параметры при запуске DAG. Затем вы можете получить доступ к параметрам из кода Python или из {{context.params}} внутри шаблона Jinja.

Примечание

Airflow загружает только те группы DAG, которые появляются на верхнем уровне файла DAG. Это означает, что вы не можете просто объявить функцию с помощью @dag - вы также должны вызвать ее хотя бы один раз в вашем файле DAG и назначить ее объекту верхнего уровня, как вы можете видеть в примере выше.

Поток управления

По умолчанию группа доступности базы данных запускает задачу только тогда, когда все задачи, от которых она зависит, успешны. Однако есть несколько способов изменить это:

  • Ветвление, где вы можете выбрать, к какой задаче перейти на основе условия

  • Только последние, особая форма ветвления, которая работает только в группах DAG, работающих с текущим

  • Зависит от прошлого, где задачи могут зависеть сами от себя от предыдущего запуска

  • Триггерные правила, позволяющие установить условия, при которых группа DAG будет запускать задачу.

Ответвление

Вы можете использовать ветвление, чтобы указать группе DAG не запускать все зависимые задачи, а вместо этого выбрать один или несколько путей для спуска. Вот здесь-то и появляются операторы ветвления.

BranchPythonOperator очень похож на PythonOperator, за исключением того, что он ожидает python_callable , который возвращает task_id (или список task_ids). Возвращается task_id, а все остальные пути пропускаются.

task_id, возвращаемый функцией Python, должен ссылаться на задачу непосредственно ниже по течению от задачи BranchPythonOperator.

Примечание

Когда Задача находится ниже по потоку от оператора ветвления и ниже по потоку от одной или нескольких выбранных задач, она не будет пропущена:

Пути задачи ветвления: branch_a , join и branch_b . Поскольку join является задачей ниже по потоку для branch_a , она все равно будет выполняться, даже если она не была возвращена как часть решения о ветвлении.

BranchPythonOperator также может использоваться с XComs, позволяя контексту ветвления динамически решать, за какой ветвью следовать на основе задач восходящего потока. Например:

 def branch_func (ti):
    xcom_value = int (ti.xcom_pull (task_ids = 'start_task'))
    если xcom_value> = 5:
        вернуть 'continue_task'
    еще:
        вернуть 'stop_task'

start_op = BashOperator (
    task_id = 'start_task',
    bash_command = "эхо 5",
    xcom_push = Верно,
    даг = даг,
)

branch_op = BranchPythonOperator (
    task_id = 'branch_task',
    python_callable = branch_func,
    даг = даг,
)

continue_op = DummyOperator (task_id = 'continue_task', dag = dag)
stop_op = DummyOperator (task_id = 'stop_task', dag = dag)

start_op >> branch_op >> [continue_op, stop_op]
 

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

Как и вызываемый для BranchPythonOperator , этот метод должен возвращать идентификатор последующей задачи или список идентификаторов задач, которые будут запущены, а все остальные будут пропущены:

 класс MyBranchOperator (BaseBranchOperator):
    def choose_branch (self, context):
        "" "
        Запускать дополнительную ветку в первый день месяца
        "" "
        if context ['execution_date']. day == 1:
            return ['daily_task_id', 'month_task_id']
        еще:
            вернуть daily_task_id
 

Только последние

Запуски DAG

Airflow часто запускаются для даты, которая не совпадает с текущей датой - например, запускается одна копия DAG каждый день в прошлом месяце для заполнения некоторых данных.

Однако бывают ситуации, когда вы не хотите, разрешить выполнение некоторых (или всех) частей группы DAG на предыдущую дату; в этом случае вы можете использовать LatestOnlyOperator .

Этот специальный оператор пропускает все задачи, расположенные ниже по потоку, если вы не выполняете «последний» запуск DAG (если время настенных часов прямо сейчас находится между его временем выполнения и следующим запланированным временем выполнения, и это не было запуском извне) .

Вот пример:

 импортировать дату и время как dt

из импорта воздушного потока DAG
от воздушного потока.операторы. dummy import DummyOperator
из airflow.operators.latest_only импортировать LatestOnlyOperator
из airflow.utils.dates import days_ago
из airflow.utils.trigger_rule import TriggerRule

с DAG (
    dag_id = 'latest_only_with_trigger',
    schedule_interval = dt.timedelta (часы = 4),
    start_date = days_ago (2),
    теги = ['example3'],
) как dag:

    latest_only = LatestOnlyOperator (task_id = 'latest_only')
    task1 = DummyOperator (task_id = 'task1')
    task2 = DummyOperator (task_id = 'task2')
    task3 = DummyOperator (task_id = 'task3')
    task4 = DummyOperator (task_id = 'task4', trigger_rule = TriggerRule.ВСЕ СДЕЛАНО)

    latest_only >> task1 >> [task3, task4]
    задача2 >> [задача3, задача4]
 

В случае этого DAG:

  • task1 находится непосредственно после latest_only и будет пропущен для всех запусков, кроме самого последнего.

  • задача2 полностью независима от latest_only и будет выполняться во все запланированные периоды

  • task3 находится ниже по течению от task1 и task2 и из-за правила триггера по умолчанию all_success получит каскадный пропуск от task1 .

  • task4 находится ниже по течению от task1 и task2 , но не будет пропущено, так как его trigger_rule имеет значение all_done .

Зависит от прошлого

Вы также можете сказать, что задача может быть запущена только в том случае, если предыдущий запуск задачи в предыдущем выполнении DAG завершился успешно. Чтобы использовать это, вам просто нужно установить для аргумента depends_on_past в вашей задаче значение True .

Обратите внимание, что если вы запускаете группу DAG в самом начале ее жизненного цикла, а именно, что Execution_date совпадает с start_date , то задача все равно будет выполняться, поскольку нет предыдущего запуска, от которого можно было бы зависеть.

Правила запуска

По умолчанию Airflow будет ждать, пока все вышестоящие задачи завершатся успешно, прежде чем запускать эту задачу.

Однако это просто поведение по умолчанию, и вы можете управлять им с помощью аргумента trigger_rule Задачи. Параметры для trigger_rule :

  • all_success (по умолчанию): все восходящие задачи выполнены успешно

  • all_failed : все восходящие задачи находятся в состоянии сбой или upstream_failed

  • all_done : Все восходящие задачи выполняются с их выполнением

  • one_failed : сбой как минимум одной восходящей задачи (не дожидается завершения всех восходящих задач)

  • one_success : По крайней мере, одна восходящая задача успешно завершена (не дожидается завершения всех восходящих задач)

  • none_failed : все восходящие задачи не завершились или upstream_failed - то есть все восходящие задачи выполнены успешно или пропущены

  • none_failed_or_skipped : все восходящие задачи не завершились сбоем или upstream_failed , и по крайней мере одна восходящая задача завершилась успешно.

  • none_skipped : ни одна восходящая задача не находится в состоянии пропущено , то есть все восходящие задачи находятся в состоянии успешно , не удалось или upstream_failed состояние

  • фиктивный : Никаких зависимостей, запускать эту задачу в любое время

Вы также можете комбинировать это с функцией Depends On Past, если хотите.

Примечание

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

Пропущенные задачи будут каскадно проходить через правила триггеров all_success и all_failed , а также заставят их пропускать. Рассмотрим следующий DAG:

 # dags / branch_without_trigger.py
импортировать дату и время как dt

из airflow.models импортировать DAG
из airflow.operators. dummy import DummyOperator
из airflow.operators.python import BranchPythonOperator

dag = DAG (
    dag_id = 'branch_without_trigger',
    schedule_interval = '@ один раз',
    начальная_дата = дт.datetime (2019, 2, 28)
)

run_this_first = DummyOperator (task_id = 'run_this_first', dag = dag)
ветвление = BranchPythonOperator (
    task_id = 'ветвление', dag = dag,
    python_callable = лямбда: 'ветка_а'
)

branch_a = DummyOperator (task_id = 'branch_a', dag = dag)
follow_branch_a = DummyOperator (task_id = 'follow_branch_a', dag = dag)

branch_false = DummyOperator (task_id = 'branch_false', dag = dag)

join = DummyOperator (task_id = 'join', dag = dag)

run_this_first >> ветвление
ветвление >> branch_a >> follow_branch_a >> join
ветвление >> branch_false >> join
 

join находится после follow_branch_a и branch_false .Задача присоединиться к будет отображаться как пропущенная, потому что ее trigger_rule по умолчанию имеет значение all_success , а пропуск, вызванный операцией ветвления, каскадно снижается, чтобы пропустить задачу, помеченную как all_success .

Установив trigger_rule на none_failed_or_skipped в задаче join , мы можем вместо этого получить предполагаемое поведение:

Динамические DAG-файлы

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

Например, вот группа DAG, которая использует цикл для для определения некоторых задач:

 с DAG ("loop_example") как dag:

    first = DummyOperator (task_id = "first")
    last = DummyOperator (task_id = "last")

    options = ["branch_a", "branch_b", "branch_c", "branch_d"]
    для опции в опциях:
        t = DummyOperator (task_id = option)
        первый >> t >> последний
 

В целом, мы советуем вам сохранять топологию (макет) ваших задач DAG относительно стабильной; динамические группы DAG обычно лучше использовать для динамической загрузки параметров конфигурации или изменения параметров оператора.

Визуализация DAG

Если вы хотите увидеть визуальное представление группы DAG, у вас есть два варианта:

  • Вы можете загрузить пользовательский интерфейс Airflow, перейти к своей группе DAG и выбрать «Графическое представление»

  • Вы можете запустить dags airflow show , который отобразит его как файл изображения

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

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

Группы задач

TaskGroup можно использовать для организации задач в иерархические группы в графическом представлении. Это полезно для создания повторяющихся узоров и уменьшения визуального беспорядка.

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

Отношения зависимости могут применяться ко всем задачам в TaskGroup с помощью операторов >> и << . Например, следующий код помещает task1 и task2 в TaskGroup group1 , а затем помещает обе задачи выше task3 :

 с TaskGroup ("group1") как group1:
    task1 = DummyOperator (task_id = "task1")
    task2 = DummyOperator (task_id = "task2")

task3 = DummyOperator (task_id = "task3")

группа1 >> задача3
 

Если вы хотите увидеть более продвинутое использование TaskGroup, вы можете посмотреть example_task_group.py пример DAG, который поставляется с Airflow.

Примечание

По умолчанию дочерние задачи / группы задач имеют префикс идентификатора group_id их родительской группы задач. Это помогает гарантировать уникальность group_id и task_id во всей группе DAG.

Чтобы отключить префикс, передайте prefix_group_id = False при создании TaskGroup, но обратите внимание, что теперь вы будете нести ответственность за обеспечение каждой отдельной задачи и группы собственным уникальным идентификатором.

Этикетки края

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

Чтобы добавить метки, вы можете использовать их непосредственно в строке с операторами >> и << :

 из этикетки импорта airflow.utils.edgemodifier
my_task >> Label ("Когда пусто") >> other_task
 

Или вы можете передать объект Label в set_upstream / set_downstream :

 из этикетки импорта airflow.utils.edgemodifier
my_task.set_downstream (other_task, Label («Когда пусто»))
 

Вот пример DAG, который иллюстрирует разметку различных ветвей:

с DAG ("example_branch_labels", schedule_interval = "@ daily", start_date = days_ago (2)) как dag:

    ingest = DummyOperator (task_id = "ingest")
    анализировать = DummyOperator (task_id = "анализировать")
    check = DummyOperator (task_id = "check_integrity")
    описать = DummyOperator (task_id = "describe_integrity")
    error = DummyOperator (task_id = "email_error")
    save = DummyOperator (task_id = "save")
    report = DummyOperator (task_id = "report")

    принимать >> анализировать >> проверять
    проверить >> Ярлык ("Ошибок нет") >> сохранить >> Сообщить
    проверьте >> Метка («Обнаружены ошибки») >> Опишите >> Ошибка >> Сообщить
 

DAG и документация по задачам

Можно добавить документацию или примечания к вашим DAG и объектам задач, которые отображаются в веб-интерфейсе («Графическое представление» и «Древовидное представление» для DAG, «Подробная информация об экземпляре задачи» для задач).

Существует набор специальных атрибутов задач, которые отображаются как расширенное содержимое, если они определены:

атрибут

передано на

doc

моноширинный

doc_json

JSON

doc_yaml

ямл

doc_md

уценка

doc_rst

reStructuredText

Обратите внимание, что для групп DAG doc_md является единственным интерпретируемым атрибутом.

Это особенно полезно, если ваши задачи создаются динамически из файлов конфигурации, поскольку это позволяет вам раскрыть конфигурацию, которая привела к связанным задачам, в Airflow:

 "" "
### Мой великий DAG
"" "

dag = DAG ('my_dag', default_args = default_args)
dag.doc_md = __doc__

t = BashOperator ("foo", dag = dag)
t.doc_md = "" "\
#Заголовок"
Вот [url] (www.airbnb.com)
"" "
 

SubDAG

Иногда вы обнаружите, что регулярно добавляете один и тот же набор задач в каждую группу DAG или хотите сгруппировать множество задач в одну логическую единицу.Это то, для чего нужны SubDAG.

Например, вот группа DAG, в которой много параллельных задач в двух разделах:

Мы можем объединить все параллельные операторы task- * в один SubDAG, так что результирующий DAG будет выглядеть следующим образом:

Обратите внимание, что операторы SubDAG должны содержать фабричный метод, возвращающий объект DAG. Это предотвратит обработку SubDAG как отдельного DAG в основном пользовательском интерфейсе - помните, что если Airflow видит DAG на верхнем уровне файла Python, он загрузит его как собственный DAG.Например:

 из импорта воздушного потока DAG
из airflow.operators. dummy import DummyOperator
из airflow.utils.dates import days_ago


def subdag (parent_dag_name, child_dag_name, args):
    "" "
    Сгенерируйте DAG, который будет использоваться как subdag.

    : param str parent_dag_name: Id родительского DAG
    : param str child_dag_name: Id дочернего DAG
    : param dict args: Аргументы по умолчанию, передаваемые во вложенный тег
    : return: DAG для использования в качестве subdag
    : rtype: airflow.models.DAG
    "" "
    dag_subdag = DAG (
        dag_id = f '{parent_dag_name}.{child_dag_name} ',
        default_args = аргументы,
        start_date = days_ago (2),
        schedule_interval = "@ daily",
    )

    для i в диапазоне (5):
        DummyOperator (
            task_id = f '{child_dag_name} -task- {i + 1}',
            default_args = аргументы,
            dag = dag_subdag,
        )

    вернуть dag_subdag


 

Затем на этот SubDAG можно ссылаться в вашем основном файле DAG:

 из импорта воздушного потока DAG
из airflow.example_dags.subdags.subdag import subdag
от airflow.operators.фиктивный импорт DummyOperator
из airflow.operators.subdag import SubDagOperator
из airflow.utils.dates import days_ago

DAG_NAME = 'example_subdag_operator'

args = {
    'owner': 'воздушный поток',
}

с DAG (
    dag_id = DAG_NAME, default_args = args, start_date = days_ago (2), schedule_interval = "@ once", tags = ['example']
) как dag:

    start = DummyOperator (
        task_id = 'начало',
    )

    section_1 = SubDagOperator (
        task_id = 'раздел-1',
        subdag = subdag (DAG_NAME, 'раздел-1', аргументы),
    )

    some_other_task = DummyOperator (
        task_id = 'другая-задача',
    )

    section_2 = SubDagOperator (
        task_id = 'раздел-2',
        subdag = subdag (DAG_NAME, 'раздел-2', аргументы),
    )

    конец = DummyOperator (
        task_id = 'конец',
    )

    начало >> раздел_1 >> другая_задача >> раздел_2 >> конец
 

Вы можете увеличить масштаб SubDagOperator из графического представления основной группы DAG, чтобы показать задачи, содержащиеся в SubDAG:

Еще несколько советов по использованию SubDAG:

  • По соглашению, dag_id SubDAG должен начинаться с префикса имени его родительского DAG и точки ( parent.ребенок )

  • Вы должны совместно использовать аргументы между основной группой DAG и SubDAG, передав аргументы оператору SubDAG (как показано выше)

  • SubDAG должен иметь расписание и быть включенным. Если расписание SubDAG установлено на None или @once , SubDAG завершится успешно, ничего не сделав.

  • Очистка SubDagOperator также очищает состояние задач в нем.

  • Пометка успеха на SubDagOperator не влияет на состояние задач в нем.

  • Воздержитесь от использования Depends On Past в задачах внутри SubDAG, так как это может сбивать с толку.

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

См. airflow / example_dags для демонстрации.

Обратите внимание, что пулы не обрабатываются SubDagOperator , и поэтому ресурсы могут потребляться SubdagOperators сверх любых установленных вами ограничений.

Упаковка DAG

Хотя более простые группы обеспечения доступности баз данных обычно находятся только в одном файле Python, нередки случаи, когда более сложные группы обеспечения доступности баз данных могут быть распределены по нескольким файлам и иметь зависимости, которые должны поставляться вместе с ними («продаваться»).

Вы можете сделать все это внутри DAG_FOLDER со стандартным макетом файловой системы, или вы можете упаковать DAG и все его файлы Python в один zip-файл.Например, вы можете отправить два дага вместе с необходимой зависимостью в виде zip-файла со следующим содержимым:

 my_dag1.py
my_dag2.py
пакет1 / __ init__.py
package1 / functions.py
 

Обратите внимание, что упакованные DAG-файлы имеют некоторые оговорки:

  • Их нельзя использовать, если у вас включена комплектация для сериализации

  • Они не могут содержать скомпилированные библиотеки (например, libz.so ), только чистый Python

  • Они будут вставлены в Python sys.путь и может быть импортирован любым другим кодом в процессе Airflow, поэтому убедитесь, что имена пакетов не конфликтуют с другими пакетами, уже установленными в вашей системе.

В общем, если у вас есть сложный набор скомпилированных зависимостей и модулей, вам, вероятно, будет лучше использовать систему Python virtualenv и установить необходимые пакеты в ваших целевых системах с помощью pip .

Как протестировать и развернуть группы обеспечения доступности баз данных Airflow в Cloud Composer

Apache Airflow - это программное обеспечение с открытым исходным кодом, которое позволяет разработчикам создавать конвейеры данных путем написания скриптов Python.Эти сценарии, называемые направленными ациклическими графами или DAG, сообщают механизму Airflow список задач, которые нужно выполнить, порядок, в котором они должны выполняться, и расписание того, как часто они должны запускаться. Cloud Composer - это управляемый сервис Airflow от Google Cloud Platform (GCP), работающий на Kubernetes.

В этой статье рассказывается, как интегрировать Cloud Build для автоматического тестирования и развертывания конвейеров данных Airflow в Composer.

  1. Определение DAG
  2. Тестирование DAG
  3. Развертывание DAG в Composer
  4. Использование Cloud Build для автоматизации процесса тестирования и развертывания

1.Определение DAG

DAG, который мы будем развертывать, использует PostgresToGoogleCloudStorageOperator . Он применяет SQL к исходному набору данных, хранящемуся под именем таблицы ссуды_данные. В нашем примере ниже оператор передает весь набор данных в облачное хранилище вместе с добавлением вычисляемого поля.

 DESTINATION_BUCKET = 'sc-flow-dev-data'
DESTINATION_DIRECTORY = "перенесено"

dag_params = {
   'dag_id': 'PostgresToCloudStorageExample',
   'start_date': datetime (2020, 7, 7),
   'schedule_interval': timedelta (дни = 1),
}

с DAG (** dag_params) как dag:
   move_results = PostgresToGoogleCloudStorageOperator (task_id = "move_results",
       ведро = DESTINATION_BUCKET,
       filename = DESTINATION_DIRECTORY + "/ {{execution_date}}" + "/ {}.json ",
       sql = '' 'SELECT *, due_date :: date - эффективная_дата :: дата как вычисление FROM кредит_данные;' '',
       retries = 3,
       postgres_conn_id = "postgres_poc"
   ) 

Источник Github: https://github.com/1904labs/example-airflow/blob/master/dags/loan_data.py

2. Тестирование DAG

Чтобы включить Cloud Build для автоматического тестирования нашего DAG, описанного выше, мы добавим в наш репозиторий единый проверочный тест. Позаимствовано из этой публикации Medium, этот тест будет использовать DagBag для импорта DAG, проверяя, чтобы наша DAG не содержала цикла.

 import unittest
из airflow.models импортировать DagBag

класс TestDagIntegrity (unittest.TestCase):

    LOAD_SECOND_THRESHOLD = 2

    def setUp (сам):
        self.dagbag = DagBag (dag_folder = "dags", include_examples = False)

    def test_import_dags (сам):
        self.assertFalse (
            len (self.dagbag.import_errors),
            'Ошибки импорта DAG. Ошибки: {} '. Format (
                self.dagbag.import_errors
            )
        )

suite = unittest.TestLoader (). loadTestsFromTestCase (TestDagIntegrity)
модульный тест.TextTestRunner (многословие = 2) .run (набор) 

Источник: https://github.com/1904labs/example-airflow/blob/master/test/dag_validation_test.py

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

3. Развертывание группы DAG в composer.

Cloud Composer - это управляемая служба Airflow, работающая в Kubernetes. Каждая конфигурация среды Composer содержит ссылку на каталог облачного хранилища, из которого он будет извлекать DAG.Этот исходный каталог DAG создается при инициализации среды Composer. Мы можем найти точный путь к этому каталогу, просмотрев Configuration в Composer Environments -> Environment Configuration.

Любые DAG-файлы, которые мы помещаем в каталог выше, автоматически выбираются и переносятся в нашу среду Composer.

Наш вышеупомянутый DAG находится в каталоге «/ dags» в локальном репозитории git, и мы можем развернуть его в Composer, используя gsutil, чтобы синхронизировать наш локальный репозиторий с облачным хранилищем.

 gsutil -m rsync -d -r ./dags gs: // us-central1-sc-flow-dev-com-e543240e-bucket / dags 

Gsutil и rsync синхронизируют наш локальный репозиторий DAG с облачным хранилищем. Composer автоматически распознает изменения в репозитории облачного хранилища, добавляя новые или обновленные группы DAG. Вместо развертывания с нашего локального компьютера мы можем взять ту же команду и превратить ее в этап автоматического развертывания с помощью Cloud Build.

4. Использование Cloud Build для автоматизации процесса тестирования и развертывания.

Давайте соберем все вместе, чтобы создать конвейер CI / CD для наших групп Airflow DAG. Используя Cloud Build, мы можем интегрироваться с Github и определить шаги сборки, тестирования и развертывания с помощью файла конфигурации.

Мы начинаем в Cloud Build с настройки триггера:

Чтобы настроить триггер Cloud Build, мы выберем имя, выберем репозиторий для подключения и предоставим фильтр соответствия регулярному выражению, чтобы указать ветвь запуска. В нашем случае каждая ветвь запускает наш конвейер.

После настройки триггера мы определяем наши шаги, добавляя в проект файл `cloudbuild.yaml`.

 # testing1
шаги:
- имя: 'docker.io/library/python:3.7'
  id: Тест
  точка входа: / bin / sh
  аргументы:
  - -c
  - 'pip install pytest && pip install -r requirements.txt && pytest test / * _ test.py'
- имя: gcr.io/google.com/cloudsdktool/cloud-sdk
  id: Развернуть
  точка входа: bash
  аргументы: ['-c', 'если ["$ BRANCH_NAME" == "мастер"]; затем введите "$ BRANCH_NAME" && gsutil -m rsync -d -r./ dags gs: // $ {_COMPOSER_BUCKET} / dags; else echo "Работа над $ BRANCH_NAME"; fi ']
замены:
    _COMPOSER_BUCKET: us-central1-sc-flow-dev-com-e543240e-bucket 

Источник: https://github.com/1904labs/example-airflow/blob/master/cloudbuild.yaml

Приведенный выше файл cloudbuild.yaml содержит этапы тестирования и развертывания. На этапе тестирования используется pip для установки наших зависимостей и pytest для запуска набора тестов. Поскольку наш триггер срабатывает при отправке в любую ветку, тестовый шаг будет выполняться каждый раз.

На этапе развертывания используется gsutil для копирования DAG из репозитория git в исходное место назначения. Наш триггер настроен на срабатывание при нажатии на любую ветку. Однако для некоторых шагов (например, развертывания) мы хотим, чтобы они выполнялись только в определенных ветвях. Cloud Build позволяет указывать ветви только в триггере Cloud Build, а не в файле `.yaml`. Мы хотим (но в настоящее время не поддерживается Cloud Build) указать ветку на этапе развертывания:

 - имя: gcr.io/google.com / cloudsdktool / cloud-sdk id: Развернуть ветку: master 

Два обходных пути для вышеуказанного ограничения:

  1. Для одного репозитория добавьте несколько триггеров в Cloud Build. У вас может быть один триггер для всех ветвей, отдельный триггер для ветки разработки и третий триггер для главной ветки. Каждый триггер ссылается на свой собственный файл конфигурации `.yaml` и содержит пользовательские шаги для этой конкретной ветви.
  2. Используйте условное выражение bash, определяемое именем ветки, чтобы определить, нужно ли завершать шаг.

Куда мы идем отсюда?

Непрерывное развертывание конвейеров данных воздушного потока в Composer позволяет инженерам по обработке данных работать локально, тестировать изменения и обеспечивать, чтобы улучшения и исправления ошибок доходили до производственной среды. Он подчеркивает безопасность, позволяя ограничить производственную среду внесением изменений вручную. Используя ту же концепцию, что и в этом сообщении в блоге, мы можем создать более продвинутый процесс CI / CD, который извлекает конвейеры из нескольких репозиториев git, редактирует DAG, проверяет успешные развертывания, выполняя системные тесты в производственной среде, и включает отдельные разработки Composer и производственная среда.

Другая информация

Мэтью «Тренер» Картер разрабатывает симулятор гильдии; простаивающая видеоигра, в которой сочетаются две вещи, которые он любит - видеоигры

Читать историю полностью »

Поскольку пандемия продолжает отражаться в нашем зеркале заднего вида, мы переходим к подходу, основанному на инновациях, в котором

Читать историю полностью »

Наша программа «Часы инноваций» дает нашим сотрудникам время для работы над своими интересными проектами каждую неделю.В составе

Читать историю полностью »

Grokking Streaming Systems разрабатывалась последние два года, и теперь эта книга - шаг

. Читать историю полностью »

Нерешительность может взять верх над нами во время игры. но Legends of Runeterra Play Around Helper был разработан

Читать историю полностью »

Стимуляция RasGRP1 сложным эфиром форбола регулирует котранспортер хлорида натрия с помощью PKC-независимого пути

Аннотация

Котранспортер хлорида натрия (NCC) является основным путем абсорбции солей в дистальных извитых канальцах (DCT) млекопитающих и является местом действия одного из наиболее эффективных классов антигипертензивных препаратов, тиазидных диуретиков.Мы разработали систему клеточной модели для оценки функции NCC в линии клеток млекопитающих, которая изначально экспрессирует NCC, линию клеток мыши DCT (mDCT). Мы использовали эту систему для изучения комплексной регуляции NCC с помощью сложного эфира форбола (PE) 12- O -тетрадеканоилфорбол-13-ацетат (TPA), аналог диацилглицерина (DAG). Обычно считалось, что PE опосредуют свое действие на транспортеры через активацию PKC. Однако есть как минимум пять других целей DAG / PE. Здесь мы описываем, как одна из этих альтернативных мишеней эффектов DAG / PE, Ras-гуанил-высвобождающий белок 1 (RasGRP1), опосредует PE-индуцированное подавление функции и поверхностную экспрессию NCC.Функциональная оценка NCC с использованием тиазид-чувствительных захватов 22 Na + показала, что TPA полностью подавляет функцию NCC. Эксперименты по биотинилированию продемонстрировали, что этот результат был в первую очередь из-за снижения поверхностной экспрессии NCC. Хотя ингибиторы PKC не влияли на это подавление, ингибиторы MAPK полностью предотвращали эффект TPA. RasGRP1 активирует путь MAPK посредством активации малого G-белка Ras. Подавление гена RasGRP1 предотвращает опосредованное PE подавление активности NCC, активацию изоформы H-Ras Ras и активацию ERK1 / 2 MAPK.Это открытие подтвердило критическую роль RasGRP1 в опосредовании PE-индуцированного подавления активности NCC посредством стимуляции пути MAPK.

Тиазид-чувствительный котранспортер хлорида натрия (NCC) - это путь поглощения соли, расположенный на апикальной мембране дистального извитого канальца (DCT) млекопитающих, который отвечает за реабсорбцию 5–10% отфильтрованной нагрузки натрия (1). ). Теперь, через 50 лет после введения первого тиазидного диуретика, фармакологическое ингибирование NCC тиазидными диуретиками рекомендуется в качестве терапии первой линии при эссенциальной гипертензии (2).Также было показано, что NCC играет роль в генетических нарушениях гипотонии и гипертензии (3–6). Несмотря на важность этого котранспортера при заболеваниях человека, механизмы, лежащие в основе регуляции этого котранспортера в почках млекопитающих, остаются в значительной степени неизвестными. Относительная сложность выделения DCT для исследований микроперфузии и отсутствие линии клеток DCT млекопитающих, которая поддается физиологическим исследованиям, были основными препятствиями для изучения регуляции этого котранспортера.Используя золотой стандарт для оценки активности NCC, тиазид-чувствительного захвата 22 Na + , мы разработали метод исследования регуляции этого котранспортера в линии клеток млекопитающих, которая экспрессирует его в естественных условиях.

Эта система позволила нам оценить комплексную регуляцию NCC с помощью сложных эфиров форбола (PE), функциональных аналогов диацилглицерина (DAG). В течение многих лет считалось, что DAG и PE опосредуют свои эффекты строго через стимуляцию PKC.Классический путь G-белкового рецептора (GPCR), стимулирующий фосфолипазу C (PLC), приводящий к высвобождению DAG и стимуляции PKC, был принятым путем для DAG-зависимой регуляции. Однако за последние несколько лет стало очевидно, что PE (и DAG) могут связывать и активировать по крайней мере пять других семейств мишеней DAG, таких как Munc 13s, киназы DAG, химерины, протеинкиназы D (PKD) и Ras. гуаниловые нуклеотид-высвобождающие белки (RasGRP) (7). Все эти семейства белков, а также PKC, как было показано, связывают DAG / PE через структурно подобный DAG-связывающий домен, домен C1 (7).Однако в литературе по физиологии влияние этих других мишеней DAG / PE в значительной степени недооценивается. Фактически, насколько нам известно, не было ни одного исследования, в котором изучались бы, опосредованы ли эффекты DAG / PE на транспортеры или каналы другими мишенями, кроме PKC или PKD (которые первоначально назывались PKCμ). Эффект и влияние этих других партнеров по связыванию были дополнительно замаскированы использованием старых, неспецифических ингибиторов PKC, таких как Calphostin C (CalC), который ингибирует всех партнеров связывания DAG.Учитывая большое количество литературы по физиологии транспорта, в которой эффекты DAG / PE приписываются PKC, последствия этих открытий могут потребовать от нас пересмотра всей исторической литературы по физиологии регуляции PKC каналов и транспортеров. Здесь мы описываем, что RasGRP1, а не PKC, является мишенью DAG / PE, которая опосредует подавление NCC.

Результаты

клетки mDCT изначально проявляют активность NCC.

Чтобы оценить влияние стимуляции DAG / PE на активность NCC, в наших экспериментах мы использовали клетки DCT [mDCT, подарок Питера Фридмана (Университет Питтсбурга, Питтсбург, Пенсильвания)].Эти клетки демонстрируют транспортные характеристики, соответствующие клеткам из второй части DCT мыши и человека, включая экспрессию белка NCC, чувствительное к амилориду поглощение натрия и чувствительное к тиазидам поглощение натрия (8, 9). Однако протоколы захвата 22 Na + , использованные в этих исследованиях, включали определение поглощения радиоактивных индикаторов, когда клетки мДСТ находились в суспензии (9). Чтобы устранить любые артефакты из-за воздействия трипсина и более точно имитировать физиологические условия, мы разработали протокол для измерения активности NCC клеток мДСТ, выращенных в монослое.Используя этот протокол, клетки mDCT продемонстрировали значительное поглощение 22 Na + , чувствительное к тиазидам, что определяется разницей между поглощением 22 Na + клеток mDCT, подвергнутых воздействию сред, не содержащих тиазидов и содержащих тиазиды. Чтобы убедиться, что поглощение этого тиазид-чувствительного радиоактивного индикатора представляет активность NCC, аналогичные исследования были проведены с использованием не содержащих хлоридов и содержащих хлорид сред для поглощения и показали значительное хлоридзависимое поглощение 22 Na + , которое можно было ингибировать добавлением возрастающих концентраций тиазида (рис.1 А ). Этот эффект был значительным при таких низких концентрациях метолазона, как 1 × 10 -6 М. Точно так же чувствительное к тиазиду поглощение зависело от присутствия хлорида в среде для поглощения (рис. 1). В ). Кроме того, добавление амилорида, бензамила и буметанида для ингибирования захвата натрия эпителиальным натриевым каналом (ENaC), обменником Na + / Ca + (NCX1) и Na + K + 2Cl - Котранспортер (NKCC1), соответственно, существенно не изменял хлор-зависимое поглощение радиоактивного индикатора натрия (данные не показаны).Эти исследования показывают, что клетки mDCT демонстрируют поглощение 22 Na + , которое является как тиазид-чувствительным, так и хлорид-зависимым, что является отличительным признаком активности NCC. Поскольку эта активность присуща клеткам mDCT, эти клетки предоставили возможность изучить эффект DAG / PE в системе с внутренней функцией NCC и регуляторными механизмами.

Инжир.1.

Хлорид-зависимый и тиазид-чувствительный 22 Na + Поглощение мДСТ клетками. ( A ) клетки mDCT предварительно инкубировали в среде, не содержащей хлоридов, а затем инкубировали в течение 20 мин либо в среде, не содержащей хлора, либо в содержащей хлорид среде для поглощения и увеличивающихся концентрациях метолазона ( n = 8). *, P <0,01 по сравнению с носителем. ( B ) Клетки mDCT, предварительно инкубированные в среде, не содержащей хлора, инкубировали в среде, не содержащей хлоридов (без Cl) или содержащей хлорид (с Cl), и либо в носителе, либо в 1 мМ метолазоне.Поглощение, чувствительное к тиазидам, рассчитывали как разницу в поглощении радиоактивных индикаторов между группами, содержащими метолазон, и группами, не содержащими метолазон ( n = 8). *, P <0,01 по сравнению с группой, содержащей хлорид.

12-

O -тетрадеканоилфорбол-13-ацетат (TPA) Уменьшает функцию NCC.

Первоначальные исследования по оценке влияния DAG / PE на функцию NCC были выполнены с использованием системы экспрессии ооцитов Xenopus laevis . 22 захвата Na + , проведенного на ооцитах, экспрессирующих NCC, показали снижение активности NCC при обработке PE TPA по сравнению с носителем (рис. А ). Чтобы оценить влияние TPA на нашу клеточную систему млекопитающих, было проведено 22 захвата Na + клетками mDCT в присутствии форсколина (активатора PKA), TPA или функционально неактивного сложного эфира форбола 4-α-форбола 12, 13-дидеканоат (4α-PDD). Добавление 100 нМ TPA в течение 15 минут устраняет поглощение, чувствительное к тиазидам, снижая поглощение до статистически не отличного от нуля для TPA по сравнению с 43.4 ± 8,68 нмоль / мг для носителя ( P <0,01 по ANOVA) (рис. 2 В ). Обработка клеток 4α-PDD или форсколином существенно не влияла на функцию NCC по сравнению с контролем. Эти данные указывают на то, что PE действуют как мощные супрессоры функции NCC.

Рис. 2.

Ингибирование активности NCC TPA.( A ) 22 Na + поглощение ооцитов X. laevis , инъецированных либо водой (H 2 O), либо кРНК для NCC крысы (NCC крысы) и обработанных 100 мкМ метолазона (M), 1 мкМ TPA (T) или носитель DMSO (C). Данные по поглощениям, выполненным с использованием среды поглощения с хлоридом (NC), включены в качестве отрицательного контроля ( n = 38). *, P <0,01, по сравнению с контрольной рНКР. ( B ) 22 Na + Поглощение клеток mDCT, обработанных 150 нМ форсколином (FSK), 100 нМ TPA, 100 нМ 4α-PDD (PDD) или контролем (носитель DMSO, C) перед помещением в среда усвоения ( n = 12).*, P <0,01 по сравнению с ДМСО. ( C ) Поверхностные белки клеток mDCT, обработанных как в B , были биотинилированы. Показаны иммуноблоттинг и денситометрия для общего лизатного белка NCC и поверхностного биотинилированного NCC в каждой группе ( n = 10). Полоса NCC появляется при 110 кДа. *, P <0,001, по сравнению с контрольной группой и группами PDD.

TPA снижает экспрессию поверхности NCC.

Активность NCC может регулироваться изменением либо его поверхностной экспрессии, либо внутренней функции котранспортера.Чтобы изучить роль первого в нашей клеточной системе, эксперименты по биотинилированию клеточной поверхности были выполнены на клетках mDCT, инкубированных с носителем, TPA или 4α-PDD. Количество общего белка NCC в клеточном лизате было одинаковым в каждой группе (рис. С ). TPA значительно снижает экспрессию NCC на поверхности клеток mDCT, тогда как 4α-PDD не оказывает значительного влияния на экспрессию NCC на поверхности. Это уменьшение поверхностной экспрессии на ≈68% предполагает, что большая часть снижения активности, наблюдаемого при воздействии ТРА, опосредована изменениями в поверхностной экспрессии.

Влияние TPA на активность NCC опосредуется RasGRP1.

Для определения пути, посредством которого TPA оказывает свое влияние на NCC, было выполнено 22 захвата Na + с TPA в присутствии различных ингибиторов. Ни один из ингибиторов сам по себе не влиял на функцию NCC (данные не показаны). Лечение бисиндолилмалеимидом (BIM), ингибитором классических и новых изоформ PKC, не устраняет влияние TPA на активность NCC ни в клетках mDCT, ни в клетках X.laevis ооцитов [рис. 3 A и вспомогательная информация (SI) Рис. 8]. Точно так же Gö6976, классический ингибитор PKC, который также блокирует действие PKD, не изменил влияние TPA на активность NCC. Взятые вместе, эти данные предполагают, что эффект TPA был не из-за стимуляции изоформы PKC или PKD и что TPA действовал путем связывания с другим медиатором, который разделял C1-связывающий домен. Поэтому клетки обрабатывали CalC, который блокирует домен C1.Как и ожидалось, добавление CalC предотвращало любое снижение активности NCC в ответ на TPA (42,2 ± 5,7 нмоль / мг для CalC с TPA по сравнению с отсутствием отличий от нуля для одного TPA) (рис. А ).

Рис 3.

Активность и поверхностная экспрессия NCC под воздействием ТРА и различных ингибиторов. ( A ) 22 Na + Поглощение мДСТ клетками, обработанными 100 нМ TPA (T) или 250 нМ BIM (B + T), 200 нМ CalC (C + T), 500 нМ Gö6976 (G + T), 10 нМ U0126 (U + T), 10 нМ SB203408 (S + T) или контроль (носитель ДМСО, C) перед помещением в среду для поглощения ( n = 8).*, P <0,005, по сравнению с одним TPA. ( B ) Клетки, обработанные 100 нМ TPA (T) и 10 нМ U0126 (U), биотинилировали и проводили иммуноблоттинг на NCC. Полоса NCC появляется при 110 кДа. *, P <0,05, по сравнению с контролем.

Семейство белков RasGRP активируется DAG доменом C1 и активирует небольшой G-белок Ras, удаляя GDP из неактивного RasGDP и позволяя GTP связываться с Ras, образуя активный RasGTP.RasGTP в конечном итоге приводит к активации MAPK, запускающей Raf-1, MEK1 / 2 (MAP и ERK киназа 1/2) и, наконец, активация ERK1 / 2 MAPK (регулируемые внеклеточными сигналами киназы 1 и 2). Учитывая этот сигнальный путь и тот факт, что RasGRP1 экспрессируется в дистальных канальцах почек млекопитающих (10), мы предположили, что RasGRP1 был партнером по связыванию TPA. Чтобы проверить эту гипотезу, мы заблокировали нижестоящие мишени активации Ras и обнаружили, что обработка как TPA, так и 1,4-диамино-2,3-дициано-1,4-бис [2-аминофенилтио] бутадиена (U0126), очень селективный ингибитор MEK1 / 2, сводящий на нет действие ТРА (62.9 ± 6,3 нмоль / мг для U0126 и TPA по сравнению со статистически значимым отличием от нуля для одного TPA) (рис. А ). Этот эффект был специфическим для инактивации MEK1 / 2, поскольку SB203580, ингибитор киназы p38 MAPK, не оказывал значительного влияния на TPA-индуцированное подавление активности NCC. Зависимость MEK1 / 2 от эффекта TPA также наблюдалась при поверхностной экспрессии NCC, поскольку эксперименты по биотинилированию показали, что добавление U0126 отменяет снижение поверхностной экспрессии, наблюдаемое при использовании только TPA (рис.3 В ).

Поскольку блокада MEK1 / 2 и, следовательно, ERK1 / 2 MAPK, предотвращает эффект DAG / PE, мы непосредственно исследовали роль RasGRP1 в этом процессе. Как и ожидалось, RasGRP1 четко экспрессируется в клетках mDCT, что видно с помощью иммунопреципитации и последующего вестерн-блоттинга, а также с помощью RT-PCR мРНК, собранной из клеток mDCT (SI фиг. 9).

Чтобы оценить роль RasGRP1 в эффекте TPA на NCC, клетки mDCT трансфицировали siRNA для RasGRP1.Молчание генов было подтверждено вестерн-блоттингом и продемонстрировало снижение экспрессии на 66% по сравнению с контролем (фиг. 4). А ). 22 захвата Na + проводили в присутствии ТРА параллельно. Клетки, трансфицированные нецелевой миРНК, не отличались от контроля, не получавшего миРНК, в отношении средней активности NCC и ответа на ТРА (рис. 4). В ). Подавление гена для RasGRP1 полностью предотвращало влияние TPA на поглощение натрия, потому что эти клетки демонстрировали аналогичные уровни активности NCC в присутствии или в отсутствие TPA (43.7 ± 1,7 против 46,8 ± 3,6 нмоль / мг) (рис. В ). Активность NCC клеток, трансфицированных siRNA для RasGRP1, при обработке TPA была значительно выше, чем аналогичным образом обработанные контрольные и нецелевые группы (46,8 ± 3,6 нмоль / мг по сравнению со статистически не отличавшейся от нуля для контрольной и нецелевой групп) (рис. В ). Это открытие указывает на то, что эффект DAG / PE опосредуется RasGRP1.

Инжир.4.

Активность NCC после подавления гена RasGRP1. ( A ) клетки mDCT трансфицировали siRNA для RasGRP1 (siRG), нецелевую siRNA (NT) или пустой вектор (C). Клетки лизировали через 48 часов после трансфекции и проводили иммунопреципитацию и иммуноблоттинг с антителом против RasGRP1 ( n = 5 для сопутствующей денситометрии). *, P <0,01 по сравнению с C и NT. ( B ) 22 Na + . Эксперименты по поглощению проводили на аналогичным образом трансфицированных клетках, обработанных 100 нМ TPA (T) или носителем (DMSO) ( n = 12).*, P <0,05, по сравнению с C + T или NT + T.

ТРА-индуцированная стимуляция RasGRP1 активирует H-Ras.

Чтобы подтвердить это открытие, мы исследовали влияние TPA на сайт действия RasGRP1, Ras. Исследования были проведены с использованием анализа активированного Ras pull-down на лизатах клеток мДСТ, обработанных либо ненаправленной siRNA, либо siRNA, специфичной для RasGRP1. Было обнаружено, что TPA увеличивает общий Ras-GTP на 16,0 ± 1,5% ( P <0.05) (Рис.5 А ). Общий RasGTP в клетках mDCT с молчанием RasGRP1 был значительно снижен на 27,3 ± 6,9% по сравнению с контролем ( P <0,05). Примечательно, что существует три основных изоформы Ras (H-Ras, K-Ras и N-Ras), и описана предпочтительная активация определенных изоформ различными эффекторами (11). Учитывая несоответствие между величиной увеличения уровней RasGTP и резким снижением активности NCC, мы поэтому исследовали паттерны активации Ras каждой из этих изоформ Ras.Увеличение RasGTP с TPA было полностью из-за увеличения H-Ras-GTP, поскольку анализы активированного Ras pull-down, проведенные с использованием изотип-специфичных антител, показали увеличение H-Ras-GTP на 32,7 ± 4,5% ( P <0,01). при воздействии ТПА (рис. 5 В ). Подавление RasGRP1 с помощью siRNA значительно снижает уровни H-Ras-GTP на 90,5 ± 2,1% по сравнению с контролем ( P <0,01) (рис. В ). Не наблюдалось значительного изменения уровней H-Ras-GTP в RasGRP1-молчащих клетках mDCT, обработанных TPA.N-Ras и K-Ras не показали изменений в активации с помощью TPA или сайленсинга генов (рис. 5). В ). Эти эксперименты демонстрируют, что стимуляция RasGRP1 TPA ​​в этой системе специфически и значительно активирует H-Ras.

Рис. 5.

Активация Ras в клетках мДСТ после подавления гена RasGRP1.Клетки mDCT, трансфицированные siRNA для RasGRP1 (siRG) или не нацеливающей siRNA (NT), предварительно инкубировали в среде, не содержащей хлоридов, а затем обрабатывали в течение дополнительных 15 мин 100 нМ TPA или носителем (DMSO). Затем клетки лизировали и проводили анализ RasGTP с последующим иммуноблоттингом на Ras (21 кДа). Показаны репрезентативные иммуноблоты и денситометрии. ( A ) Ras (все изоформы) ( n = 4). * и #, P <0,01 по сравнению с NT. ( B ) H-, K- и N-Ras ( n = 4).*, P <0,01 по сравнению с NT.

RasGRP1 опосредует активацию ERK1 / 2 с помощью TPA.

Чтобы оценить влияние TPA-опосредованной стимуляции RasGRP1 на активацию ERK1 / 2 MAPK, мы исследовали уровни активированной ERK1 / 2 с использованием антитела, специфичного для активной фосфорилированной ERK1 / 2. Клетки снова обрабатывали либо нецелевой миРНК, либо миРНК, специфичной для RasGRP1, перед лизисом и иммуноблоттингом. Добавление TPA значительно увеличивало фосфорилированный ERK1 / 2 на 209 ± 27% по сравнению с контролем ( P <0.005) (рис.6). Примечательно, что уровни фосфорилирования ERK1 / 2 в клетках mDCT, обработанных siRNA для RasGRP1, существенно не отличались от контроля, предполагая, что базальные уровни фосфорилирования ERK1 / 2 поддерживаются другими механизмами. Добавление TPA в эти клетки с нокдауном RasGRP1 не оказало значительного влияния на уровни фосфорилированного ERK1 / 2 по сравнению с контролем. Взятые вместе, эти данные показывают, что PE-индуцированная активация RasGRP1 / H-Ras ответственна за повышенную активацию ERK1 / 2 MAPK, которая опосредует снижение экспрессии NCC на поверхности клеток и снижение функции NCC.

Рис. 6.

Фосфорилирование ERK в клетках mDCT после подавления гена RasGRP1. Клетки mDCT, трансфицированные siRNA для RasGRP1 (siRG) или нецелевой siRNA (NT), обрабатывали в течение 15 мин 100 нМ TPA или носителем (DMSO). Затем клетки лизировали и проводили иммуноблоттинг на фосфорилированную или общую ERK1 / 2. ERK1 появляется при 44 кДа, а ERK2 появляется при 42 кДа ( n = 4).*, P <0,01 по сравнению с NT.

Обсуждение

Подавляющее большинство работ по регуляции NCC было выполнено в гетерологичных системах экспрессии. Используя систему экспрессии ооцитов X. laevis , мы обнаружили, что PE являются мощными супрессорами активности NCC (рис. 2). А ). Однако в исследовании (12), посвященном регуляции NCC с использованием клеток происхождения собирательного протока, трансфицированных человеческим NCC, сообщается, что PE не влияют на поглощение тиазид-чувствительного 22 Na + .Мы создали метод для надежного измерения функции NCC в физиологически релевантной клеточной системе, которая изначально экспрессирует NCC. Исследование сложной регуляции NCC с помощью DAG / PE с использованием этой системы продемонстрировало подавление NCC и выявило новый регуляторный путь физиологических эффектов DAG / PE на транспортные белки. Учитывая хорошо описанную гетерогенность гормонального ответа, эффекторов и вторичных мессенджеров между различными сегментами нефрона (13), гетерологичная экспрессия NCC в клетках происхождения собирательного протока могла сыграть роль в противоречивых результатах.

Хотя DAG исторически был связан с активацией PKC в качестве единственного медиатора его эффектов, существует по крайней мере пять других семейств белков (включая RasGRP), которые связываются и активируются DAG и PE (7, 14). Используя специфические ингибиторы PKC и PKD, мы смогли продемонстрировать, что эти мишени DAG не участвуют в подавлении NCC с помощью PE. Поскольку один из членов семейства белков RasGRP (RasGRP1) экспрессируется в дистальных канальцах почек млекопитающих (10), мы исследовали, опосредует ли он эффект PE.Семейство малых G-белков RasGRP также включает RasGRP2, -3 и -4. RasGRP1 и -3 представляют собой высокоаффинные связывающие DAG (15, 16), которые участвуют в контроле клеточной дифференцировки и пролиферации, особенно в T- и B-клетках (17, 18). Они также, по-видимому, играют ключевую регуляторную роль в кератиноцитах и ​​нейроэндокринных клетках (19, 20). Путь активации DAG / PE RasGRP сложен и специфичен для клетки. В некоторых клетках активация RasGRP с помощью PE, по-видимому, опосредуется через PKC (21, 22).В других клетках DAG / PE-стимуляция RasGRP не зависит от PKC (19, 20). После активации DAG, RasGRP1 активирует малый G-белок Ras, вызывая высвобождение GDP из Ras. Затем Ras может свободно связываться и активироваться GTP (рис. 7). Существует три изоформы Ras (H-Ras, K-Ras и N-Ras). Ras активирует Raf, первую киназу в пути ERK1 / 2 MAPK. Затем Raf фосфорилирует и активирует MEK1 / 2, который фосфорилирует и активирует ERK1 / 2. Этот каскад киназ Ras / Raf / MEK / ERK хорошо охарактеризован и играет роль во многих клеточных процессах.Присутствие RasGRP1 в дистальных канальцах млекопитающих и клетках mDCT, а также полное предотвращение PE супрессии NCC с помощью ERK1 / 2 MAPK блокады (рис. 3) предполагают, что RasGRP1 может быть медиатором эффекта PE. Специфичность пути ERK1 / 2 MAPK для ингибирования NCC подчеркивается полным отсутствием действия ингибиторов PKC, PKD и p38 MAPK (рис. 3). Единственным другим ингибитором, который блокировал этот эффект, был CalC, который подавляет все мишени DAG. Подтверждение критической роли RasGRP1 было продемонстрировано устранением подавления PE NCC с помощью нокдауна RasGRP1.

Рис. 7.

Предлагаемый механизм действия DAG / PE на NCC в клетках mDCT. GPCR, рецептор, связанный с G-белком; L, лиганд; PLC, фосфолипаза C; ДАГ, диацилглицерин; RasGRP1, Ras-высвобождающий гуанил белок 1; Киназа 1/2 MEK, MAP и ERK; ERK, регулируемые внеклеточными сигналами киназы 1 и 2.

Мы также исследовали эффекты на непосредственный нижестоящий эффектор RasGRP1, Ras.Снижение активации Ras соответствовало нокдауну RasGRP1 (фиг. 5). Однако, поскольку степень нокдауна RasGRP1 оказывается выше, чем снижение активации Ras, это открытие может отражать снижение активации конкретной изоформы или изоформ Ras, тогда как состояние активации других изоформ Ras не изменяется. Есть некоторые свидетельства того, что изоформы Ras могут предпочтительно активироваться при определенных условиях. В Т-клетках Jurkat слабая стимуляция преимущественно активирует N-Ras, тогда как более интенсивная стимуляция активирует как K-Ras, так и N-Ras (клетки Jurkat эндогенно экспрессируют небольшое количество H-Ras) (11, 23).Этот эффект был приписан дифференциальной клеточной локализации, при этом N-Ras и H-Ras, способные активироваться в Golgi и K-Ras, активируются только на плазматической мембране (23, 24). Однако другие исследования с использованием других репортерных систем и условий не смогли найти эту предпочтительную локализацию (25, 26). Учитывая гетерогенность экспрессии и стимуляции, специфичных для изоформ Ras, мы проверили, активирует ли RasGRP1 преимущественно определенные изоформы Ras. Это открытие показало, что PE, по-видимому, предпочтительно активируют H-Ras, и что базальная и стимулированная PE активация H-Ras зависит от RasGRP1 (рис.5). Другие изоформы Ras не активируются PE и не зависят от RasGRP1.

Изучение эффекта сайленсинга RasGRP1 на активацию ERK1 / 2 дает дополнительное понимание этого процесса. Ожидаемое значительное увеличение активации ERK1 / 2 при воздействии PE присутствует, и подавление экспрессии RasGRP1 явно предотвращает эту активацию (фиг. 6). Однако существует базальный уровень активации ERK1 / 2, на который не влияет подавление экспрессии RasGRP1.Этот независимый от RasGRP1 базальный уровень активации ERK1 / 2 хорошо коррелирует с независимой от RasGRP1 базальной активацией K-Ras и N-Ras. Таким образом, активация N-Ras и K-Ras посредством пути не-PE, не-RasGRP1 может потенциально опосредовать базальную активацию ERK1 / 2. Существует ряд белков, которые не являются DAG / PE-стимулированными белками, которые активируют Ras. Один из этих белков может опосредовать базальную активацию ERK через N-Ras и K-Ras, тогда как RasGRP1 опосредует стимулированную PE активацию H-Ras и ERK, которая регулирует поверхностную экспрессию NCC.

Подавление функции NCC, опосредованной TPA, по-видимому, в первую очередь из-за снижения поверхностной экспрессии (рис. 2 и 3), которая зависит от MAPK. Острые изменения поверхностной экспрессии являются хорошо установленным регуляторным механизмом для транспортных белков. В настоящее время единственным установленным механизмом регуляции поверхностной экспрессии NCC является ингибирование WNK4 прямого транспорта NCC (27, 28). Этот процесс не включает динамин-зависимый эндоцитоз и может включать изменения в деградации лизосом до встраивания плазматической мембраны.Однако существует множество примеров регуляции транспортных белков посредством динамин-зависимого эндоцитоза. MAPKs также, как было показано, опосредуют изменения в поверхностной экспрессии белков транспорта ионов (29-31). Путь RasGRP1 / MAPK может регулировать эндоцитотический путь в NCC, обеспечивая путь для регуляции поверхностной экспрессии NCC, отличный от эффектов WNK4 на NCC. Необходимо дальнейшее выяснение механизмов, обеспечивающих эти изменения в поверхностной экспрессии.

Хотя регуляторное влияние DAG / PE на NCC было продемонстрировано здесь в двух системах, вопрос о том, что запускает высвобождение DAG в клетках дистальных канальцев млекопитающих, остается без ответа.Хорошо известно, что некоторые гетеротримерные G-белки активируют фосфолипазу C, которая затем высвобождает DAG и инозитол (1,4,5) -трифосфат из клеточной мембраны (рис. 7). Однако идентичность гормонального или физиологического стимула, который активирует GPCR и регулирует NCC, еще предстоит идентифицировать. Есть некоторые свидетельства того, что альдостерон регулирует NCC (32, 33). Однако рецептор минералокортикоидов не является GPCR. Ангиотензин II представляет собой GPCR, и есть некоторые свидетельства того, что ангиотензин II увеличивает поверхностную экспрессию NCC (34).Однако изменения функции NCC под действием ангиотензина II не были продемонстрированы, а увеличение поверхностной экспрессии является эффектом, противоположным тому, который мы наблюдаем при активации RasGRP1. Есть множество других GPCR, присутствующих в DCT, и в настоящее время нет окончательных исследований, связывающих эти рецепторы с функцией NCC. Дальнейшие исследования необходимы, чтобы определить эти вышестоящие регуляторы этого важного котранспортера.

Мы создали надежную воспроизводимую систему для изучения регуляции функции NCC в клетках DCT млекопитающих и использовали эту систему для корреляции функции с поверхностной экспрессией.Эта система позволила нам изучить регуляцию NCC с помощью DAG / PE, обнаружив, что регулятор транспортных белков, RasGRP1, опосредует эффекты DAG / PE независимым от PKC образом. Эти данные предполагают, что нам, возможно, потребуется пересмотреть эффекты на транспортные белки, которые ранее приписывались PKC. Кроме того, мы показали, что PEs, действуя через RasGRP1, по-видимому, предпочтительно активируют изоформу H-Ras Ras в клетках mDCT, что приводит к активации ERK1 / 2 и подавлению функции NCC и поверхностной экспрессии (рис.7).

Материалы и методы

Оценка функции NCC в клетках mDCT.

клеток мДСТ, выращенных до 90% слияния в 12-луночных планшетах, инкубировали при 37 ° C в изотонической среде, не содержащей Cl - [130 мМ глюконат натрия, 2 мМ / кг глюконата, 1,0 мМ глюконат кальция, 1 мМ / мг глюконата, 5 мМ HEPES / Трис (pH 7,4), 1 мМ амилорид, 0,1 мМ буметанид) в течение 30 мин для увеличения движущей силы поглощения радиоактивных индикаторов. В течение этого периода времени клетки обрабатывали различными исследуемыми агентами или носителем (ДМСО).Затем среду заменили на среду, содержащую 22 Na + [140 мМ NaCl, 1 мМ CaCl, 1 мМ MgCl, 5 мМ HEPES / Tris (pH 7,4), 1 мМ амилорид, 0,1 мМ буметанид, 0,1 мМ бензамила, 1 мМ уабаина и 1 мкКи / мл 22 Na + Cl -] с 0,1 мМ метолазоном или без него и инкубировали в течение 20 мин. Затем поглощение индикатора останавливали промыванием ледяным PBS. Затем клетки лизировали 0,1% (масс. / Об.) SDS. Радиоактивность измеряли с помощью жидкостной сцинтилляции и определяли концентрации белка в лизатах [анализ белка с бицинхониновой кислотой (BCA); Пирс].Поглощения были нормализованы до нмоль / мг. Поглощение, чувствительное к тиазидам, определялось разницей в поглощении с тиазидом и без него.

X. laevis Подготовка ооцитов и оценка функции NCC.

Подготовка и оценка функции NCC ооцитов X. laevis подробно описаны в SI Материалы и методы .

Биотинилирование клеточной поверхности.

клеток mDCT инкубировали в среде, не содержащей Cl -, в течение 15 мин.Затем к среде добавляли 100 мкМ TPA, 4αPDD или DMSO (носитель) на 15 мин. Среду, не содержащую Cl -, удаляли и добавляли среду для поглощения (без 22 Na + ) на 30 мин. Клетки промывали PBS, и белки клеточной поверхности метили, собирали и выделяли с использованием набора для точечного выделения белков клеточной поверхности (Pierce). Концентрации белка определяли с использованием набора для анализа белка BCA. Для анализа SDS / PAGE загружали 80 мкг общего белка из клеточных лизатов вместе с 30 мкл биотинилированного белка из контрольной группы ДМСО и пропорциональным объемом из остальных групп биотинилированного белка.

Активированный анализ Ras.

клеток мДСТ, выросших до 80% слияния после трансфекции миРНК, инкубировали в течение 30 мин в среде, не содержащей Cl -. В течение этого периода времени клетки обрабатывали 100 нМ ТРА в течение 15 мин. Затем клетки лизировали и подвергали аффинной очистке для активированного Ras с использованием набора для активации EZ-Detect Ras Activation Kit (Pierce). Затем был проведен иммуноблоттинг с использованием антител к Ras и его основным изоформам.

Анализ фосфорилирования ERK1 / 2.

клеток мДСТ, выросших до 80% слияния после трансфекции миРНК, инкубировали в течение 30 мин в среде, не содержащей Cl -. В течение этого периода времени клетки обрабатывали 100 нМ ТРА в течение 15 мин. Затем клетки лизировали в 1 мл лизиса. Лизаты гомогенизировали обработкой ультразвуком на льду. Образцы были подвергнуты иммуноблоттингу на фосфорилированный ERK1 / 2 и общий ERK1 / 2.

Другие методы.

Предыдущие методы также использовали типичное использование клеточных культур, иммунопреципитации, иммуноблоттинга, трансфекции siRNA и RT-PCR.Для получения полной информации об этих методах см. SI Материалы и методы .

Благодарности

Благодарим Юджина Чанга за советы и обсуждения. Эта работа была поддержана грантами Национального института здравоохранения K08 DK070668 (для RSH), T32 DK007510–19 (для BK), DK38510 (для MWM), DK42086 (для BK, MWM и RSH) и DK64635 (для GG) и грантом Leducq Foundation (SCH и G.ГРАММ.).

Сноски

  • § Кому может быть адресована корреспонденция. Электронная почта: steven.hebert {at} yale.edu или rhoover {at} Medicine.bsd.uchicago.edu
  • Вклад авторов: B.K., L.M.J., L.L.C., N.V., M.W.M., S.C.H., G.G. и R.S.H. спланированное исследование; B.K., L.M.J., L.L.C., N.V., M.W.M. и R.S.H. проведенное исследование; B.K., L.M.J., L.L.C., N.V., M.W.M., S.C.H., G.Г., Р.С.Х. проанализированные данные; и B.K., L.M.J., L.L.C., S.C.H. и R.S.H. написал газету.

  • Авторы заявляют об отсутствии конфликта интересов.

  • Эта статья содержит вспомогательную информацию на сайте www.pnas.org/cgi/content/full/0709506104/DC1.

  • © 2007 Национальная академия наук США

Группы доступности баз данных Exchange Server 2016

Для Exchange Server 2016 строительным блоком высокой доступности является группа доступности базы данных (DAG).Группы обеспечения доступности баз данных для Exchange 2016 очень похожи на группы обеспечения доступности баз данных для Exchange 2013, однако есть некоторые новые функции и способы поведения, о которых следует знать, которые я продемонстрирую в этой серии статей. Я также расскажу:

Давайте начнем с обзора концепций группы доступности базы данных.

Концепции группы доступности базы данных Exchange Server 2016

Группы доступности баз данных могут содержать до 16 серверов почтовых ящиков Exchange 2016, на каждом из которых размещаются копии одной или нескольких баз данных, которые реплицируются с копиями баз данных на других членах той же группы доступности базы данных.

Когда группа DAG создается впервые, в ней нет участников. Для обеспечения высокой доступности группы DAG требуется минимум два члена. Группы обеспечения доступности баз данных с двумя участниками достаточно распространены в качестве простого развертывания HA для Exchange, например, на схеме ниже два сервера Exchange 2016 и файловый ресурс-свидетель образуют группу доступности базы данных.

Группы доступности базы данных и кворум

Группы обеспечения доступности баз данных

Exchange Server используют базовый отказоустойчивый кластер Windows. Вам не нужно создавать, настраивать или даже прикасаться к отказоустойчивому кластеру Windows с помощью инструментов управления кластером, за исключением конкретных сценариев обслуживания, которые четко задокументированы.Когда вы добавляете участников в группу обеспечения доступности баз данных, компоненты отказоустойчивой кластеризации устанавливаются и настраиваются автоматически.

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

Существует две модели кворума:

  • Большинство узлов - когда группа DAG имеет нечетное количество участников, файловый ресурс-свидетель не требуется для процесса голосования кворума, поскольку члены группы DAG могут сами определять «большинство».Например, если один член группы DAG выходит из строя, 2/3 члена группы DAG все еще находятся в сети (большинство), а группа DAG может оставаться в сети. Если два члена группы DAG выходят из строя, 1/3 членов группы DAG все еще находятся в сети, что может привести к потере кворума и отключению группы DAG.
  • Большинство узлов и общих файловых ресурсов - когда группа DAG имеет четное количество участников, свидетель общего доступа к файлам включается в процесс голосования кворума, чтобы гарантировать определение «большинства». Например, в группе DAG, состоящей из двух участников, если один из участников выходит из строя, половина участников все еще находится в сети (а не большинство), но можно ожидать, что группа DAG сможет противостоять отказу одного узла.Свидетель общего доступа к файлам используется как решающий фактор, что означает, что 2/3 «голосов» по-прежнему доступны, и группа DAG может оставаться в сети. Точно так же с группой DAG из четырех участников, если два участника потерпели неудачу, с файловым ресурсом-свидетелем все еще остается 3/5 «голосов» в сети, поэтому группа DAG может оставаться в сети.

Все группы доступности базы данных настроены с файловым ресурсом-свидетелем, независимо от того, используется ли он для голосования или заметок. Модель кворума автоматически корректируется группой DAG по мере добавления или удаления участников.

Выше я писал, что в некоторых сценариях сбоя группа DAG может потерять кворум и перейти в автономный режим.В некоторых случаях группа обеспечения доступности баз данных может поддерживать отключение большинства узлов при последовательных сбоях. Это происходит благодаря функции кластеров Windows Server 2012, называемой динамическим кворумом.

Копии баз данных и непрерывная репликация

Каждый член группы обеспечения доступности баз данных Exchange 2016 размещает одну или несколько копий базы данных и участвует в процессе непрерывной репликации, чтобы эти копии базы данных обновлялись с учетом изменений. Версия сервера Exchange 2016 определяет, сколько копий базы данных может разместить член группы DAG.Сервер Standard Edition может разместить до 5 копий базы данных, а сервер Enterprise Edition может разместить до 100 копий базы данных.

Члены группы обеспечения доступности баз данных Exchange 2016 могут размещать как активные, так и пассивные копии базы данных, поскольку переключение / отработка отказа происходит на уровне базы данных, а не на уровне сервера. Таким образом, нет понятия «активный сервер» или «пассивный сервер».

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

Добавочное развертывание

Специальная установка Exchange Server 2016 для участников группы DAG не предусмотрена. Сервер почтовых ящиков Exchange 2016 может быть добавлен в DAG или удален из DAG в любое время, не влияя на базы данных и другие службы, размещенные на этом сервере. Пошаговое развертывание позволяет организациям развернуть один сервер сегодня, а затем, при необходимости, масштабировать до DAG позже, без какого-либо воздействия на производственные службы.

Сети группы доступности баз данных

Сеть DAG - это одна или несколько IP-подсетей, к которым напрямую подключены члены DAG. Каждая группа доступности базы данных Exchange 2016 имеет по крайней мере одну сеть DAG, которая используется для клиентского трафика. Группа DAG также может иметь одну или несколько отдельных выделенных сетей для трафика репликации базы данных.

Учитывая скорость современных сетей, обычно рекомендуется использовать только одну сеть DAG, которая проще в управлении и создает более предсказуемый сценарий отказа.

Устойчивость сайта

Группа доступности базы данных Exchange 2016 обеспечивает высокую доступность для Exchange в пределах одного центра обработки данных или сайта Active Directory.

Обновлено: 01.09.2021 — 07:31

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *