cgroupの設定

コントロール・グループ、すなわちcgroupは、Linuxカーネル機能であり、CPU時間やシステム・メモリーなどのリソースを特定のプロセスまたはプロセス・グループに割り当てることができます。Sparkが実行されているノードでDgraphをホストする必要がある場合は、cgroupを使用して、必ず十分なリソースがそれに利用可能になるようにする必要があります。

警告: SparkノードへのDgraphのインストールは推奨されていないため、絶対に必要な場合のみ実行するようにしてください。
これを行うには、Hadoopでcgroupを有効にし、使用できるCPUおよびメモリーの容量を制限するYARNのためにそれを作成します。その後、Dgraphのために別個のcgroupを作成します。

cgroupを設定するには、次の手順を実行します。

  1. システムに現在libcgroupパッケージがない場合は、rootとしてそれをインストールします。
    これにより、/etc/cgconfig.confが作成されます。これは、cgroupを構成するために使用されます。
  2. cgconfigサービスを自動的に実行できるようにします。
    chkconfig cgconfig on
  3. YARNのためのcgroupを作成します。これはHadoop内で実行する必要があります。手順については、Hadoopディストリビューションのドキュメントを参照してください。
    YARN cgroupは、すべてのYARNコンテナに割り当てるCPUおよびメモリーの容量を制限する必要があります。設定する適切な制限は、システム、および処理するデータの量によって異なります。Dgraphのために、最小でも次を予約する必要があります。
    • 5GBのRAM
    • 2つのCPUコア
    YARNが使用できるCPUコアの数は、パーセンテージとして指定する必要があります、たとえば、4コア・マシンでは、YARNは2つのコア、すなわち50%のみ取得する必要があります。8コア・マシンでは、YARNはそれらのうち6つまで、すなわち75%まで取得できます。この容量を設定するときには、より多くのコアをDgraphに割り当てると、そのパフォーマンスが向上するということを覚えておいてください。
  4. cgconfig.confに次を追加することで、Dgraphのためにcgroupを作成します。
    # Create a Dgraph cgroup named "dgraph"
    group dgraph {
    # Specify which users can edit this group
        perm {
            admin {
                uid = $BDD_USER;
            }
            # Specify which users can add tasks for this group
            task {
                uid = $BDD_USER;
            }
        }
    # Set the memory and swap limits for this group
        memory {
            # Sets memory limit to 10GB
            memory.limit_in_bytes = 10000000000;
    
    
            # Sets memory + swap limit to 12GB
            memory.memsw.limit_in_bytes = 12000000000;
        }
    }
    ここで、$BDD_USERbddユーザーの名前です。
    重要: 上でmemory.limit_in_bytesおよびmemory.memsw.limit_in_bytesのために指定した値は、絶対最小値要件です。可能な場合は、より大きい値を使用する必要があります。
  5. 変更内容を有効にするために、cfconfigを再起動します。