写在前面:
大家跟着我之前的文章走过来再看这篇文章
- 首先我们搭建过了单节点的hadoop集群
- 根据我们之前的环境,来搭建
- 如果不是根据我之前的文章走过来的,出现问题一概不看
进入主题:
1.准备安装环境
- 目前咱们已经有hadoop了,就不用准备安装环境了。
2.修改集群环境(不是新增代码,下面贴的是完整的,不是添加上去的,注意)(先配置一台,我配置的是node01)
- vim hadoop-env.sh
-
##直接在文件的最后添加 export JAVA_HOME=/opt/local/jdk1.8.0_261 export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export HDFS_ZKFC_USER=root export HDFS_JOURNALNODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root
3.修改配置文件(不是新增代码,下面贴的是完整的,不是添加上去的,注意)(先配置一台,我配置的是node01)
- vim core-site.xml
-
<property> <name>fs.defaultFS</name> <value>hdfs://hdfs-dsj</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/opt/local/hadoop-3.3.1/ha</value> </property> <property> <name>hadoop.http.staticuser.user</name> <value>root</value> </property> <property> <name>ha.zookeeper.quorum</name> <value>node01:2181,node02:2181,node03:2181</value> </property>
- vim hdfs-site.xml
-
<property> <name>dfs.nameservices</name> <value>hdfs-dsj</value> </property> <property> <name>dfs.ha.namenodes.hdfs-dsj</name> <value>nn1,nn2</value> </property> <property> <name>dfs.namenode.rpc-address.hdfs-dsj.nn1</name> <value>node01:8020</value> </property> <property> <name>dfs.namenode.rpc-address.hdfs-dsj.nn2</name> <value>node02:8020</value> </property> <property> <name>dfs.namenode.http-address.hdfs-dsj.nn1</name> <value>node01:9870</value> </property> <property> <name>dfs.namenode.http-address.hdfs-dsj.nn2</name> <value>node02:9870</value> </property> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://node01:8485;node02:8485;node03:8485/hdfs-dsj</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/opt/local/hadoop-3.3.1/ha/qjm</value> </property> <property> <name>dfs.client.failover.proxy.provider.hdfs-dsj</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> <value>shell(true)</value> </property> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/root/.ssh/id_rsa</value> </property> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property>
4.拷贝分发软件
- 1.目前配置已在node01配置完毕
- 2.将node01节点中的hadoop文件夹中,(full,logs)文件夹删除
- 3.将其他节点上的hadoop删除
- 4.将node01节点的hadoop传到其他节点上面
-
scp -r /opt/local/hadoop-3.3.1 root@node02:/opt/local/ scp -r /opt/local/hadoop-3.3.1 root@node03:/opt/local/
-
5.首先启动Zookeeper
- 注意:三台节点都启动
- zkServer.sh start
- zkServer.sh status
6.启动JournalNode
- 注意:三台节点都运行
- hdfs --daemon start journalnode
7.格式化NameNode
- 在node01上初始化下namenode
- hdfs namenode -format
- 在node01上启动namenode
- hdfs --daemon start namenode
- 将备用节点之间给到node02节点
- hdfs namenode -bootstrapStandby
- 在node01上初始化zkfc
- hdfs zkfc -formatZK
- 在node01上启动集群
- start-dfs.sh
8.测试集群
-
http://node01:9870 http://node02:9870
9.关闭集群
- stop-dfs.sh(node01执行就行)
- zkServer.sh stop(三台都执行)
- jps检查下还有没有进程
10.注意事项:
- 特别注意:测试上面没问题了,那么现在关机,拍摄快照。
- 启动hadoop的时候要先启动zk,因为hadoop的主备切换在zk里做的
- hadoop3.x之前用的是50070,3.x之后用的是9870
完毕。