Hadoop集群中添加datanode节点

随着业务的扩展,公司刚开始的三个节点已经不够用了,因此需要添加datanode。下面记录一下添加datanode节点的步骤:

1、在新的datanode上创建Hadoop运行的用户grid,并修改密码。并修改ip地址和绑定主机名,hosts文件,关闭新节点的防火墙。

我用的是CentOS7的系统,因此修改静态ip地址是:vi  /etc/sysconfig/network-scripts/ifcfg-eno16777736

然后执行 service  network  restart  重启网络。

绑定主机名:vi  /etc/hostname ,修改成自定义的主机名即可。

关闭防火墙:由于centos7用firewalld取代了iptables。因此关闭防火墙的命令是:

systemctl  status  firewalld  查看防火墙的状态

systemctl  stop  firewalld  关闭防火墙

systemctl  disable firewalld  禁止防火墙开机启动,对应的会删除两个文件。 

修改hosts文件:

vi  /etc/hosts

shutdown -r now  重启电脑。

2、 (1)在新的datanode节点上,用grid登录,创建ssh公钥:ssh-keygen -t rsa,

(2)并对产生的公钥id_rsa.pub进行备份:cp id_rsa.pub id_rsa.pub.x  ,这里x表示新添加的节点对应的编码。

(3)并将id_rsa.pub.x发送到主节点上。

       scp -r  id_rsa.pub.x grid@namenode_hostname:/home/grid/.ssh/

3、在主节点上,

(1)将id_rsa.pub.x 拷贝到authorized_keys当中:cat id_rsa.pub.x >>authorized_keys

(2)主节点将authorized_keys分发给所有的节点,包括新的datanode。

scp -r authorized_keys  grid@datanode_hostname1:/home/grid/.ssh/

scp -r authorized_keys  grid@datanode_hostname1:/home/grid/.ssh/

 :

 :

(3)在主节点上,添加新的datanode的ip地址:

vi  /etc/hosts  在该文件中添加新节点的ip地址和主机名

然后将主节点上的hosts文件分发给所有的节点(包括新添加的datanode)。

(4)将主节点的jdk的安装文件、hadoop的安装文件、环境变量的文件/etc/profile 分别都分发给新添加的datanode。

(5)修改主节点上的hadoop的salves文件,添加datanode新节点的主机名。

(6)在新添加的节点上执行 source /etc/profile

(7)在新的节点上执行:
      hadoop-daemon.sh start datanode
      hadoop-daemon.sh start tasktracker

(8)均衡之前的datanode的block,在新的节点上执行:
      start-balancer.sh

 这个会非常耗时
      1)如果不balance,那么cluster会把新的数据都存放在新的node上,这样会降低mapred的工作效率
      2)设置平衡阈值,默认是10%,值越低各节点越平衡,但消耗时间也更长
        [root@slave-004 hadoop]# start-balancer.sh -threshold 5
      3)设置balance的带宽,默认只有1M/s,修改hdfs-site.xml

  <property>
          <name>dfs.balance.bandwidthPerSec</name>
          <value>1048576</value>
        </property>

  

(9)安全模式
    有两个方法离开这种安全模式:
    1)修改dfs.safemode.threshold.pct为一个比较小的值,缺省是0.999。
        dfs.safemode.threshold.pct(缺省值0.999f)
       HDFS启动的时候,如果DataNode上报的block个数达到了元数据记录的block个数的0.999倍才可以离开安全模式,否则一直是这种只读模式。如果设为1则HDFS永远是处于SafeMode。

2)hadoop dfsadmin -safemode leave命令强制离开
        dfsadmin -safemode value 参数value的说明:
        enter - 进入安全模式
        leave - 强制NameNode离开安全模式
        get -  返回安全模式是否开启的信息
        wait - 等待,一直到安全模式结束。

相关推荐