zoukankan      html  css  js  c++  java
  • 大数据(hdfs的扩容兼容及其高可用HA)

    HDFS的集群扩容,减容 [了解]
    热扩容,减容
    • 减容

      1. 创建一个新的文件 位置 名字 随便
      host.exclusion
      hadoop2
      2. 配置 hdfs-site.xml
      dfs.hosts.exclude 文件的位置 (不加 file://)
      <property>
          <name>dfs.hosts.exclude</name>
          <value>/opt/install/hadoop-2.5.2/host.exclusion</value>
      </property>
      3. 通过命令刷新集群
      bin/hdfs dfsadmin -refreshNodes
      4. 把删除的节点 从slaves 删除
      5. 把hdfs-site.xml
      dfs.hosts.exclude 的信息删除
      6. kill 掉 被删除的DataNode
    • 扩容

      # ,如果新节点克隆主节点,则删除新节点下面的 data文件夹中的数据,否则主节点和新节点只可显示一个
      1. 保证新加的机器 (hosts配置 域名设置 iptables selinux关闭 配置主机到从机 SSH免密码登陆 hadoop安装(core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml))
      2. 启动新机器的datanode
      sbin/hadoop-daemon.sh start datanode
      3. 平衡处理sbin/start-balancer.sh,为了数据散列均匀
      4. 修改集群中所有的slave配置文件 把新加入的节点配置进去

     

    HA(高可用)的HDFS集群
    • 准备集群中三个节点

      防火墙,selinux,ip,host,主机名,jdk,ssh
      zk ssh 中间节点 操作 所有节点
    • 安装zk集群(奇数个节点)

      1. 上传zookeeper-3.4.5.tar.gz,并解压缩
      2. zookeeper安装目录下创建一个data文件夹 /opt/install/zookeeper-3.4.5/data
      3. 修改zookeeper的配置文件
        zoo_sample.cfg 改名成zoo.cfg
        dataDir=/opt/install/zookeeper-3.4.5/data
         server.1=hadoop:2888:3888  
        server.2=hadoop1:2888:3888
        server.3=hadoop2:2888:3888
      4. dataDir所对应的路径下创建myid文件 并分别设置 1,2,3
      5. 集群同步 scp -r zookeeper-3.4.5/ root@hadoop1:/opt/install/
      6. zookeeper_home/bin/zkServer.sh start|stop|status
        zookeeper_home/bin/zkCli.sh
    • 安装Hadoop

      1. 解压缩 释放hadoop的安装包
      2. 配置文件 同步全集群
        hadoop-env.sh
        core-site.xml
        <property>
                 <name>fs.defaultFS</name>
                 <value>hdfs://ns1/</value>
        </property>
        <property>
                 <name>hadoop.tmp.dir</name>
                 <value>/opt/install/hadoop-2.5.2/data/tmp</value>
        </property>
        <property>
      <name>ha.zookeeper.quorum</name>
      <value>hadoop:2181,hadoop1:2181,hadoop2:2181</value>
        </property>
        hdfs-site.xml
        <!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
                    <property>
                       <name>dfs.nameservices</name>
                       <value>ns1</value>
                    </property>
                    <property>
                       <name>dfs.ha.namenodes.ns1</name>
                       <value>nn1,nn2</value>
                    </property>
                    <!-- nn1的RPC通信地址 -->
                    <property>
                         <name>dfs.namenode.rpc-address.ns1.nn1</name>
                         <value>hadoop:8020</value>
                   </property>
                   <!-- nn1的http通信地址 -->
                   <property>
                       <name>dfs.namenode.http-address.ns1.nn1</name>
                       <value>hadoop:50070</value>
                   </property>
                   <!-- nn2的RPC通信地址 -->
                   <property>
                        <name>dfs.namenode.rpc-address.ns1.nn2</name>
                        <value>hadoop1:8020</value>
                   </property>
                    <!-- nn2的http通信地址 -->
                    <property>
                         <name>dfs.namenode.http-address.ns1.nn2</name>
                         <value>hadoop1:50070</value>
                   </property>
                    <!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
                    <property>
                          <name>dfs.namenode.shared.edits.dir</name>
                          <value>qjournal://hadoop:8485;hadoop1:8485;hadoop2:8485/ns1</value>
                    </property>
                     <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
                      <property>
                          <name>dfs.journalnode.edits.dir</name>
                          <value>/opt/install/hadoop-2.5.2/journaldata</value>
                      </property>
                      <!-- 开启NameNode失败自动切换 -->
                      <property>
                          <name>dfs.ha.automatic-failover.enabled</name>
                          <value>true</value>
                      </property>
                      <!-- 配置失败自动切换实现方式 -->
                     <property>
                          <name>dfs.client.failover.proxy.provider.ns1</name>
                          <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
                      </property>
                      <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
                      <property>
                          <name>dfs.ha.fencing.methods</name>
                          <value>
                              sshfence
                              shell(/bin/true)
                          </value>
                      </property>
                      <!-- 使用sshfence隔离机制时需要ssh免登陆 -->
                      <property>
                          <name>dfs.ha.fencing.ssh.private-key-files</name>
                          <value>/root/.ssh/id_rsa</value>
                      </property>
                      <!-- 配置sshfence隔离机制超时时间 -->
                      <property>
                          <name>dfs.ha.fencing.ssh.connect-timeout</name>
                         <value>30000</value>
                     </property>

        mapred-site.xml[一致]
        yarn-site.xml[一致]
        slaves[一致]
      3. 启动zk , journalnode
        sbin/hadoop-daemon.sh start journalnode
      3. 格式化
        bin/hdfs namenode -format
        scp -r data/tmp/* root@hadoop1:/opt/install/hadoop-2.5.2/data/tmp
      4. 启动
        bin/hdfs zkfc -formatZK [第一次]
        sbin/start-dfs.sh
    • Java代码

       Configuration configuration = new Configuration();
      configuration.set("fs.defaultFS","hdfs://ns1/");

      FileSystem fileSystem = FileSystem.get(configuration);

     

  • 相关阅读:
    基于摸板匹配的目標跟蹤算法
    spoj 2713 Can you answer these queries IV
    zoj 3633 Alice's present
    hdu 3642 Get The Treasury
    poj 1195 Mobile phones
    poj 2760 End of Windless Days
    zoj 3540 Adding New Machine
    spoj 1716 Can you answer these queries III
    spoj 1043 Can you answer these queries I
    spoj 2916 Can you answer these queries V
  • 原文地址:https://www.cnblogs.com/lhc-hhh/p/10324287.html
Copyright © 2011-2022 走看看