当前位置:   article > 正文

hadoop3.0高可用分布式集群安装_hadoop3.0高可用集群搭建

hadoop3.0高可用集群搭建

hadoop高可用,依赖于zookeeper。

用于生产环境, 企业部署必须的模式.

1. 部署环境规划

1.1. 虚拟机及hadoop角色划分

主机名称

namenode

datanode

resourcemanager

nodemanager

zkfc

journalnode

zookeeper

master

slave1

slave2

1.2. 软件版本

java

jdk-1.8

Hadoop

3.3.0

zookeeper

3.7.0

1.3. 数据目录规划

名称

目录

namenode目录

/data/hadoop/dfs/name

datanode目录

/data/hadoop/dfs/data

hadoop临时目录

/data/hadoop/tmp

zookeeper数据目录

/data/zookeeper/data

2. 免密登录

3. 安装jdk

4. zookeeper安装

4.1. 解压

解压到目录/usr/local/ 下

tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz -C /usr/local/zookeeper

4.2. 环境配置

  1. cat>>/etc/profile <<EOF
  2. export ZOOKEEPER_HOME=/usr/local/zookeeper/apache-zookeeper-3.7.0-bin
  3. export PATH=\$ZOOKEEPER_HOME/bin:\$PATH
  4. EOF
  5. source /etc/profile
  6. #创建数据/日志目录
  7. mkdir -pv /data/zookeeper/{data,log}

4.3. 修改配置文件

  1. cd /usr/local/zookeeper/apache-zookeeper-3.7.0-bin/conf/
  2. cp zoo_sample.cfg zoo.cfg

修改zoo.cfg配置文件

  1. dataDir=/data/zookeeper/data/
  2. dataLogDir=/data/zookeeper/log/
  3. server.1=master:2888:3888
  4. server.2=slave1:2888:3888
  5. server.3=slave2:2888:3888

分发到slave1,slave2节点

  1. scp zoo.cfg slave1:/usr/local/zookeeper/apache-zookeeper-3.7.0-bin/conf/
  2. scp zoo.cfg slave2:/usr/local/zookeeper/apache-zookeeper-3.7.0-bin/conf/

4.4. 创建myid

根据服务器对应的数字,配置相应的myid,master配置1,slave1配置2,slave2配置3

  1. #各节点配置,根据server.1就是1
  2. echo 1 > /data/zookeeper/data/myid

4.5. 启动zookeeper

各个节点启动

  1. zkServer.sh start
  2. zkServer.sh status

5. hadoop安装

5.1. 解压

tar -zxvf hadoop-3.3.0.tar.gz -C /usr/local/

5.2. 环境配置

环境配置(所有节点都执行),root用户执行

  1. chown -R hadoop:hadoop /usr/local/hadoop-3.3.0
  2. cat>>/etc/profile <<EOF
  3. export HADOOP_HOME=/usr/local/hadoop-3.3.0
  4. export PATH=\$HADOOP_HOME/bin:\$HADOOP_HOME/sbin:\$PATH
  5. EOF
  6. source /etc/profile

5.3. 修改配置文件

5.3.1. hadoop-env.sh
  1. cd $HADOOP_HOME/etc/hadoop
  2. vi hadoop-env.sh
  3. export JAVA_HOME=/usr/java/jdk1.8.0_311
5.3.2. core-site.xml
  1. <configuration>
  2. <!-- HDFS主入口,mycluster仅是作为集群的逻辑名称,可随意更改但务必与hdfs-site.xml中dfs.nameservices值保持一致 -->
  3. <property>
  4. <name>fs.defaultFS</name>
  5. <value>hdfs://mycluster/</value>
  6. </property>
  7. <property>
  8. <name>hadoop.tmp.dir</name>
  9. <value>/data/hadoop/tmp</value>
  10. <description>namenode上本地的hadoop临时文件夹</description>
  11. </property>
  12. <!-- zookeeper集群地址,这里只配置了单台,如是集群以逗号进行分隔 -->
  13. <property>
  14. <name>ha.zookeeper.quorum</name>
  15. <value>master:2181,slave1:2181,slave2:2181</value>
  16. <description>指定zookeeper地址</description>
  17. </property>
  18. <property>
  19. <name>ha.zookeeper.session-timeout.ms</name>
  20. <value>1000</value>
  21. <description>hadoop链接zookeeper的超时时长设置ms</description>
  22. </property>
  23. </configuration>
5.3.3. hdfs-site.xml
  1. <configuration>
  2. <!-- 副本数配置 -->
  3. <property>
  4. <name>dfs.replication</name>
  5. <value>2</value>
  6. <description>Hadoop的备份系数是指每个block在hadoop集群中有几份,系数越高,冗余性越好,占用存储也越多</description>
  7. </property>
  8. <property>
  9. <name>dfs.namenode.name.dir</name>
  10. <value>/data/hadoop/dfs/name</value>
  11. <description>namenode上存储hdfs名字空间元数据 </description>
  12. </property>
  13. <property>
  14. <name>dfs.datanode.data.dir</name>
  15. <value>/data/hadoop/dfs/data</value>
  16. <description>datanode上数据块的物理存储位置</description>
  17. </property>
  18. <property>
  19. <name>dfs.webhdfs.enabled</name>
  20. <value>true</value>
  21. </property>
  22. <!--指定hdfs的nameservice为mycluster,需要和core-site.xml中的保持一致
  23. dfs.ha.namenodes.[nameservice id]为在nameservice中的每一个NameNode设置唯一标示符。
  24. 配置一个逗号分隔的NameNode ID列表。这将是被DataNode识别为所有的NameNode。
  25. 例如,如果使用"mycluster"作为nameservice ID,并且使用"nn1""nn2"作为NameNodes标示符
  26. -->
  27. <property>
  28. <name>dfs.nameservices</name>
  29. <value>mycluster</value>
  30. </property>
  31. <!-- myha01下面有两个NameNode,分别是nn1,nn2 -->
  32. <property>
  33. <name>dfs.ha.namenodes.mycluster</name>
  34. <value>nn1,nn2</value>
  35. </property>
  36. <!-- nn1的RPC通信地址 -->
  37. <property>
  38. <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  39. <value>master:9000</value>
  40. </property>
  41. <!-- nn1的http通信地址 -->
  42. <property>
  43. <name>dfs.namenode.http-address.mycluster.nn1</name>
  44. <value>master:50070</value>
  45. </property>
  46. <!-- nn2的RPC通信地址 -->
  47. <property>
  48. <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  49. <value>slave1:9000</value>
  50. </property>
  51. <!-- nn2的http通信地址 -->
  52. <property>
  53. <name>dfs.namenode.http-address.mycluster.nn2</name>
  54. <value>slave1:50070</value>
  55. </property>
  56. <!-- 指定NameNode的edits元数据的共享存储位置。也就是JournalNode列表
  57. 该url的配置格式:qjournal://host1:port1;host2:port2;host3:port3/journalId
  58. journalId推荐使用nameservice,默认端口号是:8485 -->
  59. <property>
  60. <name>dfs.namenode.shared.edits.dir</name>
  61. <value>qjournal://master:8485;slave1:8485;slave2:8485/mycluster</value>
  62. </property>
  63. <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
  64. <property>
  65. <name>dfs.journalnode.edits.dir</name>
  66. <value>/data/hadoop/data/journaldata</value>
  67. </property>
  68. <!-- 开启NameNode失败自动切换 -->
  69. <property>
  70. <name>dfs.ha.automatic-failover.enabled</name>
  71. <value>true</value>
  72. </property>
  73. <!-- 配置失败自动切换实现方式 -->
  74. <property>
  75. <name>dfs.client.failover.proxy.provider.mycluster</name>
  76. <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  77. </property>
  78. <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行 -->
  79. <property>
  80. <name>dfs.ha.fencing.methods</name>
  81. <value>
  82. sshfence
  83. shell(/bin/true)
  84. </value>
  85. </property>
  86. <!-- 使用sshfence隔离机制时需要ssh免登陆 -->
  87. <property>
  88. <name>dfs.ha.fencing.ssh.private-key-files</name>
  89. <value>/home/root/.ssh/id_rsa</value>
  90. </property>
  91. <!-- 配置sshfence隔离机制超时时间 -->
  92. <property>
  93. <name>dfs.ha.fencing.ssh.connect-timeout</name>
  94. <value>30000</value>
  95. </property>
  96. <property>
  97. <name>ha.failover-controller.cli-check.rpc-timeout.ms</name>
  98. <value>60000</value>
  99. </property>
  100. </configuration>
5.3.4. mapred-site.xml
  1. <configuration>
  2. <property>
  3. <name>mapreduce.framework.name</name>
  4. <value>yarn</value>
  5. <description>The runtime framework for executing MapReduce jobs. Can be one of local, classic or yarn.</description>
  6. <final>true</final>
  7. </property>
  8. <property>
  9. <name>mapreduce.jobtracker.http.address</name>
  10. <value>master:50030</value>
  11. </property>
  12. <property>
  13. <name>mapreduce.jobhistory.address</name>
  14. <value>master:10020</value>
  15. </property>
  16. <property>
  17. <name>mapreduce.jobhistory.webapp.address</name>
  18. <value>master:19888</value>
  19. </property>
  20. <property>
  21. <name>mapred.job.tracker</name>
  22. <value>http://master:9001</value>
  23. </property>
  24. </configuration>
5.3.5. yarn-site.xml
  1. <configuration>
  2. <!-- 开启RM高可用 -->
  3. <property>
  4. <name>yarn.resourcemanager.ha.enabled</name>
  5. <value>true</value>
  6. </property>
  7. <!-- 指定RM的cluster id -->
  8. <property>
  9. <name>yarn.resourcemanager.cluster-id</name>
  10. <value>yrc</value>
  11. </property>
  12. <!-- 指定RM的名字 -->
  13. <property>
  14. <name>yarn.resourcemanager.ha.rm-ids</name>
  15. <value>rm1,rm2</value>
  16. </property>
  17. <!-- 分别指定RM的地址 -->
  18. <property>
  19. <name>yarn.resourcemanager.hostname.rm1</name>
  20. <value>slave1</value>
  21. </property>
  22. <property>
  23. <name>yarn.resourcemanager.hostname.rm2</name>
  24. <value>slave2</value>
  25. </property>
  26. <!-- 指定zk集群地址 -->
  27. <property>
  28. <name>yarn.resourcemanager.zk-address</name>
  29. <value>master:2181,slave1:2181,slave2:2181</value>
  30. </property>
  31. <property>
  32. <name>yarn.nodemanager.aux-services</name>
  33. <value>mapreduce_shuffle</value>
  34. </property>
  35. <property>
  36. <name>yarn.log-aggregation-enable</name>
  37. <value>true</value>
  38. </property>
  39. <property>
  40. <name>yarn.log-aggregation.retain-seconds</name>
  41. <value>86400</value>
  42. </property>
  43. <!-- 启用自动恢复 -->
  44. <property>
  45. <name>yarn.resourcemanager.recovery.enabled</name>
  46. <value>true</value>
  47. </property>
  48. <!-- 制定resourcemanager的状态信息存储在zookeeper集群上 -->
  49. <property>
  50. <name>yarn.resourcemanager.store.class</name>
  51. <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
  52. </property>
  53. <property>
  54. <name>yarn.application.classpath</name>
  55. <value>/usr/local/hadoop-3.3.0/etc/hadoop:/usr/local/hadoop-3.3.0/share/hadoop/common/lib/*:/usr/local/hadoop-3.3.0/share/hadoop/common/*:/usr/local/hadoop-3.3.0/share/hadoop/hdfs:/usr/local/hadoop-3.3.0/share/hadoop/hdfs/lib/*:/usr/local/hadoop-3.3.0/share/hadoop/hdfs/*:/usr/local/hadoop-3.3.0/share/hadoop/mapreduce/*:/usr/local/hadoop-3.3.0/share/hadoop/yarn:/usr/local/hadoop-3.3.0/share/hadoop/yarn/lib/*:/usr/local/hadoop-3.3.0/share/hadoop/yarn/*</value>
  56. </property>
  57. </configuration>
5.3.6. workers

vim workers

  1. master
  2. slave1
  3. slave2

5.4. 分发到其他服务器

  1. scp -r /usr/local/hadoop-3.3.0/ slave1:/usr/local/
  2. scp -r /usr/local/hadoop-3.3.0/ slave2:/usr/local/

6. 启动集群

以下顺序不能错

启动jouranlnode --》 格式化namenode --》同步namenode信息--》格式化zk--》 启动zk--》启动集群

6.1. 启动journalnode(所有节点)

hadoop-daemon.sh start journalnode

6.2. 格式化namenode

在master上执行

hadoop namenode -format

6.3. 同步元数据

在slave1上执行

hdfs namenode –bootstrapStandby

6.4. 格式化zkfc(master)

hdfs zkfc -formatZK

6.5. 启动zkfc

3台主机上

hadoop-daemon.sh start zkfc

6.6. 启动HDFS(master)

start-dfs.sh

6.7. 查看各主节点状态hdfs/yarn

  1. hdfs haadmin -getServiceState nn1
  2. hdfs haadmin -getServiceState nn2
  3. yarn rmadmin -getServiceState rm1
  4. yarn rmadmin -getServiceState rm2

7. 查看页面

hdfs:http://master:9870

接付费咨询,调bug, 10元一次。+v:644789108

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/855674
推荐阅读
相关标签
  

闽ICP备14008679号