• hadoop记录篇3-namenode水平拓展Federation+viewfs


    一 。Federation简介和原理

          之前的ha和集群都是单namenode对外提供服务 明显当用户量大时 会出现服务宕机问题  就算standby服务器激活也会导致崩溃

    为了水平的拓展namnode服务  federation提供了多个namnode  这些namenode 被聚合在一个大的集群中 每个namenode之间不需要任何交流

    数据节点用于公共的存储  每个namenode都会在datanode有自己的block pools  所以多个namenode在同一台机器间 互不影响数据,其中一台

    namenode 并不影响该datanode向其他datanode汇报数据 

         federation提供无限制的水平拓展 

     该集群中存在多个namenode 多个datanode 组成的大型集群 必须拥有一个集群的编号 clusterid 如果某个namenode格式化时 不是使用相同的

    clusterid 说明处于不同的集群 每个namnode拥有自己的namenodeserviceid 自己测试时发现namenodeserviceid必须配成主机名否则 抛出

    -ls: java.net.UnknownHostException: ns2异常 官网并没有说是主机名 说只是个表示 不明所以 只能配成主机名




    二。Federation配置

     配置环境

    /etc/hosts  
    192.168.58.147 node1  
    192.168.58.149 node2  
    192.168.58.150 node3  
    192.168.58.151 node4  

    集群(clusterid:hadoop)

    namenode  
       node1  nameserviceid:node1  
       node2  nameserviceid:node2
    secondarynode
       node1
       node2
    DataNodes  
       node2  
       node3  
       node4  
    因为使用之前ha环境(具体参考http://blog.csdn.net/liaomin416100569/article/details/78301242) 做一些数据清空

     (node2-node4)

      cd /blockdata && rm -rf *   

    node1和node2执行
    mkdir -p /namedata
    如果存在该目录
    cd /namedata && rm -rf *
    配置文件修改

    core-site.xml

    这里因为当我访问node1时自然访问node1的namenode服务 访问node2时访问node2的namenode服务 所以该文件必须配置不一样

    node1

    <configuration>
    
     <property>
        <name>fs.defaultFS</name><!--当用户 在node1上 输入命令 hdfs dfs -ls / 时 读取该默认fs 也就读取node1的文件系统-->
        <value>hdfs://node1</value>
    </property>
    
    </configuration>
    
    node2

    <configuration>
    
     <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node2</value> <!--不加端口是因为默认配置的端口是 8020-->
    </property>
    
    </configuration>
    
    hdfs-site.xml(node1和node2一致)

    <configuration>
       <property>
     	<name>dfs.namenode.name.dir</name>
            <value>/namedata</value>
       </property>
    <property>
            <name>dfs.datanode.data.dir</name>
            <value>/blockdata</value>
    </property>
    
    <property>
         <name>dfs.replication</name>
         <value>3</value>
    </property>
    <property>
        <name>dfs.nameservices</name>
        <value>node1,node2</value> <!--注意namenodeserviceid必须使用主机名 否则不能远程上传-->
      </property>
      <property>
        <name>dfs.namenode.rpc-address.node1</name>
        <value>node1:8020</value>
      </property>
      <property>
        <name>dfs.namenode.http-address.node1</name>
        <value>node1:50070</value>
      </property>
      <property>
        <name>dfs.namenode.secondary.http-address.node1</name>
        <value>node1:50090</value>
      </property>
      <property>
        <name>dfs.namenode.rpc-address.node2</name>
        <value>node2:8020</value>
      </property>
      <property>
        <name>dfs.namenode.http-address.node2</name>
        <value>node2:50070</value>
      </property>
      <property>
        <name>dfs.namenode.secondary.http-address.node2</name>
        <value>node2:50090</value> 
      </property>
    </configuration>
    发送配置文件(注意不要将node1的core-site.xml发送到note2)
    scp -r /soft/hadoop-2.7.4/etc/hadoop/* root@node2:/soft/hadoop-2.7.4/etc/hadoop
    scp -r /soft/hadoop-2.7.4/etc/hadoop/* root@node3:/soft/hadoop-2.7.4/etc/hadoop
    scp -r /soft/hadoop-2.7.4/etc/hadoop/* root@node4:/soft/hadoop-2.7.4/etc/hadoop
    格式化namenode

    必须使用同一个集群编号格式化 如果不是 datanode将被随机分配给不同的namenode 就不能共享datanode
    node1执行 

    hdfs namenode -format -clusterId mycluster
    node2执行 
    hdfs namenode -format -clusterId mycluster 

    node1上免登录到其他主机配置参考前面文章

    启动 

    start-dfs.sh
    node1上上传文件a.txt测试

    mkdir /aaa && cd /aaa && echo aa>a.txt && hdfs dfs -put a.txt /
    node2上上传文件b.txt测试
    mkdir /aaa && cd /aaa && echo aa>b.txt && hdfs dfs -put b.txt /

    查看不同namenode不同文件

    hdfs dfs -ls hdfs://node1/
    hdfs dfs -ls hdfs://node2/
    使用 web界面查看两个节点都是激活状态

    http://192.168.58.147:50070/
    http://192.168.58.149:50070/

    三。Federation namnenode高可用

     水平拓展每个namenode也有单点问题 所以结合namenode+ha实现水平拓展+高可用 这里不在配置 相当简单

    四。使用viewfs挂载点

        将hdfs文件系统federation的多个namenode挂载到类似于linux系统下 比如 正常访问federation下多个namenode必须分开访问比如

     hdfs dfs -ls  hdfs://node1
     hdfs dfs -ls  hdfs://node2

    使用viewfs 可以将不同的hdfs挂载到某个目录下 比如

    /name1  hdfs://node1/
    /name2  hdfs://node2/

    当我们访问 hdfs dfs -ls /name自动进入node1

    配置如下

    core-site.xml

    <configuration>
     <!--配置默认使用viewfs访问 格式是 viewfs://集群名称-->
     <property>
        <name>fs.defaultFS</name>
        <value>viewfs://hadoop</value>
    </property>
    
    </configuration>
    
    hdfs-site.xml

     <property>   <!--fs.viewfs.mounttable.集群名称.link.映射路径-->
        <name>fs.viewfs.mounttable.hadoop.link./name1</name>
        <value>hdfs://node1/</value>
      </property>
      <property>
        <name>fs.viewfs.mounttable.hadoop.link./name2</name>
        <value>hdfs://node2/</value>
      </property>
    测试

    [root@node1 /]# hdfs dfs -ls /
    Found 2 items
    -r-xr-xr-x   - root root          0 2017-10-23 18:38 /name1
    -r-xr-xr-x   - root root          0 2017-10-23 18:38 /name2
    [root@node1 /]# hdfs dfs -ls /name1
    Found 1 items
    -rw-r--r--   3 root supergroup         11 2017-10-21 00:09 /name1/a.txt
    [root@node1 /]# hdfs dfs -ls /name2
    Found 1 items
    -rw-r--r--   3 root supergroup          4 2017-10-21 00:13 /name2/b.txt










  • 相关阅读:
    第二天续
    使用git提交本地仓库每次需要输入账号密码的问题解决
    第二天
    开启远程之路
    第一天
    第一步了解并且安装配置
    6
    Algorithms
    Algorithms
    Algorithms
  • 原文地址:https://www.cnblogs.com/liaomin416100569/p/9331181.html
Copyright © 2020-2023  润新知