数据平台安装配置-Hadoop on Yarn

Java 安装


安装路径:

解压压缩文件到 `~/workspace/` 下

修改环境变量:

1
2
3
4
$ vim ~/.bashrc
export JAVA_HOME=$HOME/workspace/jdk1.7.0_75
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH

配置生效:

1
source ~/.bashrc

验证安装:

1
java -version

Hadoop 安装


解压压缩文件到 ~

修改环境变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ vim ~/.bashrc
export HADOOP_DEV_HOME=$HOME/hadoop-2.7.1
export HADOOP_MAPRED_HOME=${HADOOP_DEV_HOME}
export HADOOP_COMMON_HOME=${HADOOP_DEV_HOME}
export HADOOP_HDFS_HOME=${HADOOP_DEV_HOME}
export YARN_HOME=${HADOOP_DEV_HOME}
export HADOOP_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
export HDFS_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
export HADOOP_LOG_DIR=${HADOOP_DEV_HOME}/logs
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_DEV_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_COMMON_LIB_NATIVE_DIR"
export HADOOP_HOME=$HADOOP_DEV_HOME
export HADOOP_ROOT_LOGGER=WARN,console
export PATH=$HADOOP_DEV_HOME/bin:$HADOOP_DEV_HOME/jre/bin:$PATH

配置生效:

1
source ~/.bashrc

修改 Hadoop 配置

配置文件在 ~/hadoop-2.7.1/etc/hadoop/

  1. core-site.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $vim `core-site.xml`
    <configuration>
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://h16:9000/</value>
    </property>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>file:/home/hadoop/hadoop-2.7.1/tmp</value>
    </property>
    </configuration>
  2. slaves

    1
    2
    3
    4
    $ vim slaves
    h16
    h17
    h18
  3. 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>h16:9001</value>
    </property>
    <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/home/hadoop/hadoop-2.7.1/dfs/name</value>
    </property>
    <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/home/hadoop/hadoop-2.7.1/dfs/data</value>
    </property>
    <property>
    <name>dfs.replication</name>
    <value>2</value>
    </property>
    </configuration>
  4. mapred-site.xml

    1
    2
    3
    4
    5
    6
    <configuration>
    <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    </property>
    </configuration>
  5. yarn-site.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <configuration>
    <!-- Site specific YARN configuration properties -->
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
    <property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
    <name>yarn.resourcemanager.address</name>
    <value>h16:8032</value>
    </property>
    <property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>h16:8030</value>
    </property>
    <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>h16:8035</value>
    </property>
    <property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>h16:8033</value>
    </property>
    <property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>h16:8088</value>
    </property>
    </configuration>
  6. 将 .bashrc 和 hadoop-2.7.1 分发到各个 slave 服务器上:

    1
    2
    3
    4
    scp ~/.bashrc h17:/home/hadoop
    scp ~/.bashrc h18:/home/hadoop
    scp -r ~/hadoop-2.7.1 h17:/home/hadoop
    scp -r ~/hadoop-2.7.1 h18:/home/hadoop

提示: replication 是数据副本数量,默认为3, salve少于3台就会报错

Hadoop 启动


master(h16) 上启动 hadoop

  • 格式化 namenode:

    1
    bin/hadoop namenode -format
  • 启动 dfs:

    1
    sbin/start-dfs.sh
  • 启动 yarn:

    1
    sbin/start-yarn.sh
  • 验证启动情况:
    namenode 服务器上查看

    1
    2
    3
    4
    5
    jps # h16
    13971 NameNode
    14326 SecondaryNameNode
    31036 Jps
    14519 ResourceManager

    datanode 服务器上查看

    1
    2
    3
    4
    jps # h16
    14642 NodeManager
    14123 DataNode
    31036 Jps

在 浏览器上打开 h16:8088, 可以查看 hadoop on yarn 的管理状态.

遇到问题

jps 查看进程都存在, 但是在 hadoop 管理界面看不到 datanode 节点, 但是, 在 datanode 服务器下, data 目录 current 为空, 没有 VERSION

  • 原因: 防火墙没有关闭, 导致 datanode 启动后, 会自动关闭.

  • 解决方法: 关闭 iptables:

    1
    service iptables stop

datanode 不能启动, datanode 服务器 中的 data 目录下 current 不为空, 有 VERSION

  • 原因: 在 namenode 多次运行 bin/hadoop namenode -format, 导致 namenode 的版本与 datanode

    的记录版本不一致. 每次 `namenode format` 时, 会重新创建namenodeId, /dfs/data 中包含上次 format 下的id, 
    namenode format清空了namenode下的数据, 但是没有清空 datanode 下的数据,导致启动时失败
    
  • 解决方法:

    1. 删除相关文件夹后, 重新启动, 不推荐.
    2. 修改每个 Slave 的 namespaceID 使其与 Master 的 namespaceID 一致, 或 Master 的 namespaceID 使其与 Slave 的 namespaceID 一致

操作集群时, 出现 WARN util.NativeCodeLoader:

1
2
3
**WARN util.NativeCodeLoader:
Unable to load native-hadoop library for your platform...
using builtin-java classes where applicable**
  • 原因: 将 环境变量中的 HADOOP_ROOT_LOGGER=WARN,console, 修改为 HADOOP_ROOT_LOGGER=DEBUG,console,
    重新执行 hadoop 命令, 查看 log 发现:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    DEBUG util.NativeCodeLoader: Trying to load the custom-built native-hadoop library...
    DEBUG util.NativeCodeLoader: Failed to load native-hadoop with error: java.lang.
    UnsatisfiedLinkError: /home/hadoop/hadoop-2.7.1/lib/native/libhadoop.so.1.0.0:
    /lib64/libc.so.6:
    version `GLIBC_2.14' not found
    (required by /home/hadoop/hadoop-2.7.1/lib/native/libhadoop.so.1.0.0)
    DEBUG util.NativeCodeLoader: java.library.path=/home/hadoop//hadoop-2.7.1/lib/native
    WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform...
    using builtin-java classes where applicable

    即 GLIBC_2.14 不存在, root 用户下 执行:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    strings /lib64/libc.so.6|grep GLIBC
    GLIBC_2.2.5
    GLIBC_2.2.6
    GLIBC_2.3
    GLIBC_2.3.2
    GLIBC_2.3.3
    GLIBC_2.3.4
    GLIBC_2.4
    GLIBC_2.5
    GLIBC_2.6
    GLIBC_2.7
    GLIBC_2.8
    GLIBC_2.9
    GLIBC_2.10
    GLIBC_2.11
    GLIBC_2.12
    GLIBC_PRIVATE
  • 解决方案: 需要重新编译安装 GLIBC_2.14, 参考 [/lib64/libc.so.6: version `GLIBC_2.14’ not found问题]

参考资料


Spark On YARN 集群安装部署

Hadoop集群(第5期)_Hadoop安装配置

[/lib64/libc.so.6: version `GLIBC_2.14’ not found问题] (http://my.oschina.net/zhangxu0512/blog/262275)