云平台配置3:配置完全分布式的 Hadoop

云平台配置3:配置完全分布式的 Hadoop

前面说了伪分布式的配置,也说了如何配置ssh,到现在是时候配置具有完全分布式的hadoop了

一、配置 Hadoop

  1. 下载 Hadoop 。例如 hadoop-2.6.5.tar.gz
  2. 解压到 /opt 目录下并设置目录权限。
  3. 配置环境变量。

    • sudo vim /etc/profile
    • 在文件中添加:
      1
      2
      export HADOOP_HOME=/opt/hadoop-2.6.5
      export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  4. 更改配置文件(位于 /opt/hadoop-2.6.5/etc/hadoop 目录)。

    • hadoop-env.sh
      找到并修改: export JAVA_HOME=/opt/jdk1.8.0_121
    • core-site.xml
      找到并修改:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      <configuration>
      <property>
      <name>fs.defaultFS</name>
      <value>hdfs://spark1:9000</value>
      </property>
      <property>
      <name>hadoop.tmp.dir</name>
      <value>file:/home/spark/hadoop-2.6.5/tmp</value>
      <description>Abase for ohr temporary directories.</description>
      </property>
      </configuration>

      请注意记录,此处的HDFS端口号为 9000

    • hdfs-site.xml
      找到并修改:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      <configuration>
      <property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>spark1:50090</value>
      </property>
      <property>
      <name>dfs.replication</name>
      <value>2</value>
      </property>
      <property>
      <name>dfs.namenode.name.dir</name>
      <value>file:/home/spark/hadoop-2.6.5/tmp/dfs/name</value>
      </property>
      <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:/home/spark/hadoop-2.6.5/data</value>
      </property>
      </configuration>

      请根据实际情况修改 dfs.replication 的值(默认为 3 )。

    • mapred-site.xml
      找到并修改:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      <configuration>
      <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
      </property>
      <property>
      <name>mapreduce.jobhistory.address</name>
      <value>spark1:10020</value>
      </property>
      <property>
      <name>mapreduce.jobhistory.webapp.address</name>
      <value>spark1:19888</value>
      </property>
      </configuration>
    • yarn-site.xml
      找到并修改:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      <configuration>
      <property>
      <name>yarn.resourcemanager.hostname</name>
      <value>spark1</value>
      </property>
      <property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle</value>
      </property>
      </configuration>
    • 复制 slaves.template 为 slaves,并编辑 slaves 文件。
      添加:

      1
      2
      spark2
      spark3
  5. 将 Hadoop 整个目录复制到 spark2 和 spark3 节点(scp 命令)。

二、 启动和关闭 Hadoop 服务

2.1 启动 Hadoop 的步骤

  1. (仅首次启动前执行)格式化 NameNode :hadoop namenode -format
  2. 启动 HDFS 文件系统服务:start-dfs.sh
  3. 启动 YARN:start-yarn.sh
  4. 使用 jps 命令查看相关进程是否启动。
    spark1:
    • NameNode
    • SecondaryNameNode
    • ResourceManager
      spark2 和 spark3:
    • DataNode
    • NodeManager

如果上述进程未能全部启动,可以按照以下步骤排查:

  1. 使用 stop-yarn.shstop-dfs.sh 关闭所有服务。
  2. 检查 spark 用户是否拥有相关目录的权限。
  3. 尝试清空 core-site.xml 配置文件中的 hadoop.tmp.dir 配置项所指向的目录。

2.2 关闭 Hadoop 的步骤

依次输入 stop-yarn.shstop-dfs.sh 即可。

注意:每次关闭系统之前必须执行该步骤。