通过对Hadoop的学习和使用一段时间后,都是用自己的电脑内的虚拟机,那么接下来尝试连接其他电脑,巩固环境搭建。同时也为了能学习HDFS的纠删码和异构存储(自己的电脑同时开四台以上的虚拟机会出现一些问题)。
虚拟机准备
先克隆常用的三台虚拟机,修改名称,以便区分。
再克隆两台原始虚拟机,通过网络共享传输给另一台电脑。同样更改名称,以便区分。
修改每台虚拟机的网络连接模式为桥接模式
获取网络信息
打开路由器找到路由器局域网ip池和DNS(局域网),一般在路由器参数中。
在cmd中使用命令:ipconfig -all 也能得到DNS和网关。
Xshell配置
xshell的配置很简单,新建五个会话,分别把名称和主机ip填入。
再把登录信息填写上。外观随意调一下。
配置Hadoop环境
五台虚拟机都要修改。
虚拟机配置:
/etc/hostname 修改主机名
/etc/hosts 修改ip地址映射
/etc/sysconfig/network-scripts/ifcfg-ens33
修改IPADDR(从局域网的ip池中选一个未被占用的ip)、GATEWAY(用上面获得网关)、DNS。
java和hadoop的环境变量不做改动。
修改hadoop:
core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml 把ip/主机名更改成现在的
如果是高可用还需要修改如下内容:
core-site.xml:ha.zookeeper.quorum 添加两个新机器地址,用逗号分割,不能有空格。
yarn-site.xml:yarn.resourcemanager.zk-address 和yarn.resourcemanager.zk.state-store.address两者 内容和core-site.xml的ha.zookeeper.quorum一致。
*修改zookeeper:
zookeeper-3.5.7/conf目录下的配置文件添加新机器,注意格式 server.id=主机名/IP:2888:3888
修改zoo.cfg dataDir所指向目录下的myid文件(用来明确当前机器的id的文件),填写刚配置的 server.id=主机名/IP:2888:3888的id即可
配置windows的IP地址映射
打开C:\Windows\System32\drivers\etc 路径下的hosts
添加和虚拟机中hosts文件一样的内容。
启动集群
非高可用:
启动HDFS:
sbin/start-dfs.sh
启动Yarn:
sbin/start-yarn.sh
启动historyserver:
mapred --daemon start historyserver
高可用:
启动zookeeper:
zookeeper-3.5.7/bin/zkServer.sh start
启动HDFS:
sbin/start-dfs.sh
启动Yarn:
sbin/start-yarn.sh
启动historyserver:
mapred --daemon start historyserver
启动后用jps查看是否所有服务都启动了。
集群启动失败的大体解决方法
非高可用
删除core-site.xml中hadoop.tmp.dir指定的目录和logs目录,集群机器全都删除。
使用hdfs namenode -format重新格式化,再启动集群。
高可用
删除core-site.xml中hadoop.tmp.dir指定的目录和logs目录,集群机器全都删除;所有机器
启动zookeeper 命令:/bin/zkServer.sh start(在zookeeper根目录下执行命令)和journalnode 命令:hdfs --daemon start journalnode。
删除dfs.journalnode.edits.dir设置目录下的所有内容(未设置默认/tmp/hadoop/dfs/journalnode/)。
在其中一个namenode节点使用hdfs namenode -format重新格式化,格式化后会生成一个新文件夹(hadoop.tmp.dir所配置的文件),用scp (scp local_file remote_username@remote_ip:remote_folder ) 或者rsync(rsync -av local_file remote_username@remote_ip:remote_folder)命令传给另一个namenode节点;启动集群。
如果还是有无法启动的服务,可以看:致那时那刻,所犯下的错——Hadoop错误集锦