分类 基础操作 下的文章

[基础操作] 上线节点和下线节点步骤参考

一、上线节点

1、将新增节点追加到/etc/hosts中,同步到集群所有节点

2、将新节点生成新的机架信息更新到rack.data中,并同步到集群所有节点

3、将新的节点加入到$HADOOP_CONF_DIR/slaves,$HADOOP_CONF_DIR/hosts/datanode_hosts,$HADOOP_CONF_DIR/hosts/exclude_mapred_hosts,$HADOOP_CONF_DIR/hosts/mapred_hosts中,同步到集群所有节点。

4、刷新NN,RM

刷新NN
hdfs dfsadmin -refreshNodes
刷新RM
yarn rmadmin -refreshNodes

5、启动DN,并继续保持balance,直到达到一定(建议40%)存储左右的容量

Tips1: 因为在机器刚加进集群时,如果该节点启动计算,将会耗费大量的网络带宽,影响在上面跑的Task,从而影响任务,而任务在写数据时,如果来自DN节点的请求,会先在本地写一份数据,再写远程节点,因此不会影响原有任务,当新节点数据达到一定量时,可以启动NM,换句话说,相当于提高了任务的本地化率,降低影响任务的风险.

Tips2: 在Balance同时,我们可以适当的增加某些目录的副本数一定时间后,恢复副本数量,这样可以加快Balance的效率,让节点能够较快的达到平衡状态。

hadoop-daemon.sh start datanode

6、将节点从$HADOOP_CONF_DIR/hosts/exclude_mapred_hosts去掉,刷新yarn rmadmin -refreshNodes,在启动NM

yarn-daemon.sh start nodemanager

二、下线节点

1、将下线节点加入到$HADOOP_CONF_DIR/hosts/exclude_datanode_hosts,$HADOOP_CONF_DIR/hosts/exclude_mapred_hosts中,同步到所有节点,刷新

刷新NN

hdfs dfsadmin -refreshNodes

刷新RM

yarn rmadmin -refreshNodes

2、直到页面Decommissioned: NUM完成,或者 Number of Under-Replicated Blocks变得较小,几乎没变化时,即可完成下线节点

3、节点下线完成后,把节点从slaves,datanode_hosts,exclude_datanode_hosts,exclude_mapred_hosts,mapred_hosts,机架信息中删除对应的机器信息。

其实也就是选择适合的方式把集群的变动变到最小,这里只做参考

[基础操作] 新增加NS操作参考

0.前期环境准备

  • 硬件检查确认准备的机器的物理内存是和之前的NameNode一样
  • 打通hadp用户nn1到nn5,nn6的ssh
  • 打通nn5,nn6的hadp用户的双方的ssh,两台机器互通,不需要输入密码
  • 在nn5,nn6新建mapred,yarn用户,并将hadp,yarn,mapred用户加入hadoop组
  • 调整linux网络参数和其余NS的NameNode保持一致
  • 把新增节点的host加入到集群的/etc/hosts

1.找到奇数台机器,并安装配置ZooKeeper(如果共享Zookeeper,跳过此步骤)

zkHost1-zkHost5

sh zkServer.sh start

2.找到奇数台机器,安装配置hadoop,并启动JournalNode

jnHost1-jnHost5

hadoop-daemon.sh start journalnode

3.增加配置(假设添加NS3)

修改core-site.xml(大体需要注意)

    <property>
      <name>fs.defaultFS</name>
      <value>hdfs://ns3</value>
    </property>

如果和原来的NS不共用ZK,修改填写ZK地址

    <property>
       <name>ha.zookeeper.quorum</name>
       <value>zkHost1:2181,zkHost2:2181,zkHost3:2181,zkHost4:2181,zkHost5:2181</value>
    </property>

修改hdfs-site.xml,增加NS3

    <property>
      <name>dfs.nameservices</name>
      <value>ns1,ns2,ns3</value>
    </property>

增加配置

<property>
  <name>dfs.ha.namenodes.ns3</name>
  <value>nn5,nn6</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.ns3.nn5</name>
  <value>nn5Host:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.ns3.nn6</name>
  <value>nn6Host:8020</value>
</property>
<property>
  <name>dfs.namenode.http-address.ns3.nn5</name>
  <value>nn5Host:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.ns3.nn6</name>
  <value>nn6Host:50070</value>
</property>
<property>
    <name>dfs.namenode.servicerpc-address.ns3.nn5</name>
    <value>nn5Host:8021</value>
</property>
<property>
    <name>dfs.namenode.servicerpc-address.ns3.nn6</name>
    <value>nn6Host:8021</value>
</property>
<property>
    <name>dfs.client.failover.proxy.provider.ns3</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

修改JournalNode的上传地址和目录

 <property> 
        <name>dfs.namenode.shared.edits.dir</name> 
        <value>qjournal://jnHost1:8485;jnHost2:8485;jnHost3:8485;jnHost4:8485;jnHost5:8485/ns3</value> 
</property>

4.执行操作

找到ns1的集群cid(例如:CID-338ca6d3-15bb-4941-bb1a-8faa3c3ba79d)

在nn5上指定clusterId执行

hdfs namenode -format -clusterId cid

hadoop-daemon.sh start namenode

在nn6上执行

hdfs namenode -bootstrapStandby

hadoop-daemon.sh start namenode

刷新datanode

cat $HADOOP_CONF_DIR/slaves | xargs -t -i hdfs dfsadmin -refreshNamenodes {}:50020

初始化zkfc目录

hdfs zkfc -formatZK

在两个节点上启动ZKFC

hadoop-daemon.sh start zkfc

滚动重启datanode