| HOSTNAME | IP | 操作系统 |

| — | — | — |

| masterndoe | 192.168.122.128 | Manjaro 20.1 |

| slavenode1 | 192.168.122.130 | CentOS 7.4 |

| slavenode2 | 192.168.122.131 | CentOS 7.4 |

1.2 环境准备


1.2.1 新增hadoop用户

已有

没有的话使用该命令

groupadd hadoop

useradd -g hadoop -m -d /home/hadoop -s /bin/bash hadoop

在三台机器

1.2.2 防火墙检查

此处我的代表已被关闭

如果没有,执行如下命令

systemctl disable firewalld # 禁用防火墙

systemctl stop firewalld #关闭防火墙

顺便还要检查所有机器是否能相互ping通

All right. 如果不能,要进行处理,需得注意IP配在同一网段。VM虚拟机可能会为你准备两块虚拟网卡。在三个系统里需要激活同一块

1.2.3 设置免秘登录

在任意一台机器上,这里我使用的masternode,收集其他机器的ssh公钥。

ssh-keygen -t rsa

执行完这条命令之后会在~/下产生文件夹.ssh

将三个节点的id_rsa.pub的内容复制到masternode下的authorized_keys文件中去(这个文件是要自己新建的),然后将其分发到slavenode1和slavenode2的相同目录下。

这个操作用于免密通信,方便等下的文件分发

弄完之后测试下能否进行免密登录

如图示中进行ssh来连接并且没有要求输入密码则视为成功,注意一定要进行六组两两测试。

如果发生了ssh,connort connection的错误,那么认为是ssh隧道坍塌。须在待连接端重启ssh服务。这个服务名在centos7下为sshd,在centos6下是ssh,在其他debian系和arch系Linux下一般为sshd

systemctl restart sshd

1.2.4 修改主机名

修改三台机器的/etc/hosts文件

加入如下内容。为了等下能在物理主机上访问HDFS web管理工具。还需要在本地进行该映射。不过在Windows下,要修改的是C:\Windows\System32\drivers\etc\hosts

这个文件一般来讲是不能直接编辑的,需要修改权限。

右键属性->安全->编辑

添加

把登录用户名写进去

添加写入权限

1.2.5 脚本准备

这是一个批处理脚本,转载自网友“子墨良言”

通过它可以方便地在一整个集群当中执行相同的命令并获得回显。

deploy.conf

masternode,all,namenode,zookeeper,resourcemanager,

slavenode1,all,slave,namenode,zookeeper,resourcemanager,

slavenode2,all,slave,datanode,zookeeper,

deploy.sh

#!/bin/bash

#set -x

if [ $# -lt 3 ]

then

echo “Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag”

echo “Usage: ./deply.sh srcFile(or Dir) descFile(or Dir) MachineTag confFile”

exit

fi

src=$1

dest=$2

tag=$3

if [ ‘a’$4’a’ == ‘aa’ ]

then

confFile=/home/hadoop/tools/deploy.conf

else

confFile=$4

fi

if [ -f $confFile ]

then

if [ -f $src ]

then

for server in cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'

do

scp $src server":"server":"server":"{dest}

done

elif [ -d $src ]

then

for server in cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'

do

scp -r $src server":"server":"server":"{dest}

done

else

echo “Error: No source file exist”

fi

else

echo “Error: Please assign config file or run deploy.sh command with deploy.conf in same directory”

fi

runRemoteCmd.sh

#set -x

if [ $# -lt 2 ]

then

echo “Usage: ./runRemoteCmd.sh Command MachineTag”

echo “Usage: ./runRemoteCmd.sh Command MachineTag confFile”

exit

fi

cmd=$1

tag=$2

if [ ‘a’$3’a’ == ‘aa’ ]

then

confFile=/home/hadoop/tools/deploy.conf

else

confFile=$3

fi

if [ -f $confFile ]

then

for server in cat $confFile|grep -v '^#'|grep ','$tag','|awk -F',' '{print $1}'

do

echo “$server********”

ssh $server “source /etc/profile; $cmd”

done

else

echo “Error: Please assign config file or run deploy.sh command with deploy.conf in same directory”

fi

新建文件夹将其存入,等下会用到,作用等下讲解。

这一步在masternode进行即可。后续所有文件从masternode进行分发。

1.2.6 JDK准备

解压JDK并配置环境变量

tar -zxvf jdk<-version> -C [目标路径]

vim /etc/profile

source /etc/profile

这一步要在所有节点进行。

1.3 安装Zookeeper


先解压

方式见1.2.6

1.3.1 修改配置文件

进入解压目录下的conf

zoo.cfg本来是没有的,将zoo_sample.cfg拷贝一份并命名为zoo.cfg。编辑

以上是该文件需要的全部内容。记得一定要编辑第一二行是zookeeper的日志和数据目录,可

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

以自定义,但一定要自己建立相应的目录并且将其所有者修改为hadoop用户,命令如下

chown hadoop:hadoop -R [目录]

最后三行是节点的myid及主机名及通信端口。

其他参数关系到Hive的正常启动,如果只装hadoop,可以不用配置。

1.3.2 分发

scp -r [zookerper目录] hadoop@slavenode1:[相同路径]

一定要分发到和master相同的路径,这样便于统一调度。

1.3.3 配置环境变量

加入这些并使环境变量生效,环境变量如何生效

1.3.4 配置ID

三节点同时进行,在数据目录下新建名为myid的文件

在masternode下的该文件中写入"1"

slavenode1为“2”

slavenode2为“3”

如图,只

1.3.4 启动并查看状态

在masternode上启动三节点的zookeeper服务

这时候需要用到runRemoteCmd.sh文件了,记得先给它一个执行权限

chmod 777 runRemoteCmd.sh

执行

runRemoteCmd.sh “/home/hadoop/app/zookeeper/bin/zkServer.sh start” zookeeper

三节点的服务已全部开启,但它不会报错,所以我们要自己验证下服务的状态

runRemoteCmd.sh “/home/hadoop/app/zookeeper/bin/zkServer.sh status” zookeeper

显示masternode、slavenode2为跟随者,slavenode1为领导者。代表成功,领导者只有一个,不一定是slavenode1,它是被选举出来的。所以如果不一样不代表失败。如果失败了,则不会显示mode。

1.3.5 什么是JPS

jps是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。我们使用一下

我们发现每个节点上都出先了JPS进程和QuorumPeerMain。

JPS是这条命令本身拉起的进程,QuorumPeerMain则是zookeeper拉起的,那么QuorumPeerMain是什么呢?

根据官方文档来看,是个入口类。用来加载myid

二、Hadoop三节点搭建

============================================================================

2.1 环境准备


还是需要JDK,这个在1.2.6中已经完成。

2.2 安装Hadoop


2.2.1 修改配置文件

首先还是在主机上进行,首先进入到安装目录下的etc/hadoop目录下去。编辑hadoop-env.sh文件

JAVA_HOME参数本来不这样,你改成JDK目录即可。等下分发的时候如果不同的机器JDK目录不一致,则自己还是要做相应

然后要编辑相同目录下的core.site.xml文件

用这一段替换原有的configuration即可。除了hadoop.tmp.dir需要自定义其他可以不用管。这个是hadoop临时目录,上传到hdfs的文件需要在这里暂存,配置完后还得手动建这么个目录然后更改拥有者为hadoop,方式见1.3.1

然后修改hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

dfs.replication

3

dfs.permissions

false

dfs.permissions.enabled

false

dfs.nameservices

cluster1

dfs.ha.namenodes.cluster1

masternode,slavenode1

dfs.namenode.rpc-address.cluster1.masternode

masternode:9000

dfs.namenode.http-address.cluster1.masternode

masternode:50070

dfs.namenode.rpc-address.cluster1.slavenode1

slavenode1:9000

dfs.namenode.http-address.cluster1.slavenode1

slavenode1:50070

dfs.ha.automatic-failover.enabled

true

dfs.namenode.shared.edits.dir

qjournal://masternode:8485;slavenode1:8485;slavenode2:8485/cluster1

dfs.client.failover.proxy.provider.cluster1

org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

dfs.journalnode.edits.dir

/home/hadoop/data/journaldata/jn

dfs.ha.fencing.methods

shell(/bin/true)

dfs.ha.fencing.ssh.private-key-files

/home/hadoop/.ssh/id_rsa

dfs.ha.fencing.ssh.connect-timeout

10000

dfs.namenode.handler.count

100

将这段覆盖进去即可

编辑slaves文件

把主机名写入即可。

编辑mapred-site.xml

<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

mapreduce.framework.name

yarn

将这段覆盖进去即可,这表示等下要调用yarn框架。这个配置限于hadoop2.x及以上版本,因为1.x是没有yarn框架的。yarn的作用在于进行mapreduce运行时的资源调度。而1.x的资源调度是由mapreduce本身来进行的。

编辑yarn-site.xml文件

<?xml version="1.0"?>

yarn.resourcemanager.connect.retry-interval.ms

2000

yarn.resourcemanager.ha.enabled

true

yarn.resourcemanager.ha.automatic-failover.enabled

true

yarn.resourcemanager.ha.automatic-failover.embedded

true

yarn.resourcemanager.cluster-id

yarn-rm-cluster

yarn.resourcemanager.ha.rm-ids

rm1,rm2

yarn.resourcemanager.hostname.rm1

masternode

yarn.resourcemanager.hostname.rm2

slavenode1

yarn.resourcemanager.recovery.enabled

true

yarn.resourcemanager.zk.state-store.address

masternode:2181,slavenode1:2181,slavenode2:2181

yarn.resourcemanager.zk-address

masternode:2181,slavenode1:2181,slavenode2:2181

yarn.resourcemanager.address.rm1

masternode:8032

yarn.resourcemanager.scheduler.address.rm1

masternode:8034

yarn.resourcemanager.webapp.address.rm1

masternode:8088

yarn.resourcemanager.address.rm2

slavenode1:8032

yarn.resourcemanager.scheduler.address.rm2

slavenode1:8034

yarn.resourcemanager.webapp.address.rm2

slavenode1:8088

yarn.nodemanager.aux-services

mapreduce_shuffle

yarn.nodemanager.aux-services.mapreduce_shuffle.class

org.apache.hadoop.mapred.ShuffleHandler

将这段覆盖进去即可。这是相关资源调度信息。

2.2.2 分发

见1.3.2的方式

2.2.3 启动journalnode

runRemoteCmd.sh “/home/hadoop/app/hadoop/sbin/hadoop-daemon.sh start journalnode” all

用于namenade之间的数据共享,它从属于zookeeper。所有namenode可以不是只有一个,如果你配置的只有一个,那么不用管这个,如果有,需要做数据共享。我这版是配置了两个的。

2.2.4 格式化

Hadoop分布式高可用HA集群搭建笔记(含Hive之构建),java高级架构师视频相关推荐

  1. Hadoop分布式高可用HA集群搭建笔记(含Hive之构建),java类加载过程面试题

    []( )1.2.4 修改主机名 修改三台机器的/etc/hosts文件 加入如下内容.为了等下能在物理主机上访问HDFS web管理工具.还需要在本地进行该映射.不过在Windows下,要修改的是C ...

  2. 【有料】4 种高可用 RocketMQ 集群搭建方案!

    背景 笔者所在的业务线,最初化分为三个服务,由于业务初期业务复杂度相对简单,三个业务服务都能很好的独立完成业务功能. 随着产品迭代,业务功能越来越多后慢慢也要面对高并发.业务解耦.分布式事务等问题,所 ...

  3. corosync+pacemaker实现高可用(HA)集群(二)

    部署方案二(推荐):corosync+pacemaker 利用ansible自动安装corosync和pacemaker 注:关于ansible的具体使用可参见"ansible实现自动化自动 ...

  4. (七)centos7案例实战——nginx+keepalived高可用服务器集群搭建

    前言 本节内容延续之前的内容,往期博客已经介绍了如何安装nginx服务器以及将nginx安装成为一个系统服务,本节内容是在前期内容的基础上,搭建一个高可用的nginx服务器集群,主要使用Keepali ...

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

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

  6. NameNode自动HA(高可用) 集群搭建和启动

    1.规划 2. ssh时不提示信息配置 后续需要编写HDFS HA集群的启动和关闭的Shell脚本,在Shell脚本中会涉及到 ssh nodeX 命令,将会出现提示fingerprint信息,比较烦 ...

  7. springcloud高可用服务器集群搭建

    服务器健壮是非常重要的, 但是有很多种原因可能会导致服务注册中心宕机,如果宕机就会有一些灾难性的问题出现,所以保证服务注册中心处于活着运行状态显得尤为重要!!! 我们必须保证,哪怕某些服务器宕机了我们 ...

  8. rancher2.0安装mysql_高可用rancher集群搭建

    我在使用rancher过程中遇到的问题: 一开始是用的单机的环境,没有设置启动内存,而且mysql使用的是内嵌的数据库.Rancher Server在运行了几个月后变的极慢,甚至不能再添加和启动.删除 ...

  9. 基于虚拟机高可用redis集群搭建

    redis集群搭建 介绍 刚开始学习 redis集群搭建可能会被繁琐的配置劝退,但重复配置是我们敲代码路上最平坦的一条路了,希望晨雨和大家以后都有足够的耐心,学好技术,装好B格.本文基于redis-5 ...

最新文章

  1. 下轮牛市高峰可能在2020年,以太坊是关键
  2. python爬取天眼查存入excel表格_爬虫案例1——爬取新乡一中官网2018届高考录取名单...
  3. wpf ui框架_RapidCAX 开源UI框架
  4. HDU1253 胜利大逃亡
  5. JS Bin Tips and Bits • About
  6. 笨办法学 Python · 续 练习 0:起步
  7. mac中 安装mysql无法启动_Mac 下安装MySQL(dmg方式),无法启动
  8. 软件工程(五)软件分析和软件设计
  9. vue综合实例——音乐播放器(悦听player)
  10. Auto CAD 批量转PDF、批量打印使用方法
  11. 【数学】GPS经纬度坐标转换
  12. 苏宁大数据怎么运营_苏宁智慧门店是什么?智慧门店是如何运作的?
  13. Java基础案例教程———【任务4-2】模拟物流快递系统
  14. Mac软件打开时闪退怎么办?苹果电脑软件崩溃解决办法
  15. 使用Future取消超时任务
  16. OBS Studio安装教程以及录制等详细配置
  17. obs可以装手机吗?_玻璃杯可以装开水吗 装开水会爆炸吗?现在了解还不晚。
  18. 多源数据 单源数据是什么意思
  19. 【每日面试】2021CVTE后端Java二面
  20. 朋友圈广告投放优势及广告投放案例分享

热门文章

  1. 【中学】找出最大素数
  2. 【STM32F429的DSP教程】第21章 DSP矩阵运算-加法,减法和逆矩阵
  3. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第九讲:块元素、行内元素、标准流、盒子模型
  4. ubuntu16.04 搜狗输入法/谷歌拼音输入法
  5. 可以复用的数据中台架构与建设实践 | 数据中台公开课
  6. pro unity xl编程手册_UnityProXL编程入门指南资料
  7. 阿尔卡特交换机配置_阿尔卡特交换机常用命令
  8. 掌握这些图片无损压缩工具,轻松搞定图片压缩
  9. 产品经理如何破壳成长?
  10. 图片转文字 ocr 汉王