0


五十八、Ubuntu搭建hadoopHA高可用(从零开始)

环境准备

编号主机名类型用户IP1master主节点root192.168.231.2472slave1从节点root192.168.231.2483slave2从节点root192.168.231.249

环境搭建

一、基础配置

  1. 1、安装VMware tools

将其复制到桌面

  1. 注:遇到提示按 '回车' 键,遇到 'yes/no' 输入yes

安装完成Tools后的效果如图

  1. 2、修改root密码

  1. 3、更新 apt,安装vim编译器
  1. apt-get update
  2. apt-get install vim

  1. 注:vim 编译器相对于 vi 编译器 对用户来说更友好,使用便捷,且有高亮关键字的功能
  1. 4、安装ssh服务
  1. apt-get install openssh-server

  1. 5、修改ssh配置文件,允许root远程登录
  1. vim /etc/ssh/sshd_config

更改前:

更改后:

  1. 注:将 prohibit-password 更改为 yes
  1. 6、去掉初始询问
  1. vi /etc/ssh/ssh_config

更改前:

更改后:

  1. 7、关闭防火墙
  1. ufw disable
  2. ufw status

  1. 8、环境配置

(1)修改hosts文件

  1. vim /etc/hosts

(2)添加环境变量

  1. vim /etc/profile

(3)解压 jdk

  1. tar -zxvf jdk1.8.0_221.tar.gz -C /usr/local/src/

重命名其名称为 jdk

  1. mv jdk1.8.0_221 jdk

(4)hadoop配置

  1. tar -zxvf hadoop-2.7.1.tar.gz -C /usr/local/

重命名其名称为hadoop

  1. mv hadoop-2.7.1 hadoop

在hadoop安装目录下创建 tmp 和 logs目录

在tmp目录下创建 data 和 name 和 journal 目录

进入hadoop配置文件目录进行修改配置文件

hadoop-env.sh core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml yarn-env.sh slaves

其中hadoop-env.sh 与 yarn-env.sh 只需要修改其中的 jdk 路径

hadoop-env.sh

yarn-env.sh

  1. 注:yarn-env.sh 文件中jdk路径需要去掉注释,否则无法生效

core-site.xml

  1. <configuration>
  2. <property>
  3. <name>fs.defaultFS</name>
  4. <value>hdfs://mycluster</value>
  5. </property>
  6. <property>
  7. <name>hadoop.tmp.dir</name>
  8. <value>/usr/local/hadoop/tmp</value>
  9. </property>
  10. <property>
  11. <name>ha.zookeeper.quorum</name>
  12. <value>master:2181,slave1:2181,slave2:2181</value>
  13. </property>
  14. <property>
  15. <name>ha.zookeeper.session-timeout.ms</name>
  16. <value>30000</value>
  17. <description>ms</description>
  18. </property>
  19. <property>
  20. <name>fs.trash.interval</name>
  21. <value>1440</value>
  22. </property>
  23. </configuration>

hdfs-site.xml

  1. <configuration>
  2. <property>
  3. <name>dfs.qjournal.start-segment.timeout.ms</name>
  4. <value>60000</value>
  5. </property>
  6. <property>
  7. <name>dfs.nameservices</name>
  8. <value>mycluster</value>
  9. </property>
  10. <property>
  11. <name>dfs.ha.namenodes.mycluster</name>
  12. <value>master,slave1</value>
  13. </property>
  14. <property>
  15. <name>dfs.namenode.rpc-address.mycluster.master</name>
  16. <value>master:9000</value>
  17. </property>
  18. <property>
  19. <name>dfs.namenode.rpc-address.mycluster.slave1</name>
  20. <value>slave1:9000</value>
  21. </property>
  22. <property>
  23. <name>dfs.namenode.http-address.mycluster.master</name>
  24. <value>master:50070</value>
  25. </property>
  26. <property>
  27. <name>dfs.namenode.http-address.mycluster.slave1</name>
  28. <value>slave1:50070</value>
  29. </property>
  30. <property>
  31. <name>dfs.namenode.shared.edits.dir</name>
  32. <value>qjournal://master:8485;slave1:8485;slave2:8485/mycluster</value>
  33. </property>
  34. <property>
  35. <name>dfs.client.failover.proxy.provider.mycluster</name>
  36. <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
  37. </property>
  38. <property>
  39. <name>dfs.ha.fencing.methods</name>
  40. <value>
  41. sshfence
  42. shell(/bin/true)
  43. </value>
  44. </property>
  45. <property>
  46. <name>dfs.permissions.enabled</name>
  47. <value>false</value>
  48. </property>
  49. <property>
  50. <name>dfs.support.append</name>
  51. <value>true</value>
  52. </property>
  53. <property>
  54. <name>dfs.ha.fencing.ssh.private-key-files</name>
  55. <value>/root/.ssh/id_rsa</value>
  56. </property>
  57. <property>
  58. <name>dfs.replication</name>
  59. <value>2</value>
  60. </property>
  61. <property>
  62. <name>dfs.namenode.name.dir</name>
  63. <value>/usr/local/hadoop/tmp/name</value>
  64. </property>
  65. <property>
  66. <name>dfs.datanode.data.dir</name>
  67. <value>/usr/local/hadoop/tmp/data</value>
  68. </property>
  69. <property>
  70. <name>dfs.journalnode.edits.dir</name>
  71. <value>/usr/local/hadoop/tmp/journal</value>
  72. </property>
  73. <property>
  74. <name>dfs.ha.automatic-failover.enabled</name>
  75. <value>true</value>
  76. </property>
  77. <property>
  78. <name>dfs.webhdfs.enabled</name>
  79. <value>true</value>
  80. </property>
  81. <property>
  82. <name>dfs.ha.fencing.ssh.connect-timeout</name>
  83. <value>30000</value>
  84. </property>
  85. <property>
  86. <name>ha.failover-controller.cli-check.rpc-timeout.ms</name>
  87. <value>60000</value>
  88. </property>
  89. </configuration>

mapred-site.xml

  1. <configuration>
  2. <property>
  3. <name>mapreduce.framework.name</name>
  4. <value>yarn</value>
  5. </property>
  6. <property>
  7. <name>mapreduce.jobhistory.address</name>
  8. <value>master:10020</value>
  9. </property>
  10. <property>
  11. <name>mapreduce.jobhistory.webapp.address</name>
  12. <value>master:19888</value>
  13. </property>
  14. </configuration>

yarn-site.xml

  1. <configuration>
  2. <property>
  3. <name>yarn.resourcemanager.ha.enabled</name>
  4. <value>true</value>
  5. </property>
  6. <property>
  7. <name>yarn.resourcemanager.cluster-id</name>
  8. <value>yrc</value>
  9. </property>
  10. <property>
  11. <name>yarn.resourcemanager.ha.rm-ids</name>
  12. <value>rm1,rm2</value>
  13. </property>
  14. <property>
  15. <name>yarn.resourcemanager.hostname.rm1</name>
  16. <value>master</value>
  17. </property>
  18. <property>
  19. <name>yarn.resourcemanager.hostname.rm2</name>
  20. <value>slave1</value>
  21. </property>
  22. <property>
  23. <name>yarn.resourcemanager.zk-address</name>
  24. <value>master:2181,slave1:2181,slave2:2181</value>
  25. </property>
  26. <property>
  27. <name>yarn.nodemanager.aux-services</name>
  28. <value>mapreduce_shuffle</value>
  29. </property>
  30. <property>
  31. <name>yarn.log-aggregation-enable</name>
  32. <value>true</value>
  33. </property>
  34. <property>
  35. <name>yarn.log-aggregation.retain-seconds</name>
  36. <value>86400</value>
  37. </property>
  38. <property>
  39. <name>yarn.resourcemanager.recovery.enabled</name>
  40. <value>true</value>
  41. </property>
  42. <property>
  43. <name>yarn.resourcemanager.store.class</name>
  44. <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
  45. </property>
  46. </configuration>

slaves

  1. master
  2. slave1
  3. slave2

(5)zookeeper配置

解压zookeeper

  1. tar -zxvf zookeeper-3.4.8.tar.gz -C /usr/local/src/

重命名其名称为zookeeper

  1. mv zookeeper-3.4.8 zookeeper

在zookeeper安装目录下创建 logs 目录和 data 目录

在data目录下创建myid文件并写入内容 “1”

进入zookeeper/conf目录下,重命名 zoo_sample.cfg 为 zoo.cfg

编辑zoo.cfg文件

修改前:

修改后:

二、三台机器集群搭建

  1. 1、关机状态下克隆出另外两台虚拟机

  1. 2、三台机器分别修改静态IP

  1. 3、重启三台机器网络服务
  1. service networking restart
  1. 4、内网与外网的检查

  1. 5、三台机器分别修改其主机名
  1. hostnamectl set-hostname master
  2. hostnamectl set-hostname slave1
  3. hostnamectl set-hostname slave2
  1. 6、修改其他两台机器zookeeper/data/myid文件分别为23

  1. 7、重启三台机器
  1. reboot
  1. 8、设置ssh免密

生成密钥

  1. ssh-keygen -t rsa

分发密钥

  1. ssh-copy-id 192.168.231.248
  2. ssh-copy-id 192.168.231.249

  1. 9、使三台机器的环境变量生效
  1. source /etc/profile
  1. 10、启动三台机器的zookeeper集群
  1. bin/zkServer.sh start
  1. bin/zkServer.sh status

  1. 11、格式化zookeeperHA中的状态
  1. bin/hdfs zkfc -formatZK

  1. 12、启动三台机器的 journalnode进程
  1. sbin/hadoop-daemon.sh start journalnode

  1. 13、格式化namenode
  1. bin/hdfs namenode -format

  1. 注:观察是否有报错信息,status是否为00即为初始化成功,1则报错,检查配置文件是否有误
  1. 14、启动hadoop所有进程
  1. sbin/start-all.sh

  1. 15、格式化主从节点

复制namenode元数据到从节点

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

  1. 注:由于之前namenode,datanode,journalnode的数据全部存放在hadoop/tmp目录下,所以直接复制 tmp 目录至从节点
  1. 16、启动slave1resourcemanager namenode 进程
  1. sbin/yarn-daemon.sh start resourcemanager
  1. sbin/hadoop-daemon.sh start namenode

  1. 17、访问 resourcemanager namenode web页面

  1. 18、杀死master端的namenode(模拟master宕机后HA的故障转移)
  1. kill -9 (namenode进程号)

  1. 注: 可见,在naster宕机后,slave自动接替了master的工作,成为活跃状态,此为HA 的故障转移机制
  1. 19、重启master端的namenode进程,观察工作状态
  1. sbin/hadoop-daemon.sh start namenode

  1. 注:可见,在master重新恢复状态后,slave依然为active状态,master为备用状态

链接参考

Centos搭建hadoopHA高可用https://blog.csdn.net/m0_54925305/article/details/121566611?spm=1001.2014.3001.5502HadoopHA工作机制高可用理论https://blog.csdn.net/m0_54925305/article/details/119838341?spm=1001.2014.3001.5502

更多环境搭建参见主页

托马斯-酷涛的博客主页https://blog.csdn.net/m0_54925305?type=blog

每日一悟:将时间和精力投资于自己一定是一笔稳赚不赔的交易

** --托马斯**


标签: hadoop ubuntu 运维

本文转载自: https://blog.csdn.net/m0_54925305/article/details/122267734
版权归原作者 托马斯-酷涛 所有, 如有侵权,请联系我们删除。

“五十八、Ubuntu搭建hadoopHA高可用(从零开始)”的评论:

还没有评论