在写文章之前,笔者先记录下昨天遇到的问题。
我一共起了三台机器,在手动启动nn和dn的时候整个集群正常。但使用start-dfs.sh命令来启动的时候,若dn1启动,则dn2不启动,反之,dn2启动dn1不启动。手动启动未启动的那一台dn,整个集群恢复正常。start-dfs.sh只能带起来两台dn的其中一台dn。
尝试若干办法无果,在配置ssh免密登陆后,发现,上述问题被解决。应该是密码验证问题,我的三台机器密码都是一致的,若出现上述问题,配置ssh免密之后即可解决。
配置SSH免密登录
在上一步骤中,每次都需要输入密码,非常麻烦,故需要配置一下SSH的免密登录。
执行如下步骤:
ls -la
cd .ssh
ssh-keygen -t rsa (四个回车)
利用ssh-copy-id slaveX命令把生成的公钥copy到其他的节点上。
copy应该不再需要密码
重新使用start-dfs.sh启动集群
此时执行启动命令,则还是需要输入主节点的密码,故也需要把公钥拷贝一份到自己的主节点上(为了安全性,笔者不在主节点拷贝公钥,即每次启动dfs只需输入一次密码。)
基本操作
使用hdfs dfs 或者hadoop fs命令对文件进行增删改查的操作
hadoop fs -ls /
hadoop fs -put file /
hadoop fs -mkdir /dirname
hadoop fs -text /filename
hadoop fs -rm /filename
动态扩展
设定dfs.namenode.heartbeat.recheck-interval为10000,然后停掉其中一台slave,观察自动复制情况。
启动停掉的slave节点,通过网页观察datanode的动态添加
横向扩展
添加新的节点,步骤如下:
启动slave3,关闭防火墙,修改hostname
修改etc/hosts,加入对自己以及其他机器的解析,重启网络
在master中设定对于slave3的解析
启动slave3的datanode,通过网页进行观察
hdfs dfsadmin –shutdownDatanode slave3:50020