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);

     

  • 相关阅读:
    每日总结
    团队冲刺9
    团队冲刺8
    团队冲刺7
    团队冲刺6
    团队冲刺5
    团队冲刺4
    团对冲刺3
    团队冲刺2
    每日博客
  • 原文地址:https://www.cnblogs.com/lhc-hhh/p/10324287.html
Copyright © 2011-2022 走看看