1、环境介绍

涉及到软件下载地址:https://pan.baidu.com/s/1hpcXUSJe85EsU9ara48MsQ

服务器:CentOS 6.8 其中:2 台 namenode、3 台 datanode

zookeeper集群地址:192.168.67.11:2181,192.168.67.12:2181

JDK:jdk-8u191-linux-x64.tar.gz

hadoop:hadoop-3.1.1.tar.gz

节点信息:

节点 IP namenode datanode resourcemanager journalnode
namenode1 192.168.67.101  
namenode2 192.168.67.102  
datanode1 192.168.67.103    
datanode2 192.168.67.104    
datanode3 192.168.67.105    

2、配置ssh免密登陆

2.1 在每台机器上执行 ssh-keygen -t rsa

2.2 vim ~/.ssh/id_rsa.pub 将所有机器上的公钥内容汇总到 authorized_keys 文件并分发到每台机器上。

2.3 授权 chmod 600 ~/.ssh/authorized_keys

3、配置hosts:

vim /etc/hosts#增加如下配置
192.168.67.101 namenode1
192.168.67.102 namenode2
192.168.67.103 datanode1
192.168.67.104 datanode2
192.168.67.105 datanode3

#将hosts文件分发至其他机器
scp -r /etc/hosts namenode2:/etc/hosts
scp -r /etc/hosts datanode1:/etc/hosts
scp -r /etc/hosts datanode2:/etc/hosts
scp -r /etc/hosts datanode3:/etc/hosts

4、关闭防火墙

service iptables stop
chkconfig iptables off

5、安装JDK

tar -zxvf /usr/local/soft/jdk-8u191-linux-x64.tar.gz -C /usr/local/vim /etc/profile#增加JDK环境变量内容
export JAVA_HOME=/usr/local/jdk1.8.0_191
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

使环境变量生效:source /etc/profile

6、安装hadoop

tar -zxvf /usr/local/soft/hadoop-3.1.1.tar.gz -C /usr/local/
vim /etc/profile#增加hadoop环境变量内容
export HADOOP_HOME=/usr/local/hadoop-3.1.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/lib

使环境变量生效:source /etc/profile

#修改 start-dfs.sh 和 stop-dfs.sh 两个文件,增加配置
vim /usr/local/hadoop-3.1.1/sbin/start-dfs.sh
vim /usr/local/hadoop-3.1.1/sbin/stop-dfs.sh#增加启动用户
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=root
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
HDFS_JOURNALNODE_USER=root
HDFS_ZKFC_USER=root

#修改 start-yarn.sh 和 stop-yarn.sh 两个文件,增加配置
vim /usr/local/hadoop-3.1.1/sbin/start-yarn.sh
vim /usr/local/hadoop-3.1.1/sbin/stop-yarn.sh#增加启动用户
YARN_RESOURCEMANAGER_USER=root
HDFS_DATANODE_SECURE_USER=root
YARN_NODEMANAGER_USER=root

vim /usr/local/hadoop-3.1.1/etc/hadoop/hadoop-env.sh#增加内容
export JAVA_HOME=/usr/local/jdk1.8.0_191
export HADOOP_HOME=/usr/local/hadoop-3.1.1

#修改 workers 文件内容
vim /usr/local/hadoop-3.1.1/etc/hadoop/workers

#替换内容为
datanode1
datanode2
datanode3

vim /usr/local/hadoop-3.1.1/etc/hadoop/core-site.xml#修改为如下配置
<configuration><!-- 指定hdfs的nameservice为nameservice --><property><name>fs.defaultFS</name><value>hdfs://mycluster/</value></property><!-- 指定hadoop临时目录 --><property><name>hadoop.tmp.dir</name><value>file:/usr/local/hadoop-3.1.1/hdfs/temp</value> </property><!-- 指定zookeeper地址 --><property><name>ha.zookeeper.quorum</name><value>192.168.67.1:2181</value></property>
</configuration>

vim /usr/local/hadoop-3.1.1/etc/hadoop/hdfs-site.xml#修改为如下配置
<configuration><property><name>dfs.namenode.name.dir</name><value>file:/usr/local/hadoop-3.1.1/hdfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>file:/usr/local/hadoop-3.1.1/hdfs/data</value></property><property><name>dfs.nameservices</name><value>mycluster</value></property><property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value></property><property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>namenode1:9000</value></property><property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>namenode2:9000</value></property><property><name>dfs.namenode.http-address.mycluster.nn1</name><value>namenode1:50070</value></property><property><name>dfs.namenode.http-address.mycluster.nn2</name><value>namenode2:50070</value></property><!--HA故障切换 --><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property><!-- journalnode 配置 --><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://namenode1:8485;namenode2:8485;datanode1:8485;datanode2:8485;datanode3:8485/mycluster</value></property><property><name>dfs.client.failover.proxy.provider.mycluster</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><!--发生failover时,Standby的节点要执行一系列方法把原来那个Active节点中不健康的NameNode服务给杀掉,这个叫做fence过程。sshfence会通过ssh远程调用fuser命令去找到Active节点的NameNode服务并杀死它--><property><name>dfs.ha.fencing.methods</name><value>shell(/bin/true)</value></property><!--SSH私钥 --><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/root/.ssh/id_rsa</value></property><!--SSH超时时间 --><property><name>dfs.ha.fencing.ssh.connect-timeout</name><value>30000</value></property><!--Journal Node文件存储地址 --><property><name>dfs.journalnode.edits.dir</name><value>/usr/local/hadoop-3.1.1/hdfs/journaldata</value></property><property><name>dfs.qjournal.write-txns.timeout.ms</name><value>60000</value></property>
</configuration>

vim /usr/local/hadoop-3.1.1/etc/hadoop/mapred-site.xml#修改为如下配置
<configuration><!-- 指定mr框架为yarn方式 --><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>

vim /usr/local/hadoop-3.1.1/etc/hadoop/yarn-site.xml#修改为如下配置
<configuration><!-- Site specific YARN configuration properties --><!-- 开启RM高可用 --><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!-- 指定RM的cluster id --><property><name>yarn.resourcemanager.cluster-id</name><value>yrc</value></property><!-- 指定RM的名字 --><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property><!-- 分别指定RM的地址 --><property><name>yarn.resourcemanager.hostname.rm1</name><value>namenode1</value></property><property><name>yarn.resourcemanager.hostname.rm2</name><value>namenode2</value></property><!-- 指定zk集群地址 --><property><name>yarn.resourcemanager.zk-address</name><value>192.168.67.11:2181,192.168.67.12:2181</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>
</configuration>

#将这些修改的文件分发至其他4台服务器中
/usr/local/hadoop-3.1.1/sbin/start-dfs.sh
/usr/local/hadoop-3.1.1/sbin/stop-dfs.sh
/usr/local/hadoop-3.1.1/sbin/start-yarn.sh
/usr/local/hadoop-3.1.1/sbin/stop-yarn.sh
/usr/local/hadoop-3.1.1/etc/hadoop/hadoop-env.sh
/usr/local/hadoop-3.1.1/etc/hadoop/workers
/usr/local/hadoop-3.1.1/etc/hadoop/core-site.xml
/usr/local/hadoop-3.1.1/etc/hadoop/hdfs-site.xml
/usr/local/hadoop-3.1.1/etc/hadoop/mapred-site.xml
/usr/local/hadoop-3.1.1/etc/hadoop/yarn-site.xml

首次启动顺序
1、确保配置的zookeeper服务器已经运行
2、在所有journalnode机器上启动:hadoop-daemon.sh start journalnode
3、namenode1中执行格式化zkfc:hdfs zkfc -formatZK
4、namenode1中格式化主节点:hdfs namenode -format
5、启动namenode1中的主节点:hadoop-daemon.sh start namenode
6、namenode2副节点同步主节点格式化:hdfs namenode -bootstrapStandby
7、启动集群:start-all.sh

7、验证

7.1 访问地址:

http://192.168.67.101/50070/

http://192.168.67.102/50070/

http://192.168.67.101/8088/

http://192.168.67.102/8088/

7.2 关闭 namenode 为 active 对应的服务器,观察另一台 namenode 状态是否由 standby 变更为 active

转载于:https://www.cnblogs.com/lufan2008/p/10312085.html

hadoop3.1.1 HA高可用分布式集群安装部署相关推荐

  1. Hadoop2.2.0 HA高可用分布式集群搭建(hbase,hive,sqoop,spark)

    1 需要软件 Hadoop-2.2.0 Hbase-0.96.2(这里就用这个版本,跟Hadoop-2.2.0是配套的,不用覆盖jar包什么的) Hive-0.13.1 Zookeepr-3.4.6( ...

  2. HBase 1.2.6 完全分布式集群安装部署详细过程

    2019独角兽企业重金招聘Python工程师标准>>> Apache HBase 是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,是NoSQL数据库,基于Google Big ...

  3. SolrCloud 分布式集群安装部署(solr4.8.1 + zookeeper +tomcat)

    SolrCloud 分布式集群安装部署 安装软件包准备 · apache-tomcat-7.0.54 · jdk1.7 · solr-4.8.1 · zookeeper-3.4.5 注:以上软件都是基 ...

  4. Kettle分布式集群安装部署详细步骤和使用分布式Kettle集群示例

    Kettle分布式集群安装部署详细步骤和使用分布式Kettle集群示例 一.下载kettle和mysql驱动 二.相关技术博客 三.Kettle分布式集群环境准备 四.解压kettle 五.执行Kit ...

  5. redis详解(四)-- 高可用分布式集群

    一,高可用 高可用(High Availability),是当一台服务器停止服务后,对于业务及用户毫无影响. 停止服务的原因可能由于网卡.路由器.机房.CPU负载过高.内存溢出.自然灾害等不可预期的原 ...

  6. flink HA高可用Standalone集群搭建

    flink 1.9.2版本搭建的HA JM存在bug: 明明在node01, node02两个节点上都有JM,但是孰是activing,孰是standby状态无法区分.Spark是有明确的状态显示的. ...

  7. yarn 更新_【HDFS篇13】HA高可用 --- YARN-HA集群配置

    放弃很简单,但坚持一定很酷 YARN-HA集群配置 YARN-HA工作机制 1.官方文档 http://hadoop.apache.org/docs/r2.7.2/hadoop-yarn/hadoop ...

  8. Java集群优化——dubbo+zookeeper构建高可用分布式集群

    为什么80%的码农都做不了架构师?>>>    不久前,我们讨论过Nginx+tomcat组成的集群,这已经是非常灵活的集群技术,但是当我们的系统遇到更大的瓶颈,全部应用的单点服务器 ...

  9. Redis实践(二)高可用的集群+哨兵部署

    项目中通常会需要若干台Redis服务器来协同担当起内存数据库的工作,在redis的部署方案上要考虑下面几点: 结构上,单个 Redis 服务器会发生单点故障,而且一台服务器需要承受所有的请求负载. 这 ...

最新文章

  1. android monkey原理_Monkey与Appium的使用
  2. 数组,结构体初始化为0
  3. Git:如何在项目提交历史中查找已删除的文件?
  4. jflash view log_塑胶产品上的“LOG”是怎么来的?
  5. RobotFramework自动化测试框架-Selenium Web自动化(-)-Open Browser和Close Browser
  6. python verilog顶层连线_FPGA中顶层模块与各子模块之间的连接线类型
  7. 400,404,500报错页面总结
  8. 在python编译器中调用JAVA程序——JPype使用总结
  9. remote debugger java,VS2015 远程调试:Remote Debugger
  10. 麻将算法(二)牌型转换以及接牌
  11. VScode输入英文感叹号!没有提示模板!!
  12. ThinkPHP5分页样式
  13. 我们将迎来另一个 VR 寒冬吗?
  14. R语言基础 期中考试
  15. 最实用 DC终极扫盲大辞典! --- 让你对DC完全了解的88条名词解释(一)
  16. Datawhale零基础入门数据挖掘-Task5模型融合
  17. 【C语言】BC62统计数据正负数个数(DAY 4)
  18. 概率分布详解 Bernoulli、Binomial、Beta
  19. Radius协议讲解
  20. 软考信息安全工程师笔记(第二章--密码学基础与应用)

热门文章

  1. 力压华为小米!安兔兔1月安卓性能榜第一名是它!
  2. Flash开发iOS应用全攻略(三)——如何使用iOS开发者授权以及如何申请证书
  3. qt 子窗口写到线程就卡死_QT/C++实现卡通漫画风格化
  4. 准备写一本协议方面的书,谁赞成,谁反对?
  5. python求职者的建议_Python 求职和建议-从认识自己出发
  6. Linux平台音频测试程序
  7. linux curl 特殊字符,遇到问题--curl--- url参数中有+、空格、=、%、、#等特殊符号的导致传参不全 | 易学教程...
  8. 【kafka】kafka InstanceAlreadyExists jmx consumer addMBean registerAppInfo AppInfoParser
  9. 【java】为什么 HashMap 的加载因子是0.75?
  10. 【Elasticsearch】搜索基准测试:RediSearch 与 Elasticsearch