RPi3B+を用いたHadoop Cluster(ver. 3.2.0)構築時の設定

Hadoopの構築

動機

主に修論。(SoC FPGAを使った研究テーマがあったから。)

あとは、Docker・Kubenetesを調べてるうちに、 ネットワーク・通信を使ったアプリケーション、複数台のマシンを使った処理をやってみたくなったから。

構築

構築の際の方法等は別記事にする(かも)。

Hadoop-3.2.0の設定ファイル・各設定の意味

hadoop-3.2.0/etc/hadoop 内にある設定ファイルをいじる。

嘘が混じってるかもしれない

core-site.xml

<property>
    <name>fs.default.name</name>
    <value>hdfs://master:9000</value>
</property>
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:9000</value>
</property>

hdfs-site.xml

  • dfs.namenode.name.dir

    NameNodeがデータを使用するために使うディレクトリの指定

<property>
    <name>dfs.namenode.name.dir</name>
    <value>/home/hduser/hdfs/name</value>
</property>
  • dfs.datanode.data.dir

    DataNodeがデータを使用するために使うディレクトリの指定

<property>
    <name>dfs.datanode.data.dir</name>
    <value>/home/hduser/hdfs/data</value>
</property>
  • dfs.replication

    Hadoop Cluster内で複製をいくつ行うかを指定(下の場合、3つの複製を別のマシンで持つ)

<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>

mapred-site.xml

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=/home/hduser/hadoop-3.2.0</value>
</property>
<property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=/home/hduser/hadoop-3.2.0</value>
</property>
<property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=/home/hduser/hadoop-3.2.0</value>
</property>
  • yarn.app.mapreduce.am.resource.mb

    MapReduceのApplication Masterが必要とするメモリサイズ(default: 1536)

<property>
     <name>yarn.app.mapreduce.am.resource.mb</name>
     <value>256</value>
</property>
  • mapreduce.map.memory.mb

    MapReduceの際にmap処理に割り当てを許可するメモリの最大値

<property>
    <name>mapreduce.map.memory.mb</name>
    <value>128</value>
</property>
  • mapreduce.reduce.memory.mb

    MapReduceの際にReduce処理に割り当てを許可するメモリの最大値

<property>
    <name>mapreduce.map.memory.mb</name>
    <value>128</value>
</property>

yarn-site.xml

  • yarn.resourcemanager.hostname

    ResourceManagerがMap/Reduceジョブなどのアプリケーションを受け付けるホストを指定

<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
</property>
  • yarn.acl.enable

    ACL(?)を使用するか否かの設定(謎。ACLとは?)

<property>
    <name>yarn.acl.enable</name>
    <value>0</value>
</property>
  • yarn.nodemanager.aux-services

    MapReduceのシャッフルサービスを指定する

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
  • yarn.nodemanager.auxservices.mapreduce.shuffle.class

    MapReduceのデフォルトのシャッフル方法を指定する(たぶん。嘘かもしれない)

<property>
    <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property> 
  • yarn.nodemanager.resource.memory-mb

    NameNodeで利用できるメモリ量

<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>512</value>
</property> 
  • yarn.scheduler.maximum-allocation.mb

    JobがResourceManagerに要求できる最大のメモリ量

<property>
    <name>yarn.scheduler.maximum-allocation.mb</name>
    <value>512</value>
</property>  
  • yarn.scheduler.minimum-allocation.mb

    JobがResourceManagerに要求する最小のメモリ量

<property>
    <name>yarn.scheduler.minimum-allocation.mb</name>
    <value>64</value>
</property> 
  • yarn.nodemanager.vmem-check-enabled

    割り振られたメモリよりも多くのメモリを使用するジョブが失敗しないようにするにはfalseにする。 trueにすると使用可能なメモリをオーバーするとJobが停止する

<property>
    <name>yarn.nodemanager.vmem-check-enable</name>
    <value>64</value>
</property>