産業用モノのインターネット、産業用ビッグデータのサービス領域を支援: タイミング スケジューリングとアプリケーション【34】

12: タイミングスケジューリングの使用

  • 目標:タイミング スケジューリングの使い方をマスターする

  • 埋め込む

    • http://airflow.apache.org/docs/apache-airflow/stable/dag-run.html

      画像-20211005153849026

    • 方法 1: 組み込み

      with DAG(
          dag_id='example_branch_operator',
          default_args=args,
          start_date=days_ago(2),
          schedule_interval="@daily",
          tags=['example', 'example2'],
      ) as dag:
      
    • 方法 2: datetime.timedelta オブジェクト

      timedelta(minutes=1)
      timedelta(hours=3)
      timedelta(days=1)
      
      with DAG(
          dag_id='latest_only',
          schedule_interval=dt.timedelta(hours=4),
          start_date=days_ago(2),
          tags=['example2', 'example3'],
      ) as dag:
      
    • 方法 3: Crontab 式

      • Linux Crontab の使用法と一致

        with DAG(
            dag_id='example_branch_dop_operator_v3',
            schedule_interval='*/1 * * * *',
            start_date=days_ago(2),
            default_args=args,
            tags=['example'],
        ) as dag:
        
        分钟		小时		日			月			周
        00		 00 	 	*			*			*
        05		12			1			*			*
        30		8			*			*			4
        
  • まとめ

    • タイミング スケジューリングの使い方をマスターする

13: エアフロー共通コマンド

  • 目標: AirFlow の一般的なコマンドを理解する

  • 埋め込む

    • 現在のすべての DAG をリストする

      airflow dags list
      
    • DAG を一時停止する

      airflow dags pause dag_name
      
    • DAG を開始する

      airflow dags unpause dag_name
      
    • DAG を削除する

      airflow dags delete dag_name
      
    • DAGを実行する

      airflow dags  trigger dag_name
      
    • DAG のステータスを表示する

      airflow dags  state dag_name
      
    • DAG のすべてのタスクをリストする

      airflow tasks list dag_name
      
  • まとめ

    • AirFlow の一般的なコマンドを理解する

14: メールアラートの使用

  • 目的: AirFlow で電子メール アラートを実装する方法を理解する

  • パス

    • ステップ1: AirFlow設定
    • ステップ2: DAGの構成
  • 埋め込む

    • 原則: 電子メールの自動送信の原則: サードパーティの電子メール サービス

      • 送信者アカウント: 構成ファイルで構成されます

        smtp_user = [email protected]
        # 秘钥id:需要自己在第三方后台生成
        smtp_password = 自己生成的秘钥
        # 端口
        smtp_port = 25
        # 发送邮件的邮箱
        smtp_mail_from = [email protected]
        
      • 受信者アカウント: プログラムで設定

        default_args = {
            'owner': 'airflow',
            'email': ['[email protected]'],
          'email_on_failure': True,
            'email_on_retry': True,
          'retries': 1,
            'retry_delay': timedelta(minutes=1),
        }
        
    • AirFlow配置:airflow.cfg

      # 发送邮件的代理服务器地址及认证:每个公司都不一样
      smtp_host = smtp.163.com
      smtp_starttls = True
      smtp_ssl = False
      # 发送邮件的账号
      smtp_user = [email protected]
      # 秘钥id:需要自己在第三方后台生成
      smtp_password = 自己生成的秘钥
      # 端口
      smtp_port = 25
      # 发送邮件的邮箱
      smtp_mail_from = [email protected]
      # 超时时间
      smtp_timeout = 30
      # 重试次数
      smtp_retry_limit = 5
      
    • クローズエアフロー

      # 统一杀掉airflow的相关服务进程命令
      ps -ef|egrep 'scheduler|flower|worker|airflow-webserver'|grep -v grep|awk '{print $2}'|xargs kill -9
      # 下一次启动之前
      rm -f /root/airflow/airflow-*
      
    • プログラム構成

      default_args = {
              
              
          'email': ['[email protected]'],
          'email_on_failure': True,
          'email_on_retry': True
      }
      
    • エアフローの開始

      airflow webserver -D
      airflow scheduler -D
      airflow celery flower -D
      airflow celery worker -D
      
    • 模擬エラー

      画像-20211005161322100

  • まとめ

    • AirFlow で電子メール アラートを実装する方法を学ぶ

15:ワンストップ製造におけるスケジューリング

  • 目的: ワンストップ製造におけるスケジューリングの実装を理解する

  • 埋め込む

    • ODS レイヤー/DWD レイヤー: タイミング スケジューリング: 毎日 00:05 に実行を開始
    • dws(11)
      • DWSには1時間かかります
      • 午前1時30分から実施
    • dwb(16)
      • dwbには1.5時間かかりました
      • 死刑執行は午前3時に開始される。
    • st(10)
      • 所要時間は1時間です
      • 午前4時30分から実施
    • DM(1)
      • dmには0.5時間かかります
      • 午前5時30分から実施
  • まとめ

    • ワンストップ製造におけるスケジューリングの実装について理解する

16: 復習: Spark コアの概念

画像-20211014110944047

  • 分散コンピューティングとは何ですか?

    • 分散プログラム: MapReduce、Spark、Flink プログラム
      • マルチプロセス: プログラムは複数のプロセスによって実装され、異なるプロセスは異なるマシン上で実行できます。
      • 各プロセスが計算を担当するデータは異なり、データ全体の特定の部分です。
      • MapReduceやSpark APIをベースに自分で開発したプログラム:データ処理のロジック
        • 分割ロジック
          • MapTask プロセス: シャーディング ルール: 処理されたデータに基づく計算
            • 判定:ファイルサイズ / 128M > 1.1
              • 次を超える: 1 億 2,800 万ポイントごと
              • 以下: 1 シャードとして全体
            • 大きなファイル: 128M ごとにフラグメントとして
            • シャードは MapTask に対応します
          • ReduceTask プロセス: 指定済み
        • スパーク
          • 実行者: 指定します
    • 分散リソース: YARN、スタンドアロン リソース コンテナー
      • 複数のマシンの物理リソース (CPU、メモリ、ディスク) を論理的に 1 つの全体にマージします。
      • YARN:リソースマネージャー、ノードマネージャー【8コア8GB】
        • 各NMは各マシンのリソースを管理します
        • RM はすべての NM を管理します
      • スタンドアロン:マスター、ワーカー
    • 統一されたハードウェア リソース管理を実現: YARN 上の MR、Flink、Spark
  • Spark プログラムの構造は何ですか?

    • アプリケーション: プログラム
    • プロセス: 1 つのドライバー、複数のエグゼキューター
    • 実行: 複数のジョブ、複数のステージ、複数のタスク
  • スタンドアロンとは何ですか?

    • Spark 独自のクラスター リソース管理プラットフォーム
  • YARN で Spark を使用する理由

    • リソースの統合管理を実現するために、すべてのプログラムは YARN に送信されて実行されます。
  • マスターとワーカーとは何ですか?

    • 分散マスター/スレーブ アーキテクチャ: Hadoop、Hbase、Kafka、Spark...
      • マスター: 管理ノード: マスター
        • 接客
        • スレーブノードの管理
        • すべてのリソースを管理する
      • 送信元: コンピューティング ノード: ワーカー
        • マスターノードによって割り当てられたタスクの実行を担当します
  • ドライバーとエグゼキューターとは何ですか?

    • step1: 分散リソースプラットフォームの起動

    • step2: 分散コンピューティングプログラムを開発する

      sc = SparkContext(conf)
      
      # step1:读取数据
      inputRdd = sc.textFile(hdfs_path)
      
      #step2:转换数据
      wcRdd = inputRdd.filter.map.flatMap.reduceByKey
      
      #step3:保存结果
      wcRdd.foreach
      
      sc.stop
      
    • ステップ 3: 分散プログラムを分散リソース クラスターに送信して実行します。

      spark-submit xxx.py
      executor个数和资源
      driver资源配置
      
    • 最初にドライバープロセスを開始します

      • リソースの申請: Executor コンピューティング プロセスを開始します。
      • ドライバーはコードの解析を開始し、コードの各文がジョブを生成するかどうかを判断します。
    • 次に、Executor プロセスを開始します。リソース構成に従って Worker ノード上で実行します。

      • すべてのエグゼキュータはドライバに逆登録し、ドライバがタスクを割り当てるのを待ちます。
  • 仕事はどのようにして生まれたのでしょうか?

    • RDD 内のデータが使用されると、ジョブの生成がトリガーされます。RDD データを使用するすべての関数はトリガー演算子と呼ばれます。
    • DAGScheduler コンポーネントは、コードに従って現在のジョブの DAG グラフを構築します。
  • DAGはどのように生成されるのでしょうか?

    • アルゴリズム: バックトラッキング アルゴリズム: バックトラッキング
    • DAG 構築プロセス中に、各オペレーターをステージに配置し、大きく依存するオペレーターが見つかった場合は新しいステージを構築します。
    • ステージ分割:幅広い依存関係
    • 実行ステージ: 小さいステージ番号に従って実行を開始します。
      • 各ステージを TaskSet に変換します: タスク コレクション
  • タスクの数を決定するにはどうすればよいですか?

    • 1 コア CPU = 1 タスク = 1 パーティション
    • ステージから変換された TaskSet にはいくつかのタスクがあります。ステージ内の RDD のパーティションの最大数によって決まります。
  • Spark オペレーターには何種類ありますか?

    • 変換: 変換
      • 戻り値: RDD
      • これは遅延モードであり、ジョブ生成はトリガーされません
      • 地図、平面地図
    • トリガー: アクション
      • 戻り値: 非 RDD
      • トリガージョブ生成
      • 数、最初

おすすめ

転載: blog.csdn.net/xianyu120/article/details/132326786