Hive>JVM再利用と推定実行

7426 ワード

JVM再利用
  • JVM再利用はHadoopチューニングパラメータの内容であり、Hiveの性能に非常に大きな影響を及ぼし、特に小さなファイルを避けることが難しいシーンやtaskが特に多いシーンでは、このようなシーンの多くは実行時間が短い.Hadoopのデフォルト構成は、通常、派生JVMを使用してmapおよびReduceタスクを実行します.この場合、JVMの起動プロセスは、特に実行されるjobに何百ものtaskタスクが含まれている場合、かなりのオーバーヘッドをもたらす可能性があります.JVM再利用により、JVMインスタンスを同じjobでN回再利用することができる.Nの値はHadoopのmapred-site.xmlファイルで設定できます.通常、10〜20の間で、特定のビジネスシーンに基づいてテストする必要があるかどうか.
  • <property>
      <name>mapreduce.job.jvm.numtasks</name>
      <value>10</value>
      <description>How many tasks to run per jvm. If set to -1, there is
      no limit. 
      </description>
    </property>
    

    私たちもhiveの中で
      set  mapred.job.reuse.jvm.num.tasks=10;
    

    この設定はjvmの再利用を設定します
    この機能の欠点は、JVM再利用をオンにすると、タスクが完了してから解放されるまで使用されていたtaskスロットが占有されて再利用されることです.ある「アンバランス」jobのうちいくつかのreduce taskが実行される時間が他のReduce taskよりも多く消費されると、保持されたスロットはずっと空いていても他のjobに使用されず、すべてのtaskが終了するまで解放されません.
    推定実行
  • 分散クラスタ環境では、プログラムBug(Hadoop自体のバグを含む)、負荷の不均衡またはリソースの分散の不均等の原因により、同じジョブの複数のタスク間で実行速度が一致せず、他のタスクよりも著しく遅いタスクがある(例えば、1つのジョブのタスクの進捗が50%しかなく、他のすべてのタスクが完了している場合)、これらのタスクはジョブ全体の進捗を遅らせる.このような事態を避けるために、Hadoopは推定実行(Speculative Execution)メカニズムを採用し、一定の法則に基づいて「足を引っ張る」ことを推測しているこのようなタスクのバックアップタスクを開始し、元のタスクと同じデータを同時に処理し、最終的に完了タスクを最初に正常に実行した計算結果を最終結果として選択します.Hiveは、推定実行設定の開始推定実行パラメータ:Hadoopのmapred-site.xmlファイルで構成する
  • を開くことができます.
    <property>
      <name>mapreduce.map.speculative</name>
      <value>true</value>
      <description>If true, then multiple instances of some map tasks 
                   may be executed in parallel.</description>
    </property>
    
    <property>
      <name>mapreduce.reduce.speculative</name>
      <value>true</value>
      <description>If true, then multiple instances of some reduce tasks 
                   may be executed in parallel.</description>
    </property>
    

    ただし、hive自体は、reduce-sideの推定実行を制御するための構成項目も提供しています.
      <property>
        <name>hive.mapred.reduce.tasks.speculative.execution</name>
        <value>true</value>
        <description>Whether speculative execution for reducers should be turned on. </description>
      </property>
    

    これらの推定実行変数のチューニングについては、具体的なアドバイスは難しい.ユーザが実行時のばらつきに非常に敏感であれば、これらの機能をオフにすることができる.ユーザが入力データ量が大きいために長時間のmapやReduce taskを実行する必要がある場合、推定実行の起動による無駄は非常に大きい.