HADOOP 高可用搭建

article/2025/10/12 16:53:57

首先先说一下大概的步骤,就用四台为例,简单适合新手操作。

流程是:创建虚拟机,配置好;搭建linux系统;安装jdk(因为后面好多都依赖jkd);免密登录ssh;安装zookeeper;最后就是搭建高可用了。不熟练的小伙伴可以先试试单机模式。

这是我的四台机子加一个单机模式 。

1.创建虚拟机就不多说了,一直下一步下一步,重复四次创建4个。当然有疑问的可以私聊我,我帮你解决。创建好后就是修改配置

首先输入vi /etc/sysconfig/network-scripts/ifcfg-ens33,回撤

 修改的几个部分我都写出来了。把dhcp(动态分配IP)改成static,最后一次添加IPADDR=192.168.153.135;
 网关 GATEWAY=192.168.153.2;
 子网掩码  NETMASK=255.255.255.0;
 域名解析器 DNS1=8.8.8.8;esc ,  :wq 保存并退出

hostnamectl set-hostname + 名字 可以修改hostname

2.用linux系统安装数据库

1.下载mysql源安装包

$ wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

如果运行错误。先运行

yum  install -y wget   ,然后在运行安装包

2.安装mysql源

$ yum localinstall mysql57-community-release-el7-8.noarch.rpm 

3.检查mysql源是否安装成功

$ yum repolist enabled | grep "mysql.*-community.*"

4.安装MySQL 

这一步才是真正安装mysql

$ yum install mysql-community-server

5.启动MySQL服务并设置开机启动

$ systemctl start mysqld

$ systemctl enable mysqld

$ systemctl daemon-reload

6.端口开放

$ firewall-cmd --zone=public --add-port=3306/tcp --permanent

$ firewall-cmd --reload

7.修改root本地登录密码

 1)查看mysql密码

 grep 'temporary password' /var/log/mysqld.log

localhost:是初始密码;

mysql -uroot -p  登录;

set password for 'root'@'localhost'=password('password');修改密码

set global validate_password_policy=0;  设置密码的等级

set global validate_password_length=1;  设置密码的长度

grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

给权限就登录成功了

3 安装jdk

我写了一个脚本,放在一个文件中,给权限,执行就自动安装了,非常方便

#!/bin/bashjdk=trueinstalldir=/opt/soft
if [ ! -d "$installdir" ]
then mkdir $installdir
fiif [ "$jdk" = true ]
then echo "  ---------安装java JDK------------"tar -zxf /opt/install/jdk-8u111-linux-x64.tar.gz -C /opt/soft/mv /opt/soft/jdk1.8.0_111 /opt/soft/jdk180echo "#jdk" >> /etc/profileecho 'export JAVA_HOME=/opt/soft/jdk180' >> /etc/profileecho 'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /etc/profileecho 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile
fi

运行完后,要source /etc/profile 更新一下

java -version ; javac 检查安装是否成功

4.ssh免密登录 注意的是每次只能生成一次,连接其他机器,断了就要重新生成

1 ssh-keygen -t rsa -P "" 

根据RSA算法生成私钥和公钥

可以用 cd .ssh/

2 拷贝公钥给目标服务器
ssh-copy-id -i .ssh/id_rsa.pub -p22 root@192.168.153.135

3免密登录 ssh -p22 root@192.168.153.***

另外三台,也这么操作,本机也要自连接

5 安装zookeeper集群

1解压zookeeper
tar -zxvf zookeeper-3.4.5-cdh5.14.2.tar.gz -C /opt/soft
改名 mv zookeeper-3.4.5-cdh5.14.2.tar.gz ./ zookeeper345

2修改配置环境
vi  /etc/profile
export ZOOKEEPER_HOME=/opt/soft/zookeeper345
export PATH=$PATH:$ZOOKEEPER_HOME/bin
source /etc/profile

3修改 zoo.cfg
dataDir=/opt/soft/zookeeper345/datatmp  //新建datatmp
clientPort=2181
server.1=192.168.153.150:2888:3888
server.2=192.168.153.160:2888:3888     //一般写三个
server.3=192.168.153.170:2888:3888

4 在zookeeper345/ 下新建:datatmp,再建一个myid  写server对应的数字

6.高可用搭建

1 解压 tar -zxvf hadoop-2.6.0-cdh5.14.2.tar.gz -C ../soft  

改名 mv  -zxvf hadoop-2.6.0-cdh5.14.2.tar ./ hadoop260

2 到/hadoop260/etc/hadoop    ls查询目录

配置 hadoop.env.sh  mapred.env.sh yarn.env.sh  三个环境 
修改 JAVA_HOME= /opt/soft/jdk180 (jdk的安装路径)

3修改 core-site.xml   hdfs-site.xml   mapred-site.xml  yarn-site.xml 和slaves 重中之重

core-site.xml  
<!-- 指定hdfs的nameservice 为 mycluster --><property><name>fs.defaultFS</name><value>hdfs://mycluster/</value></property><!-- 指定hadoop工作目录 --><property><name>hadoop.tmp.dir</name><value>/opt/soft/hadoop260/hadooptmp/</value></property><!-- 指定zookeeper集群访问地址 --><property><name>ha.zookeeper.quorum</name><value>yy150:2181,yy160:2181,yy170:2181</value></property><!-- 配置为了解决以后其他组件连接HDFS集群  --><property><name>hadoop.proxyuser.bigdata.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.bigdata.groups</name><value>*</value></property>
hdfs-site.xml<!-- 指定HDFS的nameservices为mycluster,需要跟core-site.xml中保持一致 --><property><name>dfs.nameservices</name><value>mycluster</value></property><!-- 设置mycluster集群有两个namenode, 分别为nn1,nn2 --><property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value></property><!-- 配置nn1 的RPC通信地址 --><property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>yy150:9000</value></property><!-- 配置nn1的http通信地址 --><property><name>dfs.namenode.http-address.mycluster.nn1</name><value>yy150:50070</value></property><!-- 配置nn2 的RPC通信地址 --><property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>yy160:9000</value></property><!-- 配置nn2的http通信地址 --><property><name>dfs.namenode.http-address.mycluster.nn2</name><value>yy160:50070</value></property><!-- 指定JournalNode 在本地磁盘存放数据的位置 --><property><name>dfs.journalnode.edits.dir</name><value>/opt/soft/hadoop260/journaldata</value></property><!-- 指定NameNode的edits元数据在journalNode上的服务器 --><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://yy150:8485;yy160:8485;yy170:8485/mycluster</value></property><!-- 开启NameNode 自动切换 --><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property><!-- 配置nameNode失败自动切换的实现方式 --><property><name>dfs.client.failover.proxy.provider.mycluster</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><!-- 配置隔离机制方法 --><property><name>dfs.ha.fencing.methods</name><value>sshfenceshell(/bin/true)</value></property><!-- 使用sshfence隔离机制时需要ssh免密登陆 --><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/root/.ssh/id_rsa</value></property><!-- 配置sshfence隔离机制超时时间 --><property><name>dfs.ha.fencing.ssh.connect-timeout</name><value>30000</value></property><property><name>dfs.webhdfs.enabled</name><value>true</value></property>
mapred-site.xml<!-- 指定mapreduce运算时资源调度为 yarn 模式 --><property><name>mapreduce.framework.name</name><value>yarn</value></property><!-- 配置mapreduce历史服务器地址 端口号 --><property><name>mapreduce.jobhistory.address</name><value>yy180:10020</value></property><!-- 配置mapreduce历史服务器WEB访问地址 --><property><name>mapreduce.jobhistory.webapp.address</name><value>yy180:19888</value></property>
yarn-site.xml<!-- Site specific YARN configuration properties --><!-- 开启高可用 --><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!-- 指定ResourceManager的标识:yrc --><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><!-- 指定rm1服务器 --><property><name>yarn.resourcemanager.hostname.rm1</name><value>yy150</value></property><!-- 指定rm2服务器 --><property><name>yarn.resourcemanager.hostname.rm2</name><value>yy160</value></property><!-- 指定rm 被管理的zk 地址 --><property><name>yarn.resourcemanager.zk-address</name><value>yy150:2181,yy160:2181,yy170:2181</value></property><!-- 运行mapreduce任务需要使用的服务 --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 开启yarn集群的日志聚合功能 --><property><name>yarn.log-aggregation-enable</name><value>true</value></property><!-- 设置日志保存时间 --><property><name>yarn.log-aggregation.retain-seconds</name><value>86400</value></property><!-- 启动rm自动恢复功能 --><property><name>yarn.resourcemanager.recovery.enabled</name><value>true</value></property><!-- 制定rm 状态信息存储在zookeeper集群上 --><property><name>yarn.resourcemanager.store.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value></property>

vi ./slaves

yy150  yy160  yy170 yy180  写入的是你四个虚拟机的hostname。

5  配置环境 vi /etc/profile

#hadoop
export HADOOP_HOME=/opt/soft/hadoop260
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

source /etc/profile

6 同步另外三台
xsync  /hadoop260
配置环境,在更新

切记 如果在格式化namenode不成功的时候,要先启动dfs  start-dfs.sh 

7 hadoop namenode -format 格式化namenode
将本机格式化后的hadooptmp文件同步到另一台备用的namenode里
scp -r ./hadooptmp  root@yy160:/opt/soft/hadoop260

8初始化zookeeper(方便两个namenode交替使用)
hdfs zkfc -formatZK

总结:这样就搭建完成了。其实挺简单的,第一搭建就成功了,后面出了一点问题,找bug难死我了,可以和大家分享一下,就是Hadoop配置完成后,格式化namenode的时候一直失败,搞了好久才发现是要先启动start-dfs.sh ,在格式化就成功了,我还以为我写错了呢。有什么问题都可以私聊我,大家一起学习进步


http://chatgpt.dhexx.cn/article/iv4j0EKn.shtml

相关文章

高可用详细概念及三种决策方式分析

文章目录 1.基本概念1.计算高可用2.存储高可用高可用状态决策1.独裁式2.协商式3.民主式 1.基本概念 这个定义的关键在于“无中断”&#xff0c;但恰好难点也在“无中断”上面&#xff0c;因为无论是单个硬件还是单 个软件&#xff0c;都不可能做到无中断&#xff0c;硬件会出故…

Nacos实现高可用

由于Nacos暂不支持Arm架构芯片的Mac集群搭建&#xff0c;本小节用Linxu云主机&#xff08;Nacos比较吃内存&#xff0c;2个Nacos服务器集群&#xff0c;至少2G内存&#xff09;环境演示。 通过前面的学习&#xff0c;我们已经了解了如何使用Nacos以及Nacos的功能等&#xff0c;…

浅谈高可用测试

前言 现今的互联网产品越来越注重可靠性&#xff0c;尤其是在生产环境中使用的系统&#xff0c;对高可用性都有一定的要求。而作为产品的提供方&#xff0c;在交付产品之前&#xff0c;也会对高可用进行验收测试。近期跟进过两个产品曾有高可用测试的需求&#xff0c;在此简单…

nginx高可用

Nginx高可用 为什么要使用nginx的高可用&#xff1a;因为nginx作为反向代理服务器时&#xff0c;有可能出现宕机的情况&#xff0c;而由于其反向代理的特性&#xff0c;就会导致其他服务器&#xff08;tomcat等&#xff09;无法被访问&#xff0c;这样项目就停止工作了。但是使…

RabbitMQ高可用

RabbitMQ高可用 各种消息队列对比使用推荐 RabbitMQ 高可用普通集群模式镜像集群模式保证消息队列的幂等性(消息不被重复消费)消息队列的可靠性传输生产者丢失数据RabbitMQ丢失数据消费者丢失数据 保证消息的顺序性消息积压问题 各种消息队列对比 特性ActiveMQRabbitMQRocketM…

系统高可用

系统高可用 1. 什么是高可用&#xff1f;可用性的判断标准是啥&#xff1f;1.1 可用性的判断标准是啥&#xff1f; 2. 哪些情况会导致系统不可用&#xff1f;3. 有哪些提高系统可用性的方法&#xff1f;3.1 注重代码质量&#xff0c;定时Review代码3.2 使用集群&#xff0c;减少…

HBase高可用

一、HBase高可用简介 HBase集群如果只有一个master&#xff0c;一旦master出现故障&#xff0c;将导致整个集群无法使用&#xff0c;所以在实际的生产环境中&#xff0c;需要搭建HBase的高可用&#xff0c;也就是让HMaster高可用&#xff0c;也就是需要再选择一个或多个节点也…

你管这破玩意儿叫高可用

大家好&#xff0c;我是坤哥 今天我们来聊一下互联网三高&#xff08;高并发、高性能、高可用&#xff09;中的高可用&#xff0c;看完本文相信能解开你关于高可用设计的大部分困惑 前言 高可用&#xff08;High availability&#xff0c;即 HA&#xff09;的主要目的是为了保障…

什么是高可用?高可用介绍:

前言&#xff1a; 高可用&#xff08;High availability&#xff0c;即 HA&#xff09;的主要目的是为了保障「业务的连续性」&#xff0c;即在用户眼里&#xff0c;业务永远是正常&#xff08;或者说基本正常&#xff09;对外提供服务的。高可用主要是针对架构而言&#xff0c…

HTML Responsive Web Page

注&#xff1a;参考网站 https://www.w3schools.com HTML Responsive Web Page index.html <!DOCTYPE html> <html><head><link rel"stylesheet" href"style.css"><title>Responsive web page</title><meta lan…

响应式布局【Responsive】 与 自适应布局 【adaptive】、单页面【SPA】 和多页面【MPA】

1、响应式布局 是一个网址能兼容多个terminate【终端】&#xff0c;而不是为每个终端做一个特定的版本 优点&#xff1a; 用户体验好节约开发时间、节省设计seo友好可以适用所有设备屏幕 缺点 设计与风格有局限性《自由度太低&#xff0c;局部性较大》灵活性有所欠缺 基于不…

Bootstrap:Responsive Design with Bootstrap(一)

1.Use Responsive Design with Bootstrap Fluid Containers 现在让我们回到我们的Cat Photo应用。这次&#xff0c;我们将用流行的响应式框架Bootstrap来美化它。 Bootstrap将会根据你的屏幕的大小来调整HTML元素的大小 —— 强调 响应式设计的概念。 通过响应式设计&#x…

responsive tables

以上内容原本是整理为ppt格式的&#xff0c;贴过来格式有点乱&#xff0c;请见谅。 其他responsive tables参考&#xff1a; http://gergeo.se/RWD-Table-Patterns/ 3种类型的代码参考 unseen column&#xff1a; http://runjs.cn/code/zrhodpx5 flip scroll&#xff1a; ht…

CSS之responsive image gallery

responsive image gallery 这次实例主要是练习如何讲不同的图片设置为一个栏目&#xff0c;并且能够根据屏幕的大小进行自适应的变换。需要注意的是&#xff0c;本次实例中运用到的重要的关键的内容是&#xff1a;float-left&#xff1b;box-sizing; media screen and (max-wi…

html5 响应式表格插件,响应式表格jQuery插件 – Responsive tables

响应式表格jQuery插件 – Responsive tables 4月 24, 2014 评论 (1) Sponsor 这个Responsive tables jQuery插件依赖于Bootstrap 3使用&#xff0c;比BS自带的自适应多了一些好用的功能&#xff0c;比如筛选显示&#xff0c;Focus选定、Table头滑动固定等&#xff0c;下来看看介…

SAP Fiori 设计准则里的 Responsive 表格概述

Responsive Table 是 SAP Fiori 中的默认表控件。 它包含一组 Line item 并且完全响应(fully responsive)。 根据具体情况&#xff0c;用户还可以从行项目导航到更多详细信息页面。 一个行项目包含多个数据点(data point)&#xff0c;这些数据点被分类到列中。 数据点是指一个…

Responsive Web测试

什么是Responsive Web设计 Ethan Marcotte曾于2010年5月25日在A List Apart发表了文章《Responsive Web Design》&#xff0c;首次提出了RWD(Responsive Web Design)的概念。其理念是&#xff0c;Web页面的设计能够自适应多种设备、平台和浏览器&#xff0c;同时减少缩放、平移…

CSS之Responsive设计的关键三步

下面我们就通过这篇教程&#xff0c;帮助大家从三个步骤来了解和学习“Responsive”设计 第一步&#xff1a;Meta标签 大家都知道&#xff0c;现在智能手机上浏览web页面会让页面适应屏幕的大小&#xff0c;显示在屏幕上。不过我们可以通过“meta”标签对他进行重置&#xff…

CSS之Responsive网页设计的三个特性

Responsive网页设计无疑是网页设计中的一个热门话题。某种程度上&#xff0c;他将是一个最受欢迎的网页设计概念&#xff0c;因为随着网站用户日渐多样化的访问方法&#xff0c;比如说“iPad”、“iPhone”、“Android移动设备”、“平板电脑”、“台式机”以及“ 笔记本”等不…

下载Django中文官方文档

点击?地址&#xff0c;2.2是版本号&#xff0c;后续更新需自行更改对应的版本 https://docs.djangoproject.com/zh-hans/2.2/ 点击下载 HTML&#xff0c;即可下载全中文官方文档 有部分没有中文翻译的页面&#xff0c;请自行安装谷歌翻译插件