阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Hadoop2.5.2 HA高可靠性集群搭建(Hadoop+Zookeeper)

156次阅读
没有评论

共计 15536 个字符,预计需要花费 39 分钟才能阅读完成。

一. 概述

1.1 Hadoop1.0 的单点问题

Hadoop 中的 NameNode 好比是人的心脏,非常重要,绝对不可以停止工作。在 hadoop1 时代,只有一个 NameNode。如果该 NameNode 数据丢失或者不能工作,那么整个集群就不能恢复了。这是 hadoop1 中的单点问题,也是 hadoop1 不可靠的表现。如下图所示,便是 hadoop1.0 的架构图;

Hadoop2.5.2 HA 高可靠性集群搭建(Hadoop+Zookeeper)

1.2 hadoop2.0 对 hadoop1.0 单点问题的解决

为了解决 hadoop1 中的单点问题,在 hadoop2 中新的 NameNode 不再是只有一个,可以有多个(目前只支持 2 个)。每一个都有相同的职能。一个是 active 状态的,一个是 standby 状态的。当集群运行时,只有 active 状态的 NameNode 是正常工作的,standby 状态的 NameNode 是处于待命状态的,时刻同步 active 状态 NameNode 的数据。一旦 active 状态的 NameNode 不能工作,通过手工或者自动切换,standby 状态的 NameNode 就可以转变为 active 状态的,就可以继续工作了。这就是高可靠。

1.3 使用 JournalNode 实现 NameNode(Active 和 Standby)数据的共享

Hadoop2.0 中,2 个 NameNode 的数据其实是实时共享的。新 HDFS 采用了一种共享机制,Quorum Journal Node(JournalNode)集群或者 Nnetwork File System(NFS)进行共享。NFS 是操作系统层面的,JournalNode 是 hadoop 层面的,我们这里使用 JournalNode 集群进行数据共享(这也是主流的做法)。如下图所示,便是 JournalNode 的架构图。

Hadoop2.5.2 HA 高可靠性集群搭建(Hadoop+Zookeeper)

 两个 NameNode 为了数据同步,会通过一组称作 JournalNodes 的独立进程进行相互通信。当 active 状态的 NameNode 的命名空间有任何修改时,会告知大部分的 JournalNodes 进程。standby 状态的 NameNode 有能力读取 JNs 中的变更信息,并且一直监控 edit log 的变化,把变化应用于自己的命名空间。standby 可以确保在集群出错时,命名空间状态已经完全同步了

1.4 NameNode 之间的故障切换

对于 HA 集群而言,确保同一时刻只有一个 NameNode 处于 active 状态是至关重要的。否则,两个 NameNode 的数据状态就会产生分歧,可能丢失数据,或者产生错误的结果。为了保证这点,这就需要利用使用 ZooKeeper 了。首先 HDFS 集群中的两个 NameNode 都在 ZooKeeper 中注册,当 active 状态的 NameNode 出故障时,ZooKeeper 能检测到这种情况,它就会自动把 standby 状态的 NameNode 切换为 active 状态。

下面关于 Hadoop 的文章您也可能喜欢,不妨看看:

Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程  http://www.linuxidc.com/Linux/2015-02/113487.htm

CentOS 安装和配置 Hadoop2.2.0  http://www.linuxidc.com/Linux/2014-01/94685.htm

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

二.Hadoop(HA)集群的搭建

2.1 配置详细

主机名  IP  NameNode  DataNode  Year  Zookeeper  JournalNode 

mast1192.168.177.131
mast2192.168.177.132
mast3192.168.177.133

2.2 安装 jdk

(省略)安装 jdk 和配置环境变量

2.2 SSH 免登录

(省略),参考:http://www.linuxidc.com/Linux/2016-03/128914.htm

2.4 Zookeeper 集群搭建

(省略),参考,http://www.linuxidc.com/Linux/2016-03/128915.htm,这是我的 solr 集群部署,也是使用 zookeeper 进行管理,zookeeper 这里步骤跟操作一模一样,最后我的 zoo.cfg 文件如下所示

[hadoop@Mast1 conf]$ cat zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/home/hadoop/zookeeper/data
dataLogDir=/home/hadoop/zookeeper/datalog
# the port at which the clients will connect
clientPort=2181
server.1=mast1:2888:3888
server.2=mast2:2888:3888
server.3=mast3:2888:3888

2.5 配置 Hadoop 配置文件
先配置 mast1 这台机器,配置后了后,将配置环境,复制到 mast2、mast3 上面即可!
hadoop2.0 的配置存放在~/etc/hadoop 目录下面,

core.xml

<configuration>
 <!– 指定 hdfs 的 nameservice 为 ns –>
 <property>   
      <name>fs.defaultFS</name>   
      <value>hdfs://ns</value>   
 </property>
 <!– 指定 hadoop 数据临时存放目录 –>
 <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/hadoop/workspace/hdfs/temp</value>
 </property> 
                         
 <property>   
      <name>io.file.buffer.size</name>   
      <value>4096</value>   
 </property>
 <!– 指定 zookeeper 地址 –>
 <property>
      <name>ha.zookeeper.quorum</name>
      <value>mast1:2181,mast2:2181,mast3:2181</value>
 </property>
 </configuration>

hdfs-site.xml

<configuration>
    <!– 指定 hdfs 的 nameservice 为 ns,需要和 core-site.xml 中的保持一致 –>   
    <property>   
        <name>dfs.nameservices</name>   
        <value>ns</value>   
    </property> 
    <!– ns 下面有两个 NameNode,分别是 nn1,nn2 –>
    <property>
      <name>dfs.ha.namenodes.ns</name>
      <value>nn1,nn2</value>
    </property>
    <!– nn1 的 RPC 通信地址 –>
    <property>
      <name>dfs.namenode.rpc-address.ns.nn1</name>
      <value>mast1:9000</value>
    </property>
    <!– nn1 的 http 通信地址 –>
    <property>
        <name>dfs.namenode.http-address.ns.nn1</name>
        <value>mast1:50070</value>
    </property>
    <!– nn2 的 RPC 通信地址 –>
    <property>
        <name>dfs.namenode.rpc-address.ns.nn2</name>
        <value>mast2:9000</value>
    </property>
    <!– nn2 的 http 通信地址 –>
    <property>
        <name>dfs.namenode.http-address.ns.nn2</name>
        <value>mast2:50070</value>
    </property>
    <!– 指定 NameNode 的元数据在 JournalNode 上的存放位置 –>
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://mast1:8485;mast2:8485;mast3:8485/ns</value>
    </property>
    <!– 指定 JournalNode 在本地磁盘存放数据的位置 –>
    <property>
          <name>dfs.journalnode.edits.dir</name>
          <value>/home/hadoop/workspace/journal</value>
    </property>
    <!– 开启 NameNode 故障时自动切换 –>
    <property>
          <name>dfs.ha.automatic-failover.enabled</name>
          <value>true</value>
    </property>
    <!– 配置失败自动切换实现方式 –>
    <property>
            <name>dfs.client.failover.proxy.provider.ns</name>
            <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <!– 配置隔离机制 –>
    <property>
            <name>dfs.ha.fencing.methods</name>
            <value>sshfence</value>
    </property>
    <!– 使用隔离机制时需要 ssh 免登陆 –>
    <property>
            <name>dfs.ha.fencing.ssh.private-key-files</name>
            <value>/home/hadoop/.ssh/id_rsa</value>
    </property>
                             
    <property>   
        <name>dfs.namenode.name.dir</name>   
        <value>file:///home/hadoop/workspace/hdfs/name</value>   
    </property>   
   
    <property>   
        <name>dfs.datanode.data.dir</name>   
        <value>file:///home/hadoop/workspace/hdfs/data</value>   
    </property>   
   
    <property>   
      <name>dfs.replication</name>   
      <value>2</value>   
    </property> 
    <!– 在 NN 和 DN 上开启 WebHDFS (REST API)功能, 不是必须 –>                                                                   
    <property>   
      <name>dfs.webhdfs.enabled</name>   
      <value>true</value>   
    </property>   
</configuration>

mapred-site.xml

<configuration>
 <property>   
        <name>mapreduce.framework.name</name>   
        <value>yarn</value>   
 </property>   
</configuration>

yarn-site.xml

<configuration>
    <!– 指定 nodemanager 启动时加载 server 的方式为 shuffle server –>
    <property>   
            <name>yarn.nodemanager.aux-services</name>   
            <value>mapreduce_shuffle</value>   
    </property> 
    <!– 指定 resourcemanager 地址 –>
    <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>mast3</value>
      </property>
</configuration>

slaves

[hadoop@Mast1 hadoop]$ cat slaves
mast1
mast2
mast3

修改 Java_HOME

分别在文件 hadoop-env.sh 和 yarn-env.sh 中添加 JAVA_HOME 配置

#export JAVA_HOME=${JAVA_HOME} – 原来 
export JAVA_HOME=/usr/local/java/jdk1.7.0_67

虽然默认配置了 ${JAVA_HOME}的环境变量,但是 hadoop 启动时,会提示找不到,没有办法,指定绝对路径,这个是必须的。

配置 hadoop 的环境变量,参考我的配置

[hadoop@Mast1 hadoop]$ vim ~/.bash_profile 
export HADOOP_HOME=”/home/hadoop/hadoop-2.5.2″
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH 
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS=”-Djava.library.path=$HADOOP_HOME/lib”

将配置复制到 mast2、mast3

scp -r ~/.bash_profile hadoop@mast2:/home/hadoop/ 
scp -r ~/.bash_profile hadoop@mast3:/home/hadoop/ 
scp -r $HADOOP_HOME/etc/hadoop hadoop@mast2:/home/hadoop/hadoop-2.5.2/etc/ 
scp -r $HADOOP_HOME/etc/hadoop hadoop@mast3:/home/hadoop/hadoop-2.5.2/etc/

至此 Hadoop 的配置完毕,接下来就是启动集群了

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-03/128913p2.htm

三. 集群的启动

3.1 启动 zookeeper 集群

分别在 mast1、mast2、mast3 上执行如下命令启动 zookeeper 集群;

[Hadoop@Mast1 bin]$ sh zkServer.sh start

验证集群 zookeeper 集群是否启动,分别在 mast1、mast2、mast3 上执行如下命令验证 zookeeper 集群是否启动,集群启动成功,有两个 follower 节点跟一个 leader 节点;
 
[hadoop@Mast1 bin]$ sh zkServer.sh status
JMX enabled by default
Using config: /home/hadoop/zookeeper/zookeeper-3.3.6/bin/../conf/zoo.cfg
Mode: follower

3.2 启动 journalnode 集群

在 mast1 上执行如下命令完成 JournalNode 集群的启动

[hadoop@Mast1 hadoop-2.5.2]$ sbin/hadoop-daemons.sh start journalnode

执行 jps 命令,可以查看到 JournalNode 的 Java 进程 pid

3.3 格式化 zkfc, 让在 zookeeper 中生成 ha 节点

在 mast1 上执行如下命令,完成格式化

hdfs zkfc –formatZK

(注意,这条命令最好手动输入,直接 copy 执行有可能会有问题,当时部署时我是蛋疼了许久)

格式成功后,查看 zookeeper 中可以看到

[zk: localhost:2181(CONNECTED) 1] ls /hadoop-ha
[ns]

3.4 格式化 hdfs

hadoop namenode –format

(注意,这条命令最好手动输入,直接 copy 执行有可能会有问题)

3.5 启动 NameNode

首先在 mast1 上启动 active 节点,在 mast1 上执行如下命令

[hadoop@Mast1 hadoop-2.5.2]$ sbin/hadoop-daemon.sh start namenode

在 mast2 上同步 namenode 的数据,同时启动 standby 的 namenod, 命令如下

# 把 NameNode 的数据同步到 mast2 上
[hadoop@Mast2 hadoop-2.5.2]$ hdfs namenode –bootstrapStandby
# 启动 mast2 上的 namenode 作为 standby
[hadoop@Mast2 hadoop-2.5.2]$ sbin/hadoop-daemon.sh start namenode

3.6 启动启动 datanode

在 mast1 上执行如下命令

[hadoop@Mast1 hadoop-2.5.2]$ sbin/hadoop-daemons.sh start datanode

3.7 启动 year

在作为资源管理器上的机器上启动,我这里是 mast3, 执行如下命令完成 year 的启动

[hadoop@Mast3 hadoop-2.5.2]$ sbin/start-yarn.sh

3.8 启动 ZKFC

在 mast1 上执行如下命令,完成 ZKFC 的启动

[hadoop@Mast1 hadoop-2.5.2]$ sbin/hadoop-daemons.sh start zkfc

全部启动完后分别在 mast1,mast2,mast3 上执行 jps 是可以看到下面这些进程的

#mast1 上的 java PID 进程
[hadoop@Mast1 hadoop-2.5.2]$ jps
2837 NodeManager
3054 DFSZKFailoverController
4309 Jps
2692 DataNode
2173 QuorumPeerMain
2551 NameNode
2288 JournalNode
#mast2 上的 java PID 进程
[hadoop@Mast2 ~]$ jps
2869 DFSZKFailoverController
2353 DataNode
2235 JournalNode
4522 Jps
2713 NodeManager
2591 NameNode
2168 QuorumPeerMain
#mast3 上的 java PID 进程
[hadoop@Mast3 ~]$ jps
2167 QuorumPeerMain
2337 JournalNode
3506 Jps
2457 DataNode
2694 NodeManager
2590 ResourceManager

四. 测试 HA 的高可用性

启动后 mast1 的 namenode 和 mast2 的 namenode 如下所示:

Hadoop2.5.2 HA 高可靠性集群搭建(Hadoop+Zookeeper)

Hadoop2.5.2 HA 高可靠性集群搭建(Hadoop+Zookeeper)

此时在 mast1 上执行如下命令关闭 mast1 上的 namenode

[hadoop@Mast1 hadoop-2.5.2]$ sbin/hadoop-daemon.sh stop namenode

再次查看 mast1 上的 namenode,发现自动切换为 active 了!证据如下:

Hadoop2.5.2 HA 高可靠性集群搭建(Hadoop+Zookeeper)

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-03/128913.htm

一. 概述

1.1 Hadoop1.0 的单点问题

Hadoop 中的 NameNode 好比是人的心脏,非常重要,绝对不可以停止工作。在 hadoop1 时代,只有一个 NameNode。如果该 NameNode 数据丢失或者不能工作,那么整个集群就不能恢复了。这是 hadoop1 中的单点问题,也是 hadoop1 不可靠的表现。如下图所示,便是 hadoop1.0 的架构图;

Hadoop2.5.2 HA 高可靠性集群搭建(Hadoop+Zookeeper)

1.2 hadoop2.0 对 hadoop1.0 单点问题的解决

为了解决 hadoop1 中的单点问题,在 hadoop2 中新的 NameNode 不再是只有一个,可以有多个(目前只支持 2 个)。每一个都有相同的职能。一个是 active 状态的,一个是 standby 状态的。当集群运行时,只有 active 状态的 NameNode 是正常工作的,standby 状态的 NameNode 是处于待命状态的,时刻同步 active 状态 NameNode 的数据。一旦 active 状态的 NameNode 不能工作,通过手工或者自动切换,standby 状态的 NameNode 就可以转变为 active 状态的,就可以继续工作了。这就是高可靠。

1.3 使用 JournalNode 实现 NameNode(Active 和 Standby)数据的共享

Hadoop2.0 中,2 个 NameNode 的数据其实是实时共享的。新 HDFS 采用了一种共享机制,Quorum Journal Node(JournalNode)集群或者 Nnetwork File System(NFS)进行共享。NFS 是操作系统层面的,JournalNode 是 hadoop 层面的,我们这里使用 JournalNode 集群进行数据共享(这也是主流的做法)。如下图所示,便是 JournalNode 的架构图。

Hadoop2.5.2 HA 高可靠性集群搭建(Hadoop+Zookeeper)

 两个 NameNode 为了数据同步,会通过一组称作 JournalNodes 的独立进程进行相互通信。当 active 状态的 NameNode 的命名空间有任何修改时,会告知大部分的 JournalNodes 进程。standby 状态的 NameNode 有能力读取 JNs 中的变更信息,并且一直监控 edit log 的变化,把变化应用于自己的命名空间。standby 可以确保在集群出错时,命名空间状态已经完全同步了

1.4 NameNode 之间的故障切换

对于 HA 集群而言,确保同一时刻只有一个 NameNode 处于 active 状态是至关重要的。否则,两个 NameNode 的数据状态就会产生分歧,可能丢失数据,或者产生错误的结果。为了保证这点,这就需要利用使用 ZooKeeper 了。首先 HDFS 集群中的两个 NameNode 都在 ZooKeeper 中注册,当 active 状态的 NameNode 出故障时,ZooKeeper 能检测到这种情况,它就会自动把 standby 状态的 NameNode 切换为 active 状态。

下面关于 Hadoop 的文章您也可能喜欢,不妨看看:

Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程  http://www.linuxidc.com/Linux/2015-02/113487.htm

CentOS 安装和配置 Hadoop2.2.0  http://www.linuxidc.com/Linux/2014-01/94685.htm

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

二.Hadoop(HA)集群的搭建

2.1 配置详细

主机名  IP  NameNode  DataNode  Year  Zookeeper  JournalNode 

mast1192.168.177.131
mast2192.168.177.132
mast3192.168.177.133

2.2 安装 jdk

(省略)安装 jdk 和配置环境变量

2.2 SSH 免登录

(省略),参考:http://www.linuxidc.com/Linux/2016-03/128914.htm

2.4 Zookeeper 集群搭建

(省略),参考,http://www.linuxidc.com/Linux/2016-03/128915.htm,这是我的 solr 集群部署,也是使用 zookeeper 进行管理,zookeeper 这里步骤跟操作一模一样,最后我的 zoo.cfg 文件如下所示

[hadoop@Mast1 conf]$ cat zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/home/hadoop/zookeeper/data
dataLogDir=/home/hadoop/zookeeper/datalog
# the port at which the clients will connect
clientPort=2181
server.1=mast1:2888:3888
server.2=mast2:2888:3888
server.3=mast3:2888:3888

2.5 配置 Hadoop 配置文件
先配置 mast1 这台机器,配置后了后,将配置环境,复制到 mast2、mast3 上面即可!
hadoop2.0 的配置存放在~/etc/hadoop 目录下面,

core.xml

<configuration>
 <!– 指定 hdfs 的 nameservice 为 ns –>
 <property>   
      <name>fs.defaultFS</name>   
      <value>hdfs://ns</value>   
 </property>
 <!– 指定 hadoop 数据临时存放目录 –>
 <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/hadoop/workspace/hdfs/temp</value>
 </property> 
                         
 <property>   
      <name>io.file.buffer.size</name>   
      <value>4096</value>   
 </property>
 <!– 指定 zookeeper 地址 –>
 <property>
      <name>ha.zookeeper.quorum</name>
      <value>mast1:2181,mast2:2181,mast3:2181</value>
 </property>
 </configuration>

hdfs-site.xml

<configuration>
    <!– 指定 hdfs 的 nameservice 为 ns,需要和 core-site.xml 中的保持一致 –>   
    <property>   
        <name>dfs.nameservices</name>   
        <value>ns</value>   
    </property> 
    <!– ns 下面有两个 NameNode,分别是 nn1,nn2 –>
    <property>
      <name>dfs.ha.namenodes.ns</name>
      <value>nn1,nn2</value>
    </property>
    <!– nn1 的 RPC 通信地址 –>
    <property>
      <name>dfs.namenode.rpc-address.ns.nn1</name>
      <value>mast1:9000</value>
    </property>
    <!– nn1 的 http 通信地址 –>
    <property>
        <name>dfs.namenode.http-address.ns.nn1</name>
        <value>mast1:50070</value>
    </property>
    <!– nn2 的 RPC 通信地址 –>
    <property>
        <name>dfs.namenode.rpc-address.ns.nn2</name>
        <value>mast2:9000</value>
    </property>
    <!– nn2 的 http 通信地址 –>
    <property>
        <name>dfs.namenode.http-address.ns.nn2</name>
        <value>mast2:50070</value>
    </property>
    <!– 指定 NameNode 的元数据在 JournalNode 上的存放位置 –>
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://mast1:8485;mast2:8485;mast3:8485/ns</value>
    </property>
    <!– 指定 JournalNode 在本地磁盘存放数据的位置 –>
    <property>
          <name>dfs.journalnode.edits.dir</name>
          <value>/home/hadoop/workspace/journal</value>
    </property>
    <!– 开启 NameNode 故障时自动切换 –>
    <property>
          <name>dfs.ha.automatic-failover.enabled</name>
          <value>true</value>
    </property>
    <!– 配置失败自动切换实现方式 –>
    <property>
            <name>dfs.client.failover.proxy.provider.ns</name>
            <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <!– 配置隔离机制 –>
    <property>
            <name>dfs.ha.fencing.methods</name>
            <value>sshfence</value>
    </property>
    <!– 使用隔离机制时需要 ssh 免登陆 –>
    <property>
            <name>dfs.ha.fencing.ssh.private-key-files</name>
            <value>/home/hadoop/.ssh/id_rsa</value>
    </property>
                             
    <property>   
        <name>dfs.namenode.name.dir</name>   
        <value>file:///home/hadoop/workspace/hdfs/name</value>   
    </property>   
   
    <property>   
        <name>dfs.datanode.data.dir</name>   
        <value>file:///home/hadoop/workspace/hdfs/data</value>   
    </property>   
   
    <property>   
      <name>dfs.replication</name>   
      <value>2</value>   
    </property> 
    <!– 在 NN 和 DN 上开启 WebHDFS (REST API)功能, 不是必须 –>                                                                   
    <property>   
      <name>dfs.webhdfs.enabled</name>   
      <value>true</value>   
    </property>   
</configuration>

mapred-site.xml

<configuration>
 <property>   
        <name>mapreduce.framework.name</name>   
        <value>yarn</value>   
 </property>   
</configuration>

yarn-site.xml

<configuration>
    <!– 指定 nodemanager 启动时加载 server 的方式为 shuffle server –>
    <property>   
            <name>yarn.nodemanager.aux-services</name>   
            <value>mapreduce_shuffle</value>   
    </property> 
    <!– 指定 resourcemanager 地址 –>
    <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>mast3</value>
      </property>
</configuration>

slaves

[hadoop@Mast1 hadoop]$ cat slaves
mast1
mast2
mast3

修改 Java_HOME

分别在文件 hadoop-env.sh 和 yarn-env.sh 中添加 JAVA_HOME 配置

#export JAVA_HOME=${JAVA_HOME} – 原来 
export JAVA_HOME=/usr/local/java/jdk1.7.0_67

虽然默认配置了 ${JAVA_HOME}的环境变量,但是 hadoop 启动时,会提示找不到,没有办法,指定绝对路径,这个是必须的。

配置 hadoop 的环境变量,参考我的配置

[hadoop@Mast1 hadoop]$ vim ~/.bash_profile 
export HADOOP_HOME=”/home/hadoop/hadoop-2.5.2″
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH 
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS=”-Djava.library.path=$HADOOP_HOME/lib”

将配置复制到 mast2、mast3

scp -r ~/.bash_profile hadoop@mast2:/home/hadoop/ 
scp -r ~/.bash_profile hadoop@mast3:/home/hadoop/ 
scp -r $HADOOP_HOME/etc/hadoop hadoop@mast2:/home/hadoop/hadoop-2.5.2/etc/ 
scp -r $HADOOP_HOME/etc/hadoop hadoop@mast3:/home/hadoop/hadoop-2.5.2/etc/

至此 Hadoop 的配置完毕,接下来就是启动集群了

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-03/128913p2.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计15536字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中