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

流程是:创建虚拟机,配置好;搭建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 ,在格式化就成功了,我还以为我写错了呢。有什么问题都可以私聊我,大家一起学习进步

HADOOP 高可用搭建相关推荐

  1. hadoop 查看节点主备装填_基于ZooKeeper搭建Hadoop高可用集群

    作者博客:https://blog.csdn.net/m0_37809146/ 一.高可用简介 Hadoop 高可用 (High Availability) 分为 HDFS 高可用和 YARN 高可用 ...

  2. hadoop高可用hdfs搭建(三节点)

    hadoop高可用HDFS搭建(三节点) 一:准备工作 本次搭建使用的hadoop版本是2.6.5,使用虚拟机准备三个干净的节点服务器,我们从零开始搭建.规范下三个节点的主机名分别是node003,n ...

  3. HA:HADOOP高可用机制

    课程大纲(HADOOP高可用机制) HA运作机制 什么是HA HADOOP如何实现HA HDFS-HA详解 HA集群搭建 目标: 掌握分布式系统中HA机制的思想 掌握HADOOP内置HA的运作机制 掌 ...

  4. CLOUD 04:zookeeper,kafka,hadoop高可用

    zookeeper 安装 1 禁用防火墙和 selinux 2 设置 /etc/hosts ip 主机名对应关系 3 安装 openjdk zookeeper 角色,选举 leader 集群主节点 f ...

  5. SpringCloud注册中心高可用搭建

    转载自 SpringCloud注册中心高可用搭建 Spring Cloud的注册中心可以由Eureka.Consul.Zookeeper.ETCD等来实现,这里推荐使用Spring Cloud Eur ...

  6. spring boot配置ip_Spring Cloud 配置中心高可用搭建

    本文通过config server连接git仓库来实现配置中心,除了git还可以使用svn或者系统本地目录都行. 引入依赖 <dependencies><dependency> ...

  7. 大数据-HADOOP高可用、联邦机制- 学习笔记 -BH4

    HADOOP高可用.联邦机制 正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制 HA的运作机制 hadoop-HA集群运作机制介绍 所谓HA,即高可用(7*24小时不中断服务),实 ...

  8. Hadoop高可用集群下namenode格式化失败问题解决

    Hadoop高可用集群下namenode格式化失败问题解决 输入hdfs namenode -format报如下错误 解决方法: 1.在zookeeper目录下执行./bin/zkServer.sh ...

  9. Nginx反向代理,负载均衡,Redis集群 Twemproxy,redis session共享,keepalived高可用-搭建千万级网站系统

    Nginx反向代理,负载均衡,redis session共享,keepalived高可用-搭建千万级系统架构 1.安装Nginx 安装机器IP地址为: 192.168.91.129 (主) 192.1 ...

最新文章

  1. 射频篇(三) 模拟、射频器件学习(3) ——锁相环(PLL)
  2. 深入分析 Java 中的中文编码问题--转
  3. 浙江工商大学计算机学院调剂录取,浙江工商大学2017年硕士研究生调剂拟录取名单公布(持续更新)...
  4. win定时关机_怎么让电脑定时关机,有多种办法
  5. 不看绝对血亏!java字符串转json
  6. iOSUIImage变为NSData并进行压缩
  7. 从Bayes角度理解Deep learning
  8. LaTex ——P2 源文件的基本结构
  9. 无名接口.php,李无名
  10. 我在印尼工作的日子-基本环境
  11. [codeforces 760B]Frodo and pillows
  12. java获取异常信息
  13. bboss-elasticsearch--API
  14. matlab产生对称矩阵
  15. FFmpeg简单使用:音频编码 ---- pcm转aac
  16. android app实现轮播的图片视频播放video,仿淘宝商品详情的视频播放(android)
  17. 分享8个超好用的免费工具/软件/网站(一定有你要的)
  18. 企业和团队如何创建高效实用的知识管理体系
  19. 区块链需要学习哪些东西_学习区块链需要什么基础?小白必看
  20. 50个极好的bootstrap前端框架

热门文章

  1. 现在流行的html软件,目前流行的前端框架APP设计制作软件介绍
  2. 小程序物流追踪状态页面
  3. android适配和新文件及作用
  4. Ubuntu18使用FFMPEG实现QSV硬解
  5. 中存超为-企业级存储获得“云上贵州”大数据商业模式大赛第二名
  6. 网络简要入门篇对应配置代码
  7. Linux下pdf阅读器推荐
  8. Linux 简单应用
  9. 怎么禁止别人复制前端页面的图片和文字?
  10. 基于转子磁链定向的异步电机矢量控制仿真(二)