hadoop2.0中namenode ha如何配置

20次阅读
没有评论

这篇文章将为大家详细讲解有关 hadoop2.0 中 namenode ha 如何配置,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

hdfs 的 ha,主要的问题是 active 和 standby 的元数据信息同步问题,之前的解决方案有 avatar 等一系列。共享存储可以采用 NFS,bookkeeper 等相关存储。在这里我们采用 Journal 来实现共享存储,主要是因为配置简单。

虚拟机准备:三台,列表如下:

机器名

功能

IP

master1

namenode(active),JournalNode,zookeeper

192.168.6.171

master2

namenode,JournalNode,zookeeper

192.168.6.172

datanode1

datanode,JournalNode,zookeeper

192.168.6.173

软件版本:hadoop 2.4.1   zookeeper3.4.6

下载 hadoop2.4.1 后,解压,解压 zookeeper

第一步先配置 zookeeper 集群

将 zookeeper 解压后的文件夹下的 conf 下的 zoo_sample.cfg 重命名为 zoo.cfg

修改配置

dataDir=/cw/zookeeper/   我这里修改为 /cw/zookeeper/   确保该文件夹存在

在该文件尾部添加集群配置

server.1=192.168.6.171:2888:3888

server.2=192.168.6.172:2888:3888

server.3=192.168.6.173:2888:3888

将修改后的 zookeeper 文件夹分发到其他两台机器上

scp -r zookeeper-3.4.6 root@192.168.6.172:/cw/

scp -r zookeeper-3.4.6 root@192.168.6.173:/cw/

配置每台机器的 pid

在 192.168.6.171 机器上执行

 echo 1 /cw/zookeeper/myid

在 192.168.6.172 机器上执行

 echo 2 /cw/zookeeper/myid

在 192.168.6.173 机器上执行

 echo 3 /cw/zookeeper/myid

启动 zookeeper,每台分别执行

./zkServer.sh start

都启动完成后,可以通过查看日志确认是否启动 OK,或者执行 ./zkServer.sh status 来查看每一个节点的状态。

————————————————— 华立分割  hadoop 开始 —————————————————————————- 配置 hadoop 的相关参数

hadoop-env.sh 主要配置 java_home 的路径

core-site.xml 配置内容如下

configuration

      property

        name fs.defaultFS /name

        value hdfs://myhadoop /value

myhadoop 是 namespace 的 id

    /property

    property

        name io.file.buffer.size /name

        value 131072 /value

    /property

    property

        name ha.zookeeper.quorum /name

        value 192.168.6.171,192.168.6.172,192.168.6.173 /value

    /property

/configuration

修改 hdfs-site.xml

configuration

property

  name dfs.nameservices /name

  value myhadoop /value 对应之前的 namespace

  description

    Comma-separated list of nameservices.

    as same as fs.defaultFS in core-site.xml.

  /description

/property

property

  name dfs.ha.namenodes.myhadoop /name

  value nn1,nn2 /value 每一个 nn 的 id 编号

  description

    The prefix for a given nameservice, contains a comma-separated

    list of namenodes for a given nameservice (eg EXAMPLENAMESERVICE).

  /description

/property

property

  name dfs.namenode.rpc-address.myhadoop.nn1 /name

  value 192.168.6.171:8020 /value

  description

    RPC address for nomenode1 of hadoop-test

  /description

/property

property

  name dfs.namenode.rpc-address.myhadoop.nn2 /name

  value 192.168.6.172:8020 /value

  description

    RPC address for nomenode2 of hadoop-test

  /description

/property

property

  name dfs.namenode.http-address.myhadoop.nn1 /name

  value 192.168.6.171:50070 /value

  description

    The address and the base port where the dfs namenode1 web ui will listen on.

  /description

/property

property

  name dfs.namenode.http-address.myhadoop.nn2 /name

  value 192.168.6.172:50070 /value

  description

    The address and the base port where the dfs namenode2 web ui will listen on.

  /description

/property

property

  name dfs.namenode.servicerpc-address.myhadoop.n1 /name

  value 192.168.6.171:53310 /value

/property

property

  name dfs.namenode.servicerpc-address.myhadoop.n2 /name

  value 192.168.6.172:53310 /value

/property

下部分为对应的文件存储目录配置

property

  name dfs.namenode.name.dir /name

  value file:///cw/hadoop/name /value

  description Determines where on the local filesystem the DFS name node

      should store the name table(fsimage). If this is a comma-delimited list

      of directories then the name table is replicated in all of the

      directories, for redundancy. /description

/property

property

  name dfs.namenode.shared.edits.dir /name

  value qjournal://192.168.6.171:8485;192.168.6.172:8485;192.168.6.173:8485/hadoop-journal /value

  description A directory on shared storage between the multiple namenodes

  in an HA cluster. This directory will be written by the active and read

  by the standby in order to keep the namespaces synchronized. This directory

  does not need to be listed in dfs.namenode.edits.dir above. It should be

  left empty in a non-HA cluster.

  /description

/property

property

  name dfs.datanode.data.dir /name

  value file:///cw/hadoop/data /value

  description Determines where on the local filesystem an DFS data node

  should store its blocks. If this is a comma-delimited

  list of directories, then data will be stored in all named

  directories, typically on different devices.

  Directories that do not exist are ignored.

  /description

/property

property

  name dfs.ha.automatic-failover.enabled /name

  value true /value

  description

    Whether automatic failover is enabled. See the HDFS High

    Availability documentation for details on automatic HA

    configuration.

  /description

/property

property

  name dfs.journalnode.edits.dir /name

  value /cw/hadoop/journal/ /value

/property

property

  name dfs.client.failover.proxy.provider.myhadoop /name

  value org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider /value

/property

property

  name dfs.ha.fencing.methods /name

  value sshfence /value

/property

property

  name dfs.ha.fencing.ssh.private-key-files /name

  value /home/yarn/.ssh/id_rsa /value

  description the location stored ssh key /description

/property

property

  name dfs.ha.fencing.ssh.connect-timeout /name

  value 1000 /value

/property

property

  name dfs.namenode.handler.count /name

  value 8 /value

/property

/configuration

以上所涉及的文件夹需要手工建立,如不存在会出现异常。

以后配置完成后,将配置好的 hadoop 分发到所有集群节点。同时每一个节点建立需要的文件夹。

下面开始格式化 zk 节点,执行:./hdfs zkfc -formatZK

执行完毕后,启动 ZookeeperFailoverController,用来监控主备节点的状态。

./hadoop-daemon.sh start zkfc  一般在主备节点启动就可以

下一步启动共享存储系统 JournalNode
在各个 JN 节点上启动:hadoop-daemon.sh start journalnode

下一步,在主 NN 上执行./hdfs namenode -format 格式化文件系统

执行完毕后启动主 NN./hadoop-daemon.sh start namenode

在备用 NN 节点先同步 NN 的元数据信息,执行./hdfs namenode -bootstrapStandby

同步完成后,启动备用 NN ./hadoop-daemon.sh start namenode

由于 zk 已经自动选择了一个节点作为主节点,这里不要手工设置。如想手工设置主备 NN 可以执行

./hdfs haadmin -transitionToActive nn1

启动所有的 datanode

分别打开 192.168.6.171:50070 和 192.168.6.172:50070

hadoop2.0 中 namenode ha 如何配置

 

hadoop2.0 中 namenode ha 如何配置

可以执行相关的 hdfs shell 命令来验证集群是否正常工作。

下面来 kill 掉主节点的 NN

hadoop2.0 中 namenode ha 如何配置

kill -9 135415

hadoop2.0 中 namenode ha 如何配置

可以看到已经成功切换。

关于“hadoop2.0 中 namenode ha 如何配置”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。