IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]HDFS HA系列实验之五:client 配置

    book_mmicky发表于 2014-05-13 15:23:05
    love 0
    Hadoop client访问HDFS是通过client端的hadoop配置文件来访问hadoop集群的,一般的情况下我们在配置文件core-site.xml中配置fs.defaultFS是使用一个类似hdfs://hadoop1:8000/的固定地址和端口,显然这在访问HA时存在很大的局限性:HA如果切换了NN,那么就无法访问了;在federation中只能访问部分HDFS等等。那么在HA和Federation下该如何访问HDFS呢?

    1:实验目的
    A:client如何访问HA HDFS
    B:client如何访问HA HDFS + Federation

    2:client如何访问HA HDFS
    本实验环境搭建指导:HDFS HA系列实验之二:HA+JournalNode+zookeeper
    本实验相关的hadoop配置文件下载(HA+JN+ZK)
    根据上面相关资料重新配置HA+JournalNode+zookeeper环境,并格式化后启动,然后使用物理机192.168.100.111(机器名wyy)作为客户端来访问集群。

    A:启动集群
    [hadoop@product202 ~]$ /app/hadoop/zookeeper345/bin/zkServer.sh start
    [hadoop@product202 ~]$ /app/hadoop/hadoop220/sbin/hadoop-daemon.sh start journalnode
    [hadoop@product203 ~]$ /app/hadoop/zookeeper345/bin/zkServer.sh start
    [hadoop@product203 ~]$ /app/hadoop/hadoop220/sbin/hadoop-daemon.sh start journalnode
    [hadoop@product204 ~]$ /app/hadoop/zookeeper345/bin/zkServer.sh start
    [hadoop@product204 ~]$ /app/hadoop/hadoop220/sbin/hadoop-daemon.sh start journalnode

    [hadoop@product201 ~]$ cd /app/hadoop/hadoop220/
    [hadoop@product201 hadoop220]$ bin/hdfs namenode -format
    [hadoop@product201 hadoop220]$ bin/hdfs zkfc -formatZK
    [hadoop@product201 hadoop220]$ sbin/hadoop-daemon.sh start zkfc
    [hadoop@product202 ~]$ cd /app/hadoop/hadoop220/
    [hadoop@product202 hadoop220]$ sbin/hadoop-daemon.sh start zkfc
    [hadoop@product201 hadoop220]$ sbin/hadoop-daemon.sh start namenode
    [hadoop@product202 hadoop220]$ bin/hdfs namenode -bootstrapStandby
    [hadoop@product202 hadoop220]$ sbin/hadoop-daemon.sh start namenode
    [hadoop@product201 hadoop220]$ sbin/hadoop-daemons.sh start datanode

    B:客户端连结测试
    将hadoop集群的配置文件复制到客户端192.168.100.111(机器名wyy)的配置目录中,并在客户端的/etc/hosts解析集群的NN机器名。
    hadoop@wyy:/app/hadoop/hadoop220/etc$ scp -r hadoop@product201:/app/hadoop/hadoop220/etc/hadoop ./
    hadoop@wyy:/app/hadoop/hadoop220/etc$ cat /etc/hosts
    192.168.100.201 product201 product201.product
    192.168.100.202 product202 product202.product
    hadoop@wyy:/app/hadoop/hadoop220$ cat etc/hadoop/core-site.xml
    <property>
      <name>fs.defaultFS</name>
      <value>hdfs://product201:8020</value>
    </property>
    hadoop@wyy:/app/hadoop/hadoop220/etc$ cd ..
    hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs dfs -mkdir /test
    hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs dfs -put /home/mmicky/data/2013.txt /test/.
    hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs dfs -ls /test
    Found 1 items
    -rw-r--r--   3 hadoop supergroup  258570165 2014-02-23 13:35 /test/2013.txt

    杀死product201 namenode进程,模拟HA故障转移:
    [root@product201 ~]# jps
    1964 NameNode
    1906 DFSZKFailoverController
    2425 Jps
    2061 DataNode
    [root@product201 ~]# kill 1964


    此时在客户端连结hadoop 集群的时候就会出错:
    hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs dfs -ls /test
    ls: Call From wyy/127.0.1.1 to product201:8020 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused

    C:解决方案
    使用参数dfs.client.failover.proxy.provider.[nameservice ID],该参数定义HDFS客户端用来和活动的namenode节目联系的java类。配置的java类是用来给HDFS客户端判断哪个namenode节点是活动的,当前是哪个namenode处理客户端的请求,目前hadoop2.2.0提供了唯一的一个实现类是ConfiguredFailoverProxyProvider,除非你自己定义了一个类,否则都将使用这个类。

    重新配置hdfs-site.xml和core.xml,然后重新将配置文件发布到所有节点和客户端,再进行测试。
    [hadoop@product201 hadoop]$ vi hdfs-site.xml
    [hadoop@product201 hadoop]$ cat hdfs-site.xml
    <property>
       <name>dfs.client.failover.proxy.provider.cluster1</name>
       <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    [hadoop@product201 hadoop]$ vi core-site.xml
    [hadoop@product201 hadoop]$ cat core-site.xml
    <property>
      <name>fs.defaultFS</name>
      <value>hdfs://cluster1</value>
    </property>
    注意以上配置中cluster1是hdfs-site.xml中定义的[nameservice ID]。

    重新启动hadoop集群
    hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs dfs -ls /test
    Found 1 items
    -rw-r--r--   3 hadoop supergroup  258570165 2014-02-23 13:35 /test/2013.txt

    杀死product201 namenode进程,模拟HA故障转移:
    [hadoop@product201 hadoop220]$ jps
    1776 DFSZKFailoverController
    1834 NameNode
    1978 Jps
    [hadoop@product201 hadoop220]$ kill 1834

    此时在客户端连结hadoop集群的时候还是能正常访问
    hadoop@wyy:/app/hadoop/hadoop220$ bin/hdfs dfs -ls /test
    Found 1 items
    -rw-r--r--   3 hadoop supergroup  258570165 2014-02-23 13:35 /test/2013.txt


    3:client如何访问HA HDFS + Federation









沪ICP备19023445号-2号
友情链接